Documentation

LeanPool.HardSphereNBC.NBCGraph

Concrete graph data for the NBC layer.

Mathlib has the graph-side notion of a simple cycle, but it does not provide the graphic matroid. This file therefore stops at the interface that can be proved without importing an unproved graphic-matroid construction: cycles are represented by finite edge sets of actual Walk.IsCycle witnesses, and the final bridge is conditional on a matroid's ground, spanning, and circuit presentations.

Finite edge and cycle sets #

noncomputable def HsVirial.graphEdgeFinset {V : Type u_1} [Fintype V] (G : SimpleGraph V) :

The graph's edge set as a finite set of unordered vertex pairs.

Equations
Instances For
    @[simp]
    @[simp]
    def HsVirial.cycleEdgeFinset {V : Type u_1} [DecidableEq V] {G : SimpleGraph V} {v : V} (c : G.Walk v v) :

    The finite edge set traversed by a closed walk.

    Equations
    Instances For
      @[simp]
      theorem HsVirial.mem_cycleEdgeFinset {V : Type u_1} [DecidableEq V] {G : SimpleGraph V} {v : V} {c : G.Walk v v} {e : Sym2 V} :
      theorem HsVirial.cycleEdgeFinset_card {V : Type u_1} [DecidableEq V] {G : SimpleGraph V} {v : V} {c : G.Walk v v} (hc : c.IsCycle) :
      theorem HsVirial.cycleEdgeFinset_nonempty {V : Type u_1} [DecidableEq V] {G : SimpleGraph V} {v : V} {c : G.Walk v v} (hc : c.IsCycle) :

      IsGraphCycle is deliberately an edge-set predicate rather than a predicate on a chosen walk. Different orientations or starting points of one cycle consequently describe the same circuit candidate.

      def HsVirial.IsGraphCycle {V : Type u_1} [DecidableEq V] (G : SimpleGraph V) (C : Finset (Sym2 V)) :

      An edge set realized by a simple graph cycle.

      Equations
      Instances For

        Broken circuits and graph-side candidates #

        def HsVirial.graphEdgeLE {V : Type u_1} [LinearOrder (Sym2 V)] (a b : Sym2 V) :

        The chosen non-strict comparison of graph edges.

        Equations
        Instances For
          def HsVirial.graphEdgeLT {V : Type u_1} [LinearOrder (Sym2 V)] (a b : Sym2 V) :

          The chosen strict comparison of graph edges.

          Equations
          Instances For

            An edge set obtained by deleting the greatest edge from a cycle.

            Equations
            Instances For
              def HsVirial.IsGraphNBCandidate {V : Type u_1} [DecidableEq V] [LinearOrder (Sym2 V)] (G : SimpleGraph V) (A : Finset (Sym2 V)) (e : Sym2 V) :

              An edge whose insertion completes a cycle with the remaining edges already present.

              Equations
              Instances For
                theorem HsVirial.graphNBCandidate_has_brokenCircuit {V : Type u_1} [DecidableEq V] [LinearOrder (Sym2 V)] {G : SimpleGraph V} {A : Finset (Sym2 V)} {e : Sym2 V} (h : IsGraphNBCandidate G A e) :
                ∃ (B : Finset (Sym2 V)), IsGraphBrokenCircuit G B ∧ ↑B ⊆ ↑A
                theorem HsVirial.graphBrokenCircuit_subset_isGraphNBCandidate {V : Type u_1} [DecidableEq V] [LinearOrder (Sym2 V)] {G : SimpleGraph V} {A B : Finset (Sym2 V)} (hB : IsGraphBrokenCircuit G B) (hBA : ↑B ⊆ ↑A) :
                ∃ (e : Sym2 V), IsGraphNBCandidate G A e

                These are explicit interface theorems, not a proposed graphic-matroid definition: the graph predicates above remain concrete while the matroid construction is developed separately.

                theorem HsVirial.isNBCandidate_iff_graphCycle_circuits {V : Type u_1} [DecidableEq V] [LinearOrder (Sym2 V)] {G : SimpleGraph V} {M : Matroid (Sym2 V)} {A : Finset (Sym2 V)} {e : Sym2 V} (hcircuits : ∀ (C : Finset (Sym2 V)), M.IsCircuit ↑C ↔ IsGraphCycle G C) :
                theorem HsVirial.mem_nbcCandidates_iff_graphCycle_circuits {V : Type u_1} [Fintype V] [DecidableEq V] [LinearOrder (Sym2 V)] {G : SimpleGraph V} {M : Matroid (Sym2 V)} {A : Finset (Sym2 V)} {e : Sym2 V} (hground : M.E = G.edgeSet) (hcircuits : ∀ (C : Finset (Sym2 V)), M.IsCircuit ↑C ↔ IsGraphCycle G C) :
                theorem HsVirial.generic_candidate_toggle_of_graphCycle_circuits {V : Type u_1} [DecidableEq V] [LinearOrder (Sym2 V)] {G : SimpleGraph V} {M : Matroid (Sym2 V)} {A : Finset (Sym2 V)} {e : Sym2 V} (hcircuits : ∀ (C : Finset (Sym2 V)), M.IsCircuit ↑C ↔ IsGraphCycle G C) (h : IsGraphNBCandidate G A e) :
                theorem HsVirial.graph_nbcBad_iff_generic_nbcBad {V : Type u_1} [Fintype V] [DecidableEq V] [LinearOrder (Sym2 V)] {G : SimpleGraph V} {M : Matroid (Sym2 V)} {A : Finset (Sym2 V)} (hground : M.E = G.edgeSet) (hcircuits : ∀ (C : Finset (Sym2 V)), M.IsCircuit ↑C ↔ IsGraphCycle G C) :
                IsNBCBad M A ↔ ∃ (e : Sym2 V), IsGraphNBCandidate G A e
                theorem HsVirial.graph_candidate_toggle_of_generic {V : Type u_1} [DecidableEq V] [LinearOrder (Sym2 V)] {G : SimpleGraph V} {M : Matroid (Sym2 V)} {A : Finset (Sym2 V)} {e : Sym2 V} (hcircuits : ∀ (C : Finset (Sym2 V)), M.IsCircuit ↑C ↔ IsGraphCycle G C) (h : IsNBCandidate M A e) :

                Graph-side signed cancellation #

                def HsVirial.IsGraphSpanning {V : Type u_1} (G : SimpleGraph V) (A : Finset (Sym2 V)) :

                The edge set induces the same reachability relation as the ambient graph.

                Equations
                Instances For

                  There exists an edge witnessing a broken circuit in the given edge set.

                  Equations
                  Instances For
                    noncomputable def HsVirial.graphSpanningSubsets {V : Type u_1} [Fintype V] (G : SimpleGraph V) :

                    Enumerate edge subsets preserving the graph's connected components.

                    Equations
                    Instances For
                      noncomputable def HsVirial.graphNBCSpanningSubsets {V : Type u_1} [Fintype V] [DecidableEq V] [LinearOrder (Sym2 V)] (G : SimpleGraph V) :

                      The spanning edge subsets that contain no broken circuit.

                      Equations
                      Instances For
                        theorem HsVirial.nbcBaseSubsets_eq_graphNBCSpanningSubsets {V : Type u_1} [Fintype V] [DecidableEq V] [LinearOrder (Sym2 V)] {G : SimpleGraph V} {M : Matroid (Sym2 V)} (hground : M.E = G.edgeSet) (hspanning : ∀ A ⊆ graphEdgeFinset G, M.Spanning ↑A ↔ IsGraphSpanning G A) (hcircuits : ∀ (C : Finset (Sym2 V)), M.IsCircuit ↑C ↔ IsGraphCycle G C) :
                        theorem HsVirial.graph_signed_spanning_eq_graph_signed_nbc {V : Type u_1} [Fintype V] [DecidableEq V] [LinearOrder (Sym2 V)] {G : SimpleGraph V} {M : Matroid (Sym2 V)} (hground : M.E = G.edgeSet) (hspanning : ∀ A ⊆ graphEdgeFinset G, M.Spanning ↑A ↔ IsGraphSpanning G A) (hcircuits : ∀ (C : Finset (Sym2 V)), M.IsCircuit ↑C ↔ IsGraphCycle G C) :