Graph families
Lax871432.GraphFamilies · concepts/Lax871432/GraphFamilies.lean · lax-871432
No public endorsements yet.
Loading review…
Sign in with ORCIDNatural Language Statement
Definition
A finite family of graphs is given by indexing its members: for an index type and a bound , it assigns to every a graph on at most vertices. Such a family is pairwise non-isomorphic if whenever , and exhaustive if every graph on at most vertices is isomorphic to some .
Concept map
Lean source view on GitHub
| 1 | import Mathlib.Combinatorics.SimpleGraph.Maps |
| 2 | |
| 3 | /-! |
| 4 | --- |
| 5 | title: Graph families |
| 6 | type: definition |
| 7 | --- |
| 8 | A finite family of graphs is given by indexing its members: for an index type and a |
| 9 | bound , it assigns to every a graph on at most vertices. Such a |
| 10 | family is *pairwise non-isomorphic* if whenever , and |
| 11 | *exhaustive* if every graph on at most vertices is isomorphic to some . |
| 12 | |
| 13 | # Implementation notes |
| 14 | |
| 15 | A *graph family* is an indexed family rather than a set of graphs, so that the index type can |
| 16 | be used to address its members. Its graphs have vertex type `Fin (size i)` for sizes bounded |
| 17 | by `n`; this is no loss of generality, since every finite family of finite graphs has such a |
| 18 | bound, and it keeps matrices over the family indexed by a single type. |
| 19 | -/ |
| 20 | |
| 21 | namespace Lax871432.GraphFamilies |
| 22 | |
| 23 | /-- An *indexed graph family* of order `n`: a family of simple graphs indexed by `ι`, the |
| 24 | `i`-th of which has vertex set `Fin (size i)` for some `size i ≤ n`. -/ |
| 25 | structure GraphFamily (n : ℕ) (ι : Type*) where |
| 26 | /-- The number of vertices of the `i`-th graph. -/ |
| 27 | size : ι → ℕ |
| 28 | /-- Every graph in the family has at most `n` vertices. -/ |
| 29 | size_le : ∀ i, size i ≤ n |
| 30 | /-- The `i`-th graph of the family. -/ |
| 31 | graph : ∀ i, SimpleGraph (Fin (size i)) |
| 32 | |
| 33 | variable {n : ℕ} {ι : Type*} |
| 34 | |
| 35 | /-- Two indices carry isomorphic graphs. -/ |
| 36 | def GraphFamily.Iso (F : GraphFamily n ι) (i j : ι) : Prop := |
| 37 | Nonempty (F.graph i ≃g F.graph j) |
| 38 | |
| 39 | /-- The graphs in the family are pairwise non-isomorphic. -/ |
| 40 | def GraphFamily.PairwiseNonIso (F : GraphFamily n ι) : Prop := |
| 41 | Pairwise fun i j => ¬ F.Iso i j |
| 42 | |
| 43 | /-- The family represents every isomorphism class of graphs on at most `n` vertices. -/ |
| 44 | def GraphFamily.IsExhaustive (F : GraphFamily n ι) : Prop := |
| 45 | ∀ m ≤ n, ∀ G : SimpleGraph (Fin m), ∃ i, Nonempty (G ≃g F.graph i) |
| 46 | |
| 47 | end Lax871432.GraphFamilies |
| 48 |
Implementation notes
A graph family is an indexed family rather than a set of graphs, so that the index type can be used to address its members. Its graphs have vertex type for sizes bounded by ; this is no loss of generality, since every finite family of finite graphs has such a bound, and it keeps matrices over the family indexed by a single type.
Builds on
none
From Mathlib
Discussion
Ask a question or add context. Endorsements and structured flags are kept in the review panel above.
0 comments