Skip to content

Nested quantifiers are decided through listed witnesses and witness terms - #1564

Merged
Rafael-SOWNet merged 1 commit into
masterfrom
quantifier-elimination
Sep 29, 2026
Merged

Rafael-SOWNet merged 1 commit into
masterfrom
quantifier-elimination

Conversation

@Rafael-SOWNet

Copy link
Copy Markdown
Member

Two of Sullivan and Mackey's nested-quantifier problems are decided, through BySolving as #1559 left it, and one more route.

Prob 4.11.6: forall x in ZZ : forall y in ZZ : exists z in ZZ* : x - y = z or y - x = z is True.

  • The solver lists the witnesses, x - y and y - x. Where the quantifiers around the statement make each witness a whole number, exists z in S : P becomes the statement that one of them is in S.
  • QuantifierFacts.MembershipAsComparison reads each membership: s in ZZ* is s >= 0 and s in ZZ+ is s >= 1. A quantifier over the whole numbers, and a membership in them, are now among the nodes whose body is decided with the facts in scope.
  • The quantifier over y then asks for x - y < 0 and y - x < 0, which needs two rays with symbolic ends to meet. (a; +oo) /\ (-oo; b) is (a; b), and (x; +oo) /\ (-oo; x) is empty. Both were left as written.

Prob 4.11.5: exists x in RR : forall y in RR : x^2 - y^2 >= 0 is False.

  • exists x : forall y : P is false where one of a few fixed terms in x fails P at every x, and forall x : exists y : P is true where one holds P at every x.
  • The terms are polynomials with whole coefficients. Each is in the inner set for every member of the outer one, so a term that works is a proof. Here y = x^2 + 1 fails everywhere.
  • Where no term works, the statement is left as it was. The two nested cube statements in LeftAsWrittenWhereNothingDecidesIt still are.

Also: a comparison of two polynomials that differ by a number is decided at every member. x^2 + 1 > x^2 is 1 > 0, which is what the witness term x^2 + 1 asks. exists y in RR : forall x in RR : y = x^3 moves out of LeftAsWrittenWhereNothingDecidesIt: it is False now, since whatever y is, the cube of x = y^2 + 1 is not y.

Suite: 371 tests pass on net10.0 in the quantifier, interval, declined-statement, induction, surjectivity and inequality classes, and every target framework builds. The whole suite ran on this branch merged with the other open #1409 branches: 13,422 passed, 0 failed. Gate on that merge: passed, with allocation as the baseline says on all 19 gated benchmarks.

BREAKING-CHANGES.md has the entry, beside the one for threshold sets.

Part of #1409.

🤖 Generated with Claude Code

https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura

…erms

exists z in S : P, where the solver lists the z at which P holds and the
quantifiers around it make each a whole number, is the statement that
one of them is in S, a comparison in ZZ* and ZZ+: Sullivan and Mackey's
Prob 4.11.6 is True so. Two rays with symbolic ends meet, so that
x < y and y < x is solved to nothing. And exists x : forall y : P is False
where one of a few fixed terms in x fails P at every x, forall x : exists
y : P True where one holds P at every x: Prob 4.11.5 fails at
y = x^2 + 1.

Part of #1409.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura
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.

1 participant