Skip to content

Commit 9c31dc5

Browse files
docs: update README and reference docs after proof golf PRs
- Add PathGraphDist as upstream candidate in README - Fix Verify.lean declaration count (20 → 27) - Fix GraphBall lemma count (8 core + 6 convenience) - Expand Aristotle role in Development Process section - Correct FlowerVert type signature in theorems.md and graph-construction.md - Add changelog entries for PRs #11 and #12
1 parent 3263830 commit 9c31dc5

4 files changed

Lines changed: 46 additions & 12 deletions

File tree

README.md

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,12 @@ This is the ground truth formula that [navi-fractal](https://github.com/Project-
4040
| Log identities | `log_flowerHubDist_eq` etc. | `FlowerLog` | `log L_g = g · log u` |
4141
| **Log-ratio limit** | **`flowerDimension`** | **`FlowerDimension`** | **`lim log N_g / log L_g = log(u+v) / log(u)`** |
4242

43-
### Upstream candidate
43+
### Upstream candidates
4444

4545
| Declaration | File | Topic | Mathlib status |
4646
|-------------|------|-------|----------------|
47-
| `SimpleGraph.ball` + 7 core lemmas | `GraphBall` | Open metric ball via `edist` (8 core + convenience lemmas) | No `SimpleGraph.ball` in Mathlib; PR ready to open |
47+
| `SimpleGraph.ball` + 7 core lemmas | `GraphBall` | Open metric ball via `edist` (8 core + 6 convenience lemmas) | No `SimpleGraph.ball` in Mathlib; PR ready to open |
48+
| `pathGraph_edist`, `pathGraph_dist` + 2 corollaries | `PathGraphDist` | Distance in path graphs = index difference | No distance lemmas for `pathGraph` in Mathlib |
4849

4950
## Axiom boundary
5051

@@ -70,7 +71,7 @@ lake build --wfail # fail on any sorry or warning
7071

7172
```
7273
FdFormal/
73-
GraphBall.lean — SimpleGraph.ball (open ball via edist), 8 core + convenience lemmas (upstream candidate)
74+
GraphBall.lean — SimpleGraph.ball (open ball via edist), 8 core + 6 convenience lemmas (upstream candidate)
7475
FlowerGraph.lean — Hub vertices and structural helpers
7576
FlowerCounts.lean — Exact edge/vertex count formulas, bounds, monotonicity
7677
FlowerDiameter.lean — Hub-distance scaling L_g = u^g, cast identities
@@ -79,7 +80,7 @@ FdFormal/
7980
FlowerDimension.lean — Headline theorem: log-ratio limit = log(u+v) / log(u)
8081
PathGraphDist.lean — pathGraph distance lemmas (upstream candidate)
8182
FlowerConstruction.lean — F2 bridge: SimpleGraph construction + dist = u^g
82-
Verify.lean — #print axioms dashboard (20 declarations)
83+
Verify.lean — #print axioms dashboard (27 declarations)
8384
```
8485

8586
## Mathematical background
@@ -108,9 +109,11 @@ the core contribution. The underlying mathematics is from Rozenfeld et al. 2007.
108109

109110
**What AI tools did**: Claude Opus assisted with Lean 4 syntax, Mathlib API
110111
navigation, and proof term synthesis. Aristotle (Harmonic) independently proved
111-
leaf lemmas (positivity, monotonicity, cast identities) via automated proof search.
112-
These roles are analogous to `omega`, `aesop`, and other proof automation — the
113-
strategy is human, the term-level search is machine-assisted.
112+
leaf lemmas (positivity, monotonicity, cast identities) via automated proof search,
113+
and contributed proof simplification — eliminating intermediate bindings, converting
114+
tactic proofs to term mode, and inlining redundant variables. These roles are
115+
analogous to `omega`, `aesop`, and other proof automation — the strategy is human,
116+
the term-level search and cleanup is machine-assisted.
114117

115118
**Verification**: The final arbiter is the Lean compiler:
116119
```bash

docs/explanation/graph-construction.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ At generation \(g\), the flower has two hub vertices plus internal vertices cont
2020

2121
```lean
2222
def FlowerVert (u v : ℕ) (g : ℕ) : Type :=
23-
Sum (Fin 2) (Σ (e : FlowerEdge u v g), GadgetPos u v)
23+
Fin 2Σ (k : Fin g), FlowerEdge u v k.val × (Fin (u - 1) ⊕ Fin (v - 1))
2424
```
2525

26-
The left summand `Fin 2` gives the two hubs. The right summand pairs each edge index with a position within its replacement gadget.
26+
The left summand `Fin 2` gives the two hubs. The right summand indexes each internal vertex by three coordinates: the generation `k` at which it was created, the parent edge `e` that was replaced, and a position `Fin (u - 1) ⊕ Fin (v - 1)` within the replacement gadget (short or long path).
2727

2828
### Gadget positions
2929

30-
Each edge is replaced by two parallel paths of lengths \(u\) and \(v\). The internal vertices of this replacement are:
30+
Each edge is replaced by two parallel paths of lengths \(u\) and \(v\). The positions within a replacement gadget are described by:
3131

3232
```lean
3333
inductive GadgetPos (u v : ℕ)
@@ -37,7 +37,7 @@ inductive GadgetPos (u v : ℕ)
3737
| long (j : Fin (v-1)) -- internal vertices on the long path
3838
```
3939

40-
This gives \((u-1) + (v-1) = u+v-2\) internal vertices per gadget, matching the counting formula.
40+
`GadgetPos` is used by the endpoint resolution functions `localSrc` and `localTgt` to track adjacency within each gadget. The actual internal vertex positions in `FlowerVert` are stored as `Fin (u - 1) ⊕ Fin (v - 1)`, giving \((u-1) + (v-1) = u+v-2\) internal vertices per gadget, matching the counting formula.
4141

4242
### Edge indices
4343

docs/reference/changelog.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,34 @@
11
# Changelog
22

33
See [Releases](https://github.com/Project-Navi/fd-formalization/releases) on GitHub.
4+
5+
---
6+
7+
## 2026-03-28
8+
9+
### [#12](https://github.com/Project-Navi/fd-formalization/pull/12) --- Aristotle proof golf
10+
11+
Proof golf pass using Aristotle-discovered simplifications. Eliminates intermediate bindings and restores named squeeze waypoints in the headline theorem.
12+
13+
**Changed files:** `FlowerConstruction.lean`, `FlowerCounts.lean`, `FlowerDiameter.lean`, `FlowerDimension.lean`, `FlowerLog.lean`, `GraphBall.lean`, `PathGraphDist.lean`
14+
15+
Highlights:
16+
17+
- `flowerVertCountReal_pos` and `flowerHubDistReal_pos` are now term-mode proofs (`Nat.cast_pos.mpr ...`)
18+
- `FlowerVert.hub0_ne_hub1` is now term-mode (`Sum.inl_injective.ne (by decide)`)
19+
- `hc₁_pos` in the headline theorem uses `sub_pos.mpr` pattern directly
20+
- Named squeeze waypoints (`h_lo`, `h_hi`, `h_res`) restored in `flowerDimension` for readability
21+
- Net reduction: 49 insertions, 104 deletions across 7 files
22+
23+
### [#11](https://github.com/Project-Navi/fd-formalization/pull/11) --- Mathlib style cleanup
24+
25+
Proof style tightening from Mathlib PR review feedback. Aligns proof idioms with upstream conventions.
26+
27+
**Changed files:** `FlowerConstruction.lean`, `FlowerCounts.lean`, `FlowerDimension.lean`, `FlowerLog.lean`, `GraphBall.lean`, `PathGraphDist.lean`
28+
29+
Highlights:
30+
31+
- `flowerGraph'_adj_iff` now uses `.rfl` instead of tactic proof
32+
- `ball_one` and `ball_top` use `simp` proofs (leveraging `ENat.lt_one_iff_eq_zero` and `lt_top_iff_ne_top`)
33+
- Various `show ... from by` patterns replaced with `show ... by` (dropped deprecated `from`)
34+
- Net reduction: 50 insertions, 67 deletions across 7 files

docs/reference/theorems.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ def hub1 (u v g : ℕ) : Fin (flowerVertCount u v g)
150150
| `GadgetPos u v` | Position within a replacement gadget (src, tgt, short, long) |
151151
| `LocalEdge u v` | Edge index within a gadget: `Fin u ⊕ Fin v` |
152152
| `FlowerEdge u v g` | Recursive edge index type |
153-
| `FlowerVert u v g` | Vertex type: `Fin 2 ⊕ (Σ e, GadgetPos)` |
153+
| `FlowerVert u v g` | Vertex type: `Fin 2 ⊕ Σ (k : Fin g), FlowerEdge u v k.val × (Fin (u-1) ⊕ Fin (v-1))` |
154154
| `flowerGraph' u v g` | `SimpleGraph` on `FlowerVert` |
155155

156156
### Structural theorems

0 commit comments

Comments
 (0)