-
Notifications
You must be signed in to change notification settings - Fork 35
Open
Labels
adtAlgebraic data typesAlgebraic data typesbacklogcompletenessThis issue is about completeness of theoriesThis issue is about completeness of theories
Description
Consider the input file:
(set-logic ALL)
(declare-datatype t ((box (unbox Int))))
(declare-const v t)
(assert (forall ((u Int)) (distinct v (box u))))
(check-sat)Alt-Ergo answers unknown on next. We expect that Alt-Ergo solves this problem as follows:
- Alt-Ergo realizes that
tis of the form(box u)for some integer u. - One matches
(box u)with the trigger of the axiom. - One encounters a contradiction after asserting
(distinct v (box u)).
This reasoning fails both on next and on PR #1095 for slightly different reasons.
- On next, we never produce the equation
v = (box (unbox v))becausevis a variable. These equations are only added into the context ofX.makefor record construction terms. - On Remove the
Recordtheory #1095, we never sendvto CC(X) because the only assertion involvingvis under a quantifier. In particular,Adt_relcannot discover that the domain ofvhas to be singleton.
I tried to fix it with this patch 73740e6. I got +26-22 (after correction) on ae-format but the solver was slightly slower.
We don't expect completeness for the Record theory in the presence of quantifiers, but it is interesting to know why this test fails.
Metadata
Metadata
Assignees
Labels
adtAlgebraic data typesAlgebraic data typesbacklogcompletenessThis issue is about completeness of theoriesThis issue is about completeness of theories