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
Because the SBV multi-SAT procedure doesn't understand the semantics of a pair of integers as a rational number, it will enumerate different representatives of the same equivalence class of pairs of integers when asked a multi-SAT query involving rational numbers. These are normalized before being presented to the user, and it appears the solver is repeatedly returning the same assignment.
Cryptol> :set satNum=10
Cryptol> :set prover=sbv-z3
Cryptol> :sat (\x -> x == ratio 1 2)
Satisfiable
(\x -> x == ratio 1 2) (ratio 1 2) = True
(\x -> x == ratio 1 2) (ratio 1 2) = True
(\x -> x == ratio 1 2) (ratio 1 2) = True
(\x -> x == ratio 1 2) (ratio 1 2) = True
(\x -> x == ratio 1 2) (ratio 1 2) = True
(\x -> x == ratio 1 2) (ratio 1 2) = True
(\x -> x == ratio 1 2) (ratio 1 2) = True
(\x -> x == ratio 1 2) (ratio 1 2) = True
(\x -> x == ratio 1 2) (ratio 1 2) = True
(\x -> x == ratio 1 2) (ratio 1 2) = True
(Total Elapsed Time: 0.025s, using "Z3")
Cryptol> :set prover=w4-z3
Cryptol> :sat (\x -> x == ratio 1 2)
Satisfiable
(\x -> x == ratio 1 2) (ratio 1 2) = True
(Total Elapsed Time: 0.036s, using "z3")
The What4 backend controls its own loop for finding multiple assignments and computes its own blocking predicates using the equivalence relation for rationals, and thus will avoid other representatives of the same class. We should do the same for SBV.
The text was updated successfully, but these errors were encountered:
Because the SBV multi-SAT procedure doesn't understand the semantics of a pair of integers as a rational number, it will enumerate different representatives of the same equivalence class of pairs of integers when asked a multi-SAT query involving rational numbers. These are normalized before being presented to the user, and it appears the solver is repeatedly returning the same assignment.
The What4 backend controls its own loop for finding multiple assignments and computes its own blocking predicates using the equivalence relation for rationals, and thus will avoid other representatives of the same class. We should do the same for SBV.
The text was updated successfully, but these errors were encountered: