feat(axiom5): Angle bisector (bisect --l1 --l2 toward .p) #3

Merged
toph merged 7 commits from v0.4-axiom5 into main 2026-06-29 11:32:15 +00:00
Owner

Adds classic axiom 5 — the fold placing one line onto another (the angle bisector) — as bisect --l1 --l2 toward .p. Two intersecting lines have two bisectors; the optional toward .p selector picks the one whose angular sector contains .p; two parallel lines give their single midline.

This is the first axiom to leave ℚ, so the geometry core is migrated from Q to the exact constructible reals (Num, v0.3) — axioms 1–4 stay rational on the fast-path (behaviour unchanged, regression-gated), and bisectors carry exact coordinates (e.g. slope √2−1).

Errors: identical lines; intersecting without toward; .p on a fold line. 52 tests green; version 0.3.0-dev. Spec §4.5; the Num decision is ADR 0010.


Examples this PR adds (rendered with tools/fold2svg.mjs):

bisect-a.bel vs bisect-b.bel — same two midlines (--v/--h), toward .p picks a different bisector:
bisect-a
bisect-b

bisect-parallel.bel — parallel inputs → their single midline (no toward):
bisect-parallel

bisect-intermediate.beltoward .int (a constructed point at (1/4,0)) selects the side only; the a–c bisector does not pass through .int:
bisect-intermediate

Adds classic axiom 5 — the fold placing one line onto another (the angle bisector) — as `bisect --l1 --l2 toward .p`. Two intersecting lines have two bisectors; the optional `toward .p` selector picks the one whose angular sector contains `.p`; two parallel lines give their single midline. This is the first axiom to leave ℚ, so the geometry core is migrated from `Q` to the exact constructible reals (`Num`, v0.3) — axioms 1–4 stay rational on the fast-path (behaviour unchanged, regression-gated), and bisectors carry exact `√` coordinates (e.g. slope `√2−1`). Errors: identical lines; intersecting without `toward`; `.p` on a fold line. 52 tests green; version `0.3.0-dev`. Spec §4.5; the `Num` decision is ADR 0010. --- **Examples this PR adds** (rendered with `tools/fold2svg.mjs`): `bisect-a.bel` vs `bisect-b.bel` — same two midlines (`--v`/`--h`), `toward .p` picks a different bisector: ![bisect-a](https://git.toph.so/attachments/ddde411a-4b0e-4ef4-ae47-cbd096bd5f78) ![bisect-b](https://git.toph.so/attachments/ee28b9ae-22ee-4558-848d-78dc64a761e0) `bisect-parallel.bel` — parallel inputs → their single midline (no `toward`): ![bisect-parallel](https://git.toph.so/attachments/bf6c62ef-71c3-4f3f-bdc4-c8e9375e9062) `bisect-intermediate.bel` — `toward .int` (a constructed point at (1/4,0)) selects the **side only**; the a–c bisector does not pass through `.int`: ![bisect-intermediate](https://git.toph.so/attachments/20e484a3-e987-4f53-b326-4a94f1e000b7)
toph force-pushed v0.4-axiom5 from 9cb2223b80 to 51bf3951c2 2026-06-29 10:10:59 +00:00 Compare
toph force-pushed v0.4-axiom5 from 40eea18148 to 5653ec6595 2026-06-29 11:25:56 +00:00 Compare
toph merged commit 592b4fc7e6 into main 2026-06-29 11:32:15 +00:00
toph deleted branch v0.4-axiom5 2026-06-29 11:33:36 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
toph/beloch!3
No description provided.