[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PVS-Help] Ask for help on a proof
Hi there,
I am new to PVS. I am working on an assignment about using PVS to prove a theorem.
Equivalence relations satisfy the following axioms: reflexive, symmetric and transitive. Here equivalence relations are denoted by ≌.
The theorem is
forall x and y, ¬x≌y → (forall z, x≌z→¬y≌z )
I wrote the specification as follows:
relations[t: TYPE] : THEORY
BEGIN
x, y, z: VAR t
R : VAR PRED[[t,t]]
reflexive?(R): bool = (FORALL x: R(x, x))
symmetric?(R): bool = (FORALL x, y:R(x, y) IMPLIES R(y, x))
transitive?(R): bool =
(FORALL x, y, z: R(x, y) AND R(y, z) IMPLIES R(x, z))
equivalent_relation?(R): bool =
reflexive?(R) AND symmetric?(R) AND transitive?(R)
er: (equivalent_relation?[[t,t]])
TODO: CONJECTURE ( FORALL (x: t), (y: t): NOT er(x, y) IMPLIES ( FORALL (z: t): er(x, z) IMPLIES er(y, z) ) )
END relations
After using (grind) I got
TODO :
|-------
{1} (FORALL (x: t), (y: t):
NOT er(x, y) IMPLIES
(FORALL (z: t): er(x, z) IMPLIES NOT er(y, z)))
Rule? (grind)
Trying repeated skolemization, instantiation, and if-lifting,
this simplifies to:
TODO :
{-1} er(x!1, z!1)
{-2} er(y!1, z!1)
|-------
{1} er(x!1, y!1)
Rule?
I should use the symmetric axiom to continue the proof but I do not know how:
Rule? (use "symmetric?")
Using lemma symmetric?,
this simplifies to:
TODO :
{-1} symmetric? = (LAMBDA (R): (FORALL x, y: R(x, y) IMPLIES R(y, x)))
[-2] er(x!1, z!1)
[-3] er(y!1, z!1)
|-------
[1] er(x!1, y!1)
Is it correct to use a lemma? If so, what to do next?
Many thanks.