;;Proof Obligations of Module in Harvey/SMT Language
(benchmark switch1Invariant0
:logic UNKNOWN
:extrafuns ( (normal Int )
(reverse Int )
(void Int )
(actual_pos Int ))
:extrapreds ( (POSITION Int ))
:extramacros ((in (lambda (?x ELEMENT) (?p (ELEMENT boolean)) . (?p ?x)))
(emptyset (lambda (?v ELEMENT) . false))
(omega (lambda (?x ELEMENT) . true))
(singleton (lambda (?x ELEMENT) . (lambda (?y ELEMENT) . (= ?x ?y))))
(intersection (lambda (?p (ELEMENT boolean)) (?q (ELEMENT boolean)) .
(lambda (?x ELEMENT) . (and (?p ?x) (?q ?x)))))
(union (lambda (?p (ELEMENT boolean)) (?q (ELEMENT boolean)) .
(lambda (?x ELEMENT) . (or (?p ?x) (?q ?x)))))
(difference (lambda (?p (ELEMENT boolean)) (?q (ELEMENT boolean)) .
(lambda (?x ELEMENT) .
(and (?p ?x) (not (?q ?x))))))
(symmetric_difference
(lambda (?p (ELEMENT boolean)) (?q (ELEMENT boolean)) .
(lambda (?x ELEMENT) .
(or (and (?p ?x) (not (?q ?x)))
(and (?q ?x) (not (?p ?x)))))))
(subset (lambda (?p (ELEMENT boolean)) (?q (ELEMENT boolean)) .
(forall (?x ELEMENT) . (implies (?p ?x) (?q ?x))))))
:assumption (and (in normal POSITION)(in reverse POSITION)(in void POSITION)(distinct normal reverse void )(forall (e1 Int)(implies (in e1 POSITION)(or (= e1 normal)(= e1 reverse)(= e1 void)) ) ) )
:assumption (and (not (= normal reverse)) (not (= normal void)) (not (= reverse void)))
:assumption (in actual_pos POSITION)
;;INVARIANT
:formula (not
(implies ((and (not (= normal reverse)) (not (= normal void)) (not (= reverse void)))) (exists actual_pos(in actual_pos POSITION)))
)
)