[YICES-HELP] quantification basics?

Mark R. Tuttle tuttle at acm.org
Wed Apr 6 11:27:31 PDT 2011


Can anyone help me understand why YICES says "unknown" instead of
"unsat" for the following example?

(define-type elem)
(define-type set)
(define mem::(-> elem set bool))

(define S::set)
(define T::set)

(define equal_axiom::bool
   (forall (a::set b::set)
      (=> (not (= a b))
          (exists (x::elem) (not (= (mem x a) (mem x b)))))))

(define equal_claim::bool
      (=> (forall (x::elem) (= (mem x S) (mem x T)))
	  (= S T)))

(assert equal_axiom)
(assert (not equal_claim))
(check)

I was hoping that Skolemization and pattern matching would let YICES
simulate the reasoning

(forall (x::elem) (= (mem x S) (mem x T)))
(not (= S T))

then

(forall (x::elem) (= (mem x S) (mem x T)))
(exists (x::elem) (not (= (mem x S) (mem x T))))

then

(forall (x::elem) (= (mem x S) (mem x T)))
(not (= (mem SKL S) (mem SKL T)))

then

(= (mem SKL S) (mem SKL T))
(not (= (mem SKL S) (mem SKL T)))

then

false

I understand that quantification makes things only semi-decidable, I'm
just looking for a slightly deeper understanding of what YICES can do
with quantification.  I'm running 1.0.29.

Thanks
Mark Tuttle, tuttle at acm.org



More information about the YICES-HELP mailing list