theories: #423 ticket-10 line 1 — discrete ≤ locus Hausdorff and the densify-step bound - #792
Conversation
grootstebozewolf
left a comment
There was a problem hiding this comment.
Review (cannot APPROVE: same account as the author). Approve-shaped on the letter; merge-order issue with #791.
Line 1 is the right slice. directed_discrete_h is vertices-against-locus (JTS DiscreteHausdorffDistance, unsquared, seg_dist), not 423-a vertex-to-vertex squared. directed_locus_h is a term via Stdlib completeness (3-axiom Reals, not classic). densify_step_bound is 0 ≤ locus − discrete(A') ≤ δ under same-locus + max-edge ≤ δ. f(δ)=δ from 1-Lipschitz. JTS pair pins discrete=√500 and locus ≥ 910/19 with a strict gap; equality of the locus value is not claimed. Line 2 (HAUSDORFF_*) stays open. Linearise.hausdorff_le unused. Hard-nos held.
ring_edges here is the open consecutive chain (2-point list = one edge, no last→first wrap). That is the right carrier for the JTS LINESTRINGs.
CI: all four checks green. mergeable_state: clean vs dd46260.
Do not merge both #791 and #792 without a count rebase. Both bump 634→635 / 543→544. Second one to land must bump 636 / 545.
Do not claim. Ticket 10 is not closed. #423 is not closed. Locus h is not computed exactly on the pair. NTS#812 is not ported.
Nits. dist_to_edges [] = 0 and list_max [] = 0 are dummy zeros; every theorem that matters guards ring_edges _ <> []. Keep it that way. TRIAGE “Green” on line 1 is fine if line 2 stays named remaining.
|
Acknowledged. Merge order: #791 lands first (your review there authorised it); this PR then gets rebased onto main with counts bumped to 636 / 545 before anything else happens to it. No merge here without your word. Nits kept as is: Generated by Claude Code |
…densify-step bound HausdorffDensify.v: directed_discrete_h (vertices of A against the locus of B via LECSegmentRow.seg_dist — JTS DiscreteHausdorffDistance, not the 423-a vertex-to-vertex value) and directed_locus_h (sup over the locus of A, a term by Stdlib completeness; bounded by discrete + max edge length, nonempty). discrete_le_locus: edges A ≠ [] → discrete ≤ locus. densify_step_bound: for any A' with the same locus and every edge ≤ δ, 0 ≤ locus(A,B) − discrete(A',B) ≤ δ; f(δ) = δ (distance-to-set is 1-Lipschitz), the polyline twin of ArcChordDensity's quadratic arc law. Locked JTS pair (0 0,100 0,10 100) vs (0 100,0 10,80 10): discrete = √500, locus ≥ 910/19 (witness (910/19,1100/19)), √500 < 910/19. 3-axiom Reals, no classic. No 423-a/423-b/FrechetMaxmin remint, no keyword, Linearise.hausdorff_le unused. Counts 635/544; claims, triage and scout map amended in place. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RLRSgKZrz5hV2dsf44PADc
396b8ce to
b4c5cee
Compare
grootstebozewolf
left a comment
There was a problem hiding this comment.
COMMENT (same-account; cannot APPROVE).
Standards: new theories/HausdorffDensify.v; count bump expected; CI must be green after rebase on #793.
Spec / honesty: #423 ticket-10 line 1 only — discrete ≤ locus + densify-step bound; JTS pair √500 < locus lower. Explicitly leaves line 2 (HAUSDORFF_*) and does not close #423.
Merge: squash when CLEAN after update-branch.
* oracle+theories: #423 t10 line 2 — HAUSDORFF_* emit directed_discrete_h (q_ddh_sq) Keep main's HausdorffDensify.v (line 1 from #792). Add HausdorffDiscreteQ.v and ADR-0006 adapters HAUSDORFF_DIRECTED / HAUSDORFF_SYMM. JTS pair → 500/1 (√500), not locus/47.8. #423 stays open. * docs: bump corpus counts for HausdorffDiscreteQ (547/638) --------- Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: Jeroen van den Bos <grootstebozewolf@users.noreply.github.com>
#423 ticket-10 line 1 only: the discrete-vs-locus densification bound.
theories/HausdorffDensify.v, claimId423-t10-densify.Two values, both terms
directed_discrete_h A B = max_{a vertex of A} d(a, locus B)— JTSDiscreteHausdorffDistance's h: vertices of A against the whole geometry B (point-to-segment viaLECSegmentRow.seg_dist). This is not the 423-a value (HausdorffDiscrete.directed_hausdorff_sq, vertex-to-vertex, squared); 423-a is not restated.directed_locus_h A B = sup_{q on locus A} d(q, locus B)— the JTSDirectedHausdorffDistancelocus value, built as a real number with Stdlibcompleteness(bounded by discrete + max edge length via the 1-Lipschitz property; nonempty via a vertex).Proved (unsquared
dist, 3-axiom Reals, noclassic)discrete_le_locus0 <= locus(A,B) - discrete(A',B) <= δdensify_step_bound,densify_step_bound_max_edge(0 0, 100 0, 10 100)vs(0 100, 0 10, 80 10): discrete = √500 (22.36)jts_discrete_value(910/19, 1100/19)on the diagonal edgejts_locus_lowerjts_discrete_strictly_below_locusticket_423_t10_line1_qed_or_qex(QED arm)f(δ) = δ: distance-to-a-set is 1-Lipschitz, so a δ-fine refinement closes the gap linearly. This is the polyline twin of
ArcChordDensity.n_chords_achieve_eps(arc side, quadratic in the refinement), quoted in the header, not remade. Equalitylocus = 910/19on the pair is not claimed; only the lower bound and the strict gap are.Hard-no honoured
No 423-a / 423-b /
FrechetMaxminremint; noHAUSDORFF_*keyword (line 2 is next); no NTS/GEOS port; noCurveSegmentgrowth; nofirst_cook_scope;Linearise.hausdorff_leis not used.Ledger
Registered in
_CoqProject.fullafterLECSegmentRow.v; counts 635 / 544; verified-claims 423-a row extended in place;TRIAGE_NTS_JTS_ISSUES.md#423 entry anddocs/scout/map-hausdorff-functions.mdremaining-ask row amended in place (line 1 landed, line 2 remains).make ci-guardsall pass.AI-drafted, human-reviewed.
Assisted-by: Claude
🤖 Generated with Claude Code
https://claude.ai/code/session_01RLRSgKZrz5hV2dsf44PADc
Generated by Claude Code