You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The following file reliably returns unsat in the current HEAD. Removing the line to enable production of unsat cores makes this reliably return unknown (incomplete quantifiers). Not sure if this is expected behavior or not.
Also I noticed that trying to disable produce-unsat-cores (e.g. by uncommenting the 2nd line) is a no-op, so it will return unsat in this example and we can get an unsat core out. Probably a warning (or even error) would be useful here-- if that makes sense to you I could take a stab at writing a patch.
(set-option:produce-unsat-corestrue)
; (set-option :produce-unsat-cores false)
(set-option :smt.mbqi false)
(declare-sortT)
(declare-datatypes () ((F (Z))))
(declare-funM () F)
(declare-funV (T) Bool)
(declare-funH (F T T) Bool)
(declare-funA (T T) T)
(declare-funT () T)
(declare-funS (T T) T)
(declare-funFS () T)
(push)
(declare-funF (T T) T)
(declare-funF (T T T T) T)
(declare-funS (T T T T) T)
(assert (forall ((x T)) (= (F T T) (A (A FS T) x))))
(assert (forall ((@ T) (x T) (x2 T) (@x T)) (! (and (implies (and (V (F x x x x2))) (V (S x2 x2 x2 x2)))) :pattern ((S @ x x2 @x)) :qid equation_FStar.PCM.frame_preserving)))
(assert (forall ((x T) (x2 T)) (= (S T T) (F x2 x x2 T))))
(assert (forall ((x T) (x2 T)) (= (V (S x x x2 x)) (exists ((@ T)) (= x2 (F @ x @ x2))))))
(declare-funTm (T T T) T)
(assert (forall ((x T) (x2 T)) (iff (H M x (Tm x2 x2 x)) (and (V (A x2 (A (F x2 x2) x2)))))))
(declare-funm (T T T) T)
(assert (forall ((x T) (x2 T)) (iff (and (V (S x x))) (H M x2 (m x2 x2 x)))))
(assert (! (exists ((x T) (x2 T)) (not (implies true (and (implies (and (H M x2 (m x2 x2 T))) (or (V (S x2 x2 T x2)))) (implies (and (V (S x2 x2)) (V (S x2 x)) (H M x2 (Tm T T x2))) (or (V (A T (A (A (A FS T) (S x2 x2)) T))))))))) :named @query))
(check-sat)
(get-info:reason-unknown)
The text was updated successfully, but these errors were encountered:
mtzguido
changed the title
produce-unsat-cores seems to affect convergence, even if disabledproduce-unsat-cores affects convergence
Jan 29, 2025
The following file reliably returns
unsat
in the current HEAD. Removing the line to enable production of unsat cores makes this reliably returnunknown (incomplete quantifiers)
. Not sure if this is expected behavior or not.Also I noticed that trying to disable produce-unsat-cores (e.g. by uncommenting the 2nd line) is a no-op, so it will return unsat in this example and we can get an unsat core out. Probably a warning (or even error) would be useful here-- if that makes sense to you I could take a stab at writing a patch.
The text was updated successfully, but these errors were encountered: