Skip to content

Guard original integer variables during ALASCA conversion - #1031

Open
shalashaska117 wants to merge 1 commit into
vprover:masterfrom
shalashaska117:fix-issue-940
Open

shalashaska117 wants to merge 1 commit into
vprover:masterfrom
shalashaska117:fix-issue-940

Conversation

@shalashaska117

Copy link
Copy Markdown
Contributor

The integer-to-real conversion guards normalized literal arguments. For 2*k != a, requiring 2*k-a to be integral admits non-integral values of k, which leads to the false all-even theorem in #940.

Collect variable sorts before normalization and add one integrality guard per original integer variable. This also covers variables inside uninterpreted predicates and leaves real variables unrestricted. Existing function-integrality axioms are unchanged.

Closes #940.

Checks

  • Debug and Release builds; all 105 CTest suites and Release checks/sanity pass.
  • Five native regressions cover scaled equality, predicate arguments, repeated variables, mixed integer/real sorts and ground arithmetic. The original equality and predicate tests fail before the fix; Valgrind reports no access errors in the five tests.
  • 36 CLI controls across both builds and VIRAS off/on produce no wrong answers. The reported all-even conjecture now returns GaveUp. Several controls remain inconclusive, including the true parity conjecture; this change does not make integer conversion complete.

Collect variable sorts before normalizing the clause and add one
integrality guard for each integer variable. Guarding a normalized
expression such as 2*x does not restrict x to integer values.

Cover scaled equality, predicate arguments, repeated variables, mixed
sorts and ground arithmetic with native regressions.

Closes vprover#940.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Soundness bug: integer conversion with VIRAS reports “every integer is even” as Theorem

1 participant