Reputation: 559
Small example is prepared below:
(declare-datatypes () ((Type1 a b c d e g h i f k l m n o p q r s t u v w z)))
(declare-const x Type1)
(declare-const y Type1)
(assert (and (= y x) (or (and (not (= x g)) (not (= x a))) (and (or (not (= x g)) (not (= x q))) (not (= x a))))))
(apply ctx-simplify)
The output is:
(goals
(goal
(= y x)
(or (not and) (not (= x a)))
:precision precise :depth 1)
)
What (or (not and) (not (= x a)))
means? Bug?
Thank you.
Upvotes: 0
Views: 127
Reputation: 8359
Thanks for pointing this out. I agree it looks strange with the "and" taking no arguments in the printout. The context simplifier creates a conjunction with 0 arguments. It gets printed as simply "and". So the expression returned by ctx-simplify is equivalent to (not (= x a)). I will update the ctx-simplify tactic to return expressions without the empty conjunction.
Upvotes: 1