Skip to content

A listed solution set is filtered by a decided condition - #1443

Merged
Rafael-SOWNet merged 2 commits into
masterfrom
conjunction-filters
Sep 21, 2026
Merged

Rafael-SOWNet merged 2 commits into
masterfrom
conjunction-filters

Conversation

@Rafael-SOWNet

Copy link
Copy Markdown
Member

Measuring the reference's injectivity rows for item 6 of #1409: forall u in RR : forall v in RR : 2 u + 1 = 2 v + 1 implies u = v stayed written. The inner statement's negation, 2 v + 1 = 2 u + 1 and not v = u, was solved to the conjunction as written — #1036 taught the solver not to intersect a listed set with a condition a search had left open (1 is a root of x^6 + x y + 1 = 0 only when y is −2), and the rule stopped at the shape (a FiniteSet beside a ConditionalSet) rather than at what it was for.

Now the two are told apart: a member of the listed set at which the condition is decided is kept where it is True and dropped where False, and the conjunction stays written the moment one member is undecided — #1036's case is as it was (AnUndecidedConditionLeavesTheConjunctionWritten). Decided by evaluation, and by simplification where evaluation leaves it open, since the solution of 2 v + 1 = 2 u + 1 arrives as -(1 - 2u - 1)/2 and not that = u is the simplifier's to settle.

was now
x^2 = 4 and not x = 2 { x : x^2 = 4 and not x = 2 } { -2 }
(x - 1)(x - 2) = 0 and not x = 1 and not x = 2 as written {}
forall u in RR : forall v in RR : 2 u + 1 = 2 v + 1 implies u = v as written True
forall u in RR : forall v in RR : u^2 = v^2 implies u = v False (a witness) False
x^6 + x y + 1 = 0 and x - 1 = 0 (#1036) as written as written

The cubic's injectivity stays open: the solutions of v^3 = u^3 come as (u^3)^(1/3) and its two rotations, and (u^3)^(1/3) = u is not an identity on the reals in principal roots, so nothing is claimed.

ConjunctionFilterTest, 6 rows. BREAKING-CHANGES.md rows measured on a v2.5.0 build. Full suite 12218 passed, 0 failed; benchmark gate PASSED (the Solve benchmarks within 0.1% of the baseline).

Part of #1409.

🤖 Generated with Claude Code

https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura

Rafael-SOWNet and others added 2 commits September 21, 2026 06:44
"x^2 = 4 and not x = 2".Solve("x") was the conjunction left as written: #1036 taught the
solver not to intersect a listed set with a condition a search had left open, since 1 is a
root of x^6 + x y + 1 = 0 only when y is -2, and the rule stopped at the shape. The two are
told apart now: a member at which the condition is decided is kept where it is True and
dropped where it is False, and the conjunction stays written the moment one member is
undecided, so #1036's case is as it was. Decided by evaluation, and by simplification where
evaluation leaves it open -- the solution of 2 v + 1 = 2 u + 1 arrives as -(1 - 2u - 1)/2,
and `not that = u` is the simplifier's -- so that the injectivity of a linear map,
forall u in RR : forall v in RR : 2 u + 1 = 2 v + 1 implies u = v, is True: the reference's
Def 7.4.6, item 6 of #1409.

#1409
#1036

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012sonx8iAspMiwRwokT1Ura
@Rafael-SOWNet
Rafael-SOWNet merged commit 58e8162 into master Sep 21, 2026
31 checks passed
@Rafael-SOWNet
Rafael-SOWNet deleted the conjunction-filters branch September 21, 2026 07:26
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