Skip to content

Commit e8a7c7a

Browse files
kim-emKim Morrison
andauthored
docs: specify verified graph canonical labelling (#9884)
Co-authored-by: Kim Morrison <kim@lean-fro.org>
1 parent c948114 commit e8a7c7a

4 files changed

Lines changed: 1073 additions & 5 deletions

File tree

‎SPEC/Libraries/README.md‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
- **hex-poly-smith**: Smith normal form over `F[x]`, monic pivot normalization, unimodular transforms with inverses, and the structure of a finitely generated `F[x]`-module
2424
- **hex-invariant-factors**: the ordered invariant factors of a square matrix from the polynomial Smith form of `xI - A`, including unit factors and the dimension-zero conventions
2525
- **hex-gram-schmidt**: Gram-Schmidt orthogonalization, GS coefficients, Gram determinants, update formulas under row operations
26+
- **hex-graph**: immutable finite simple directed and undirected graphs, checked construction, maps, subgraphs, traversal, and executable adjacency
27+
- **hex-graph-iso**: nauty-compatible canonical forms, canonical labels, checked transporters, and positive and negative `graph_iso` proofs for finite ordered-coloured simple graphs
2628
- **hex-mod-arith**: `ZMod64 p`, `UInt64`-backed arithmetic in `Z/pZ`
2729
- **hex-modular**: integer CRT, rational reconstruction, symmetric representatives, and the modulus supply
2830
- **hex-padics**: fixed-precision approximations to `Z_p` and `Q_p`, with the valuation reported as a bound when that is all the data supports, precision-aware arithmetic, partial inversion and division, and exactification by rational reconstruction
@@ -96,6 +98,7 @@ Mathlib, and supplies correspondence proofs or Mathlib-facing APIs):
9698
- **hex-gfq-mathlib**: finiteness/cardinality for quotient fields, and `GFq p n ≃+* GaloisField p n`
9799
- **hex-berlekamp-zassenhaus-mathlib**: unconditional factoring correctness, `Decidable (Irreducible f)` for `Polynomial ℤ`; the `Polynomial ℤ` and strong `Hex.ZPoly` extensions for `factor_poly` / `irreducibility`
98100
- **hex-summation-mathlib**: `Finset.sum` semantics over characteristic-zero fields, the `Nat.choose` / `Nat.factorial` / `ascPochhammer` ratio kit, the summand recognizer, and the `gosper`, `zeilberger`, and `hyper` tactics
101+
- **hex-graph-iso-mathlib**: correspondence with finite `SimpleGraph`, ordered-colour isomorphisms, and the `SimpleGraph` extension of `graph_iso`
99102

100103
## Implementation dependencies
101104

@@ -123,6 +126,8 @@ Each library with its immediate dependencies:
123126
- **hex-smith**: hex-hermite
124127
- **hex-poly-smith**: hex-poly, hex-matrix, hex-determinant
125128
- **hex-invariant-factors**: hex-poly-smith
129+
- **hex-graph**: hex-basic
130+
- **hex-graph-iso**: hex-graph
126131
- **hex-mod-arith**: hex-arith
127132
- **hex-modular**: hex-arith
128133
- **hex-padics**: hex-arith, hex-modular, hex-primality, hex-basic
@@ -196,6 +201,7 @@ Mathlib companion libraries (each also depends on Mathlib):
196201
- **hex-gfq-mathlib**: hex-gfq, hex-gf2-mathlib
197202
- **hex-berlekamp-zassenhaus-mathlib**: hex-berlekamp-zassenhaus, hex-poly-z-mathlib
198203
- **hex-summation-mathlib**: hex-summation
204+
- **hex-graph-iso-mathlib**: hex-graph-iso
199205

200206
LLL is the recombination primitive used by Berlekamp-Zassenhaus: BZ
201207
encodes its lifted local factors as a lattice basis and calls
@@ -308,6 +314,19 @@ The algebraic graph has three independent roots: hex-poly, hex-arith,
308314
and hex-matrix. The module-boundary helpers in hex-basic are an
309315
additional utility root used across the graph.
310316

317+
The graph-isomorphism pair is independent of the algebraic libraries.
318+
`hex-graph-iso` keeps private dense execution data but exposes only
319+
`hex-graph` values. Its Mathlib companion contains the finite `SimpleGraph`
320+
correspondence until another graph algorithm needs that conversion. The
321+
complete contracts are in [hex-graph-iso](hex-graph-iso.md) and
322+
[hex-graph-iso-mathlib](hex-graph-iso-mathlib.md).
323+
324+
```
325+
hex-basic -- hex-graph -- hex-graph-iso -- hex-graph-iso-mathlib
326+
|
327+
Mathlib
328+
```
329+
311330
```
312331
hex-poly hex-arith hex-matrix
313332
/ \ | / \

0 commit comments

Comments
 (0)