Documentation

LeanPool.MinimumDegreeMatching.BKLOInfrastructure

Finite edge-set infrastructure for BKLO Lemma 10.7 at r = 2 #

This module contains only the finite graph vocabulary needed by the pseudorandom simultaneous matching theorem. It is extracted from the independently frozen Paper III development and is kept separate from the theorem-facing API.

def BKLOK2.cliqueEdges {V : Type u_1} [DecidableEq V] (t : Finset V) :

The edge set (as Sym2) of a Finset of vertices, viewed as a complete graph on that set: all unordered pairs of distinct vertices of t. For a 3-set this is the triangle's three edges.

Equations
Instances For
    theorem BKLOK2.mem_cliqueEdgesV {V : Type u_1} [DecidableEq V] {t : Finset V} {e : Sym2 V} :
    e cliqueEdges t (∀ xe, x t) ¬e.IsDiag
    def BKLOK2.edeg {V : Type u_1} [DecidableEq V] (E : Finset (Sym2 V)) (v : V) :

    The number of edges of E at v.

    Equations
    Instances For
      def BKLOK2.nbhdIn {V : Type u_1} [DecidableEq V] (E : Finset (Sym2 V)) (x : V) (S : Finset V) :

      N_E(x, S): the neighbours of x inside S.

      Equations
      Instances For
        def BKLOK2.degTo {V : Type u_1} [DecidableEq V] (E : Finset (Sym2 V)) (x : V) (S : Finset V) :

        d_E(x, S) = |N_E(x, S)|.

        Equations
        Instances For
          theorem BKLOK2.mem_nbhdIn {V : Type u_1} [DecidableEq V] {E : Finset (Sym2 V)} {x y : V} {S : Finset V} :
          y nbhdIn E x S y S s(x, y) E
          theorem BKLOK2.nbhdIn_subset {V : Type u_1} [DecidableEq V] (E : Finset (Sym2 V)) (x : V) (S : Finset V) :
          nbhdIn E x SS
          def BKLOK2.edgesIn {V : Type u_1} [DecidableEq V] (E : Finset (Sym2 V)) (S : Finset V) :

          E[S]: the edges of E with both ends in S.

          Equations
          Instances For
            def BKLOK2.edgesBtw {V : Type u_1} [DecidableEq V] (E : Finset (Sym2 V)) (S T : Finset V) :

            E[S, T]: the edges of E with one end in S and the other in T.

            Equations
            Instances For
              def BKLOK2.insideParts {V : Type u_1} [DecidableEq V] (E : Finset (Sym2 V)) (P : Finset (Finset V)) :

              E − E[P] = ⋃_{W ∈ P} E[W]: the edges of E lying inside a part of P.

              Equations
              Instances For
                def BKLOK2.crossParts {V : Type u_1} [DecidableEq V] (E : Finset (Sym2 V)) (P : Finset (Finset V)) :

                E[P]: the edges of E joining two different parts of P.

                Equations
                Instances For
                  theorem BKLOK2.mem_edgesIn {V : Type u_1} [DecidableEq V] {E : Finset (Sym2 V)} {S : Finset V} {e : Sym2 V} :
                  e edgesIn E S e E ve, v S
                  theorem BKLOK2.mem_insideParts {V : Type u_1} [DecidableEq V] {E : Finset (Sym2 V)} {P : Finset (Finset V)} {e : Sym2 V} :
                  e insideParts E P e E WP, ve, v W
                  theorem BKLOK2.mem_crossParts {V : Type u_1} [DecidableEq V] {E : Finset (Sym2 V)} {P : Finset (Finset V)} {e : Sym2 V} :
                  e crossParts E P e E ¬WP, ve, v W
                  theorem BKLOK2.edgesIn_subset {V : Type u_1} [DecidableEq V] (E : Finset (Sym2 V)) (S : Finset V) :
                  edgesIn E SE
                  def BKLOK2.codegTo {V : Type u_1} [DecidableEq V] (E : Finset (Sym2 V)) (x y : V) (W : Finset V) :

                  d_E({x,y}, W) = |N_E(x,W) ∩ N_E(y,W)|, the codegree of the pair x, y inside W.

                  Equations
                  Instances For
                    def BKLOK2.famEdges {V : Type u_1} [DecidableEq V] (P : Finset (Finset V)) :

                    The edges of a triangle family.

                    Equations
                    Instances For
                      structure BKLOK2.IsMatchingAvoiding {V : Type u_1} (M : Finset (Finset V)) (x : V) :

                      A Finset (Finset V) is a matching avoiding x: every member is a 2-element set, the members are pairwise disjoint, and none contains x.

                      Instances For
                        def BKLOK2.involutionMatching {V : Type u_1} [DecidableEq V] (S : Finset V) (f : VV) :

                        The matching induced by a partner function f on S: the orbit {a, f a} for each a ∈ S.

                        Equations
                        Instances For
                          theorem BKLOK2.isMatchingAvoiding_involutionMatching {V : Type u_1} [DecidableEq V] {S : Finset V} {f : VV} {x : V} (hmap : aS, f a S) (hinv : aS, f (f a) = a) (hne : aS, f a a) (hx : xS) :

                          A fixed-point-free involution on S gives a matching of S, avoiding any xS.

                          theorem BKLOK2.edgesIn_subset_cliqueEdges_loopless {V : Type u_1} [DecidableEq V] {H : Finset (Sym2 V)} (hloop : eH, ¬e.IsDiag) (S : Finset V) :

                          Every edge of H inside S is a clique edge of S, provided H is loopless.

                          theorem BKLOK2.degTo_le_edeg_edgesIn {V : Type u_1} [DecidableEq V] {H : Finset (Sym2 V)} {S : Finset V} {y : V} (hy : y S) :
                          degTo H y S edeg (edgesIn H S) y

                          The degree of yS into S is at most its edge degree in H[S].

                          theorem BKLOK2.card_edgeNeighbors_eq_edeg {V : Type u_1} [DecidableEq V] {A : Finset (Sym2 V)} {N : Finset V} (hAsub : AcliqueEdges N) (v : V) :
                          ({zN | s(v, z) A}.erase v).card = edeg A v

                          On a loopless edge set supported on N, counting neighbours of v is the same as counting incident edges. This is the bridge from the BKLO finite-edge vocabulary to the generic spread matching interface.

                          structure BKLOK2.GoodMatching {V : Type u_1} [DecidableEq V] (H : Finset (Sym2 V)) (W : Finset V) (x : V) (M : Finset (Finset V)) :

                          The data the greedy sweep produces at an apex x: a perfect matching of N_H(x,W) avoiding x, all of whose edges are edges of H inside N_H(x,W).

                          Instances For
                            theorem BKLOK2.edeg_le_edeg_sdiff_add_edeg {V : Type u_1} [DecidableEq V] (E F : Finset (Sym2 V)) (v : V) :
                            edeg E v edeg (E \ F) v + edeg F v
                            theorem BKLOK2.edeg_sdiff_ge_of_slack {V : Type u_1} [DecidableEq V] {E D : Finset (Sym2 V)} {v : V} {h d : } (hE : h + d edeg E v) (hD : edeg D v d) :
                            h edeg (E \ D) v

                            The slack absorbs the used edges. If every vertex has degree ≥ h + d in E (the h + d of Lemma 10.3(ii), h = |N|/2, d the slack) and the used set D has degree d at v, then the unused part E \ D still has degree ≥ h at v — the hypothesis Dirac needs.

                            Matchings from involutions #

                            theorem BKLOK2.famEdges_involutionMatching_subset {V : Type u_1} [DecidableEq V] (N : Finset V) (f : VV) :
                            famEdges (involutionMatching N f)Finset.image (fun (a : V) => s(a, f a)) N

                            The edges of the matching induced by a partner function are among the orbit edges.

                            theorem BKLOK2.matching_data_of_involution {V : Type u_1} [DecidableEq V] {N : Finset V} {x : V} (hx : xN) {A : Finset (Sym2 V)} {f : VV} (hmap : aN, f a N) (hinv : aN, f (f a) = a) (hfne : aN, f a a) (hadj : aN, s(a, f a) A) :
                            IsMatchingAvoiding (involutionMatching N f) x (∀ einvolutionMatching N f, eN) (∀ aN, einvolutionMatching N f, a e) einvolutionMatching N f, cliqueEdges eA

                            A partner involution gives all the data of a GoodMatching. This is the second half of BKLO.exists_perfect_matching_in, with the involution supplied from outside.