FormalConjectures/Wikipedia/Conway99Graph.lean

GitHub source file

Explanation legend Lean4 Domain Explanation Language (L4DEL)

L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.

L4DEL
Lean4 Domain Explanation Language

Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.

Project sources: Pinned project documentation, Formal Conjectures paper, arXiv v1

9 declarations, 1 contain sorry, 0 declared as axioms

Conway's 99-graph problem

Reference: Wikipedia

Imports (1)
  1. lemma Conway99Graph.completeGraphIsClique A finset of vertices in a complete graph is always a clique line 38 source

    Source documentation

    A finset of vertices in a complete graph is always a clique.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Finset, SimpleGraph.IsClique, Top.top, SimpleGraph

    Proof uses: Pairwise.set_pairwise, Ne

    8 instances, coercions and auxiliary constants left out.

    lemma completeGraphIsClique (s : Finset V) : (⊤ : SimpleGraph V).IsClique s :=
    …
  2. lemma Conway99Graph.completeGraph_cliqueSet The only clique of size n in a complete graph on n vertices is the entire set of vertices line 45 source

    Source documentation

    The only clique of size n in a complete graph on n vertices is the entire set of vertices.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Fintype, Eq, Set, Finset, SimpleGraph.cliqueSet, Top.top, SimpleGraph, Fintype.card, Singleton.singleton, Set.toFinset, Set.univ

    Proof uses: Eq.mpr, Set.ofPred, Nat, Finset.card, Finset.univ, id, congr, congrArg, SimpleGraph.IsNClique, funext, Eq.trans, And, SimpleGraph.IsClique, propext, SimpleGraph.isNClique_iff, True, congrFun', true_and, Set.toFinset_univ, Iff.mp and 3 more

    16 instances, coercions and auxiliary constants left out.

    Tactic trace: 2 steps

    Open to load the checked before-and-after goal states.

    lemma completeGraph_cliqueSet :
        (⊤ : SimpleGraph V).cliqueSet (Fintype.card V) = {Set.univ.toFinset} := by
    …
  3. def Conway99Graph.NonEdgesAreDiagonals Each two non-adjacent vertices have exactly two common neighbors line 55 source

    Source documentation

    Each two non-adjacent vertices have exactly two common neighbors.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: SimpleGraph

    Proof uses: Pairwise, Not, SimpleGraph.Adj, Eq, Nat, Set.ncard, Inter.inter, Set, SimpleGraph.neighborSet, OfNat.ofNat

    2 instances, coercions and auxiliary constants left out.

    def NonEdgesAreDiagonals (G : SimpleGraph V) : Prop :=
    …
  4. theorem Conway99Graph.conway99Graph Documented declaration: conway99Graph sorry line 67 source

    Source documentation

    Does there exist an undirected graph with 99 vertices, in which each two adjacent vertices have exactly one common neighbor, and in which each two non-adjacent vertices have exactly two common neighbors? Equivalently, every edge should be part of a unique triangle and every non-adjacent pair should be one of the two diagonals of a unique 4-cycle. The first condition is equivalent to being locally linear.

    depends on sorry what this means

    Statement uses: Iff, True, Exists, SimpleGraph, Fin, OfNat.ofNat, Nat, And, SimpleGraph.LocallyLinear, Conway99Graph.NonEdgesAreDiagonals

    Proof uses: sorryAx, Lean.Name, Bool.false, Lean.Name.num, Lean.Name.str, Lean.Name.anonymous

    2 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

    Open to load the checked before-and-after goal states.

    theorem conway99Graph : answer(sorry) ↔ ∃ G : SimpleGraph (Fin 99),
        G.LocallyLinear ∧ NonEdgesAreDiagonals G := by
    …

    Mentions: Conway99Graph.NonEdgesAreDiagonals

  5. theorem Conway99Graph.triangle_locallyLinear_and_nonEdgesAreDiagonals The triangle is an example with 3 vertices satisfying the condition line 75 source

    Source documentation

    The triangle is an example with 3 vertices satisfying the condition.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: And, SimpleGraph.LocallyLinear, Fin, OfNat.ofNat, Nat, SimpleGraph.completeGraph, Conway99Graph.NonEdgesAreDiagonals

    Proof uses: And.intro, Eq.mpr, SimpleGraph.EdgeDisjointTriangles, Top.top, SimpleGraph, Not, Eq, Exists, Finset, SimpleGraph.IsNClique, Membership.mem, id, congrArg, SimpleGraph.Adj, forall_congr, Ne, implies_congr, Eq.refl, Set, SimpleGraph.cliqueSet and 60 more

    54 instances, coercions and auxiliary constants left out.

    Tactic trace: 22 steps

    Open to load the checked before-and-after goal states.

    theorem triangle_locallyLinear_and_nonEdgesAreDiagonals : (completeGraph (Fin 3)).LocallyLinear ∧
        NonEdgesAreDiagonals (completeGraph (Fin 3)) := by
    …

    Mentions: Conway99Graph.NonEdgesAreDiagonals

  6. abbrev Conway99Graph.Conway9 The box product of two triangles is an example with 9 vertices satisfying the condition line 98 source

    Source documentation

    The box product of two triangles is an example with 9 vertices satisfying the condition. (This graph is the complement of the one described in https://vimeo.com/109815595 and it is also isomorphic to it and to the Paley graph and the graph of the 3-3 duoprism)

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: SimpleGraph, Prod, Fin, OfNat.ofNat, Nat

    Proof uses: SimpleGraph.boxProd, SimpleGraph.completeGraph

    2 instances, coercions and auxiliary constants left out.

    abbrev Conway9 := completeGraph (Fin 3) □ completeGraph (Fin 3)
    …
  7. theorem Conway99Graph.conway9_nonEdgesAreDiagonals line 101 source

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Conway99Graph.NonEdgesAreDiagonals, Prod, Fin, OfNat.ofNat, Nat, Conway99Graph.Conway9

    Proof uses: id, Eq, Finset.card, Inter.inter, Finset, SimpleGraph.neighborFinset, SimpleGraph.completeGraph, Membership.mem, Set, SimpleGraph.neighborSet, Prod.fst, Prod.snd, Set.ncard, Eq.mpr, Set.toFinset, congrArg, Eq.symm, Set.toFinset_inter, Set.ncard_eq_toFinset_card', Eq.refl and 46 more

    35 instances, coercions and auxiliary constants left out.

    Tactic trace: 15 steps

    Open to load the checked before-and-after goal states.

  8. lemma Conway99Graph.completeGraph_boxProd_completeGraph_cliqueSet line 116 source

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Eq, Set, Finset, Prod, Fin, OfNat.ofNat, Nat, SimpleGraph.cliqueSet, SimpleGraph.boxProd, SimpleGraph.completeGraph, Union.union, Set.ofPred, Exists, Finset.filter, Prod.mk, Finset.univ

    Proof uses: Set.ext, Eq.mpr, Iff, Membership.mem, SimpleGraph.IsNClique, Top.top, SimpleGraph, Or, id, congr, congrArg

    22 instances, coercions and auxiliary constants left out.

    Tactic trace: 4 steps

    Open to load the checked before-and-after goal states.

  9. theorem Conway99Graph.conway9_locallyLinear line 126 source

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: SimpleGraph.LocallyLinear, Prod, Fin, OfNat.ofNat, Nat, Conway99Graph.Conway9

    Proof uses: id, And.intro, SimpleGraph.EdgeDisjointTriangles, SimpleGraph.Adj, Exists, Finset, And, SimpleGraph.IsNClique, Membership.mem, Set, SimpleGraph.cliqueSet, Ne, Set.ofPred, Eq, Finset.filter, Prod.mk, Finset.univ, Union.union, Set.Subsingleton, Inter.inter and 67 more

    49 instances, coercions and auxiliary constants left out.

    Tactic trace: 39 steps

    Open to load the checked before-and-after goal states.