Documentation

Seymour.Matroid.Sum3

Matroid 3-sum #

Here we study the 3-sum of matroids (starting with the 3-sum of matrices).

Matrix-level 3-sum #

Additional notation for convenience #

We define the unsigned and the signed version of the special cases of the 3×3 submatrix in the intersection of the summands.

Definition #

structure MatrixSum3 (Xₗ : Type u_1) (Yₗ : Type u_2) (Xᵣ : Type u_3) (Yᵣ : Type u_4) (R : Type u_5) :
Type (max (max (max (max u_1 u_2) u_3) u_4) u_5)

Structural data of 3-sum of matrices.

Instances For
    @[reducible, inline]
    noncomputable abbrev MatrixSum3.D {Xₗ : Type u_1} {Yₗ : Type u_2} {Xᵣ : Type u_3} {Yᵣ : Type u_4} {R : Type u_5} [CommRing R] (S : MatrixSum3 Xₗ Yₗ Xᵣ Yᵣ R) :
    Matrix (Fin 2 ⊕ Xᵣ) (Yₗ ⊕ Fin 2) R

    The bottom-left block of 3-sum.

    Equations
    Instances For
      noncomputable def MatrixSum3.matrix {Xₗ : Type u_1} {Yₗ : Type u_2} {Xᵣ : Type u_3} {Yᵣ : Type u_4} {R : Type u_5} [CommRing R] (S : MatrixSum3 Xₗ Yₗ Xᵣ Yᵣ R) :
      Matrix ((Xₗ ⊕ Unit) ⊕ Fin 2 ⊕ Xᵣ) ((Yₗ ⊕ Fin 2) ⊕ Unit ⊕ Yᵣ) R

      The resulting matrix of 3-sum.

      Equations
      Instances For

        Conversion of summands #

        def blocksToMatrixSum3 {Xₗ : Type u_1} {Yₗ : Type u_2} {Xᵣ : Type u_3} {Yᵣ : Type u_4} {R : Type u_5} (Bₗ : Matrix ((Xₗ ⊕ Unit) ⊕ Fin 2) ((Yₗ ⊕ Fin 2) ⊕ Unit) R) (Bᵣ : Matrix (Unit ⊕ Fin 2 ⊕ Xᵣ) (Fin 2 ⊕ Unit ⊕ Yᵣ) R) :
        MatrixSum3 Xₗ Yₗ Xᵣ Yᵣ R

        Constructs 3-sum from summands in block form.

        Equations
        Instances For

          Canonical signing of matrices #

          Definition #

          All declarations in this section are private.

          General results #

          All declarations in this section are private.

          Definition of re-signing in two special cases #

          All declarations in this section are private.

          Lemmas about distinctness of row and column indices #

          All declarations in this section are private.

          Canonical signing of 3-sum of matrices #

          Additional notation for special rows and columns and their properties #

          @[reducible, inline]
          abbrev Function.IsParallelTo₃ {X : Type u_1} {R : Type u_2} [Zero R] [Neg R] (v c₀ c₁ c₂ : X → R) :

          Property of a vector to be in {0, c₀, -c₀, c₁, -c₁, c₂, -c₂}.

          Equations
          Instances For

            Auxiliary definitions #

            All declarations in this section are private.

            Soundness of definitions #

            In this section we prove that MatrixSum3.HasCanonicalSigning.toCanonicalSigning satisfies IsCanonicalSigning.

            Lemmas about extending bottom-right block with special columns and top-left block with special rows #

            All declarations in this section are private.

            Properties of canonical signings of 3-sums #

            All declarations in this section are private.

            Correctness #

            In this section we prove that MatrixSum3.HasCanonicalSigning.toCanonicalSigning is indeed a signing of the original 3-sum.

            Family of 3-sum-like matrices #

            Definition #

            structure MatrixLikeSum3 (Xₗ : Type u_1) (Yₗ : Type u_2) (Xᵣ : Type u_3) (Yᵣ : Type u_4) (c₀ c₁ : Fin 2 ⊕ Xᵣ → ℚ) :
            Type (max (max (max u_1 u_2) u_3) u_4)

            Structural data of 3-sum-like matrices.

            Instances For

              Pivoting #

              Auxiliary results about multiplying columns of the left block by 0, ±1 factors .

              Total unimodularity #

              All declarations in this section are private.

              Implications for canonical signing of 3-sum of matrices #

              In this section we prove that 3-sums of matrices belong to the family of 3-sum-like matrices.

              Matroid-level 3-sum #

              Additional notation for convenience #

              All declarations in this section are private.

              Removing bundled elements from sets #

              @[reducible, inline]
              abbrev Set.drop1 {α : Type u_1} (Z : Set α) (z₀ : ↑Z) :
              Set α

              Remove one bundled element from a set.

              Equations
              Instances For
                @[reducible, inline]
                abbrev Set.drop2 {α : Type u_1} (Z : Set α) (z₀ z₁ : ↑Z) :
                Set α

                Remove two bundled elements from a set.

                Equations
                Instances For
                  @[reducible, inline]
                  abbrev Set.drop3 {α : Type u_1} (Z : Set α) (z₀ z₁ z₂ : ↑Z) :
                  Set α

                  Remove three bundled elements from a set.

                  Equations
                  Instances For
                    def undrop3 {α : Type u_1} {Z : Set α} {z₀ z₁ z₂ : ↑Z} (i : ↑(Z.drop3 z₀ z₁ z₂)) :
                    ↑Z
                    Equations
                    Instances For

                      Membership in drop-sets #

                      All declarations in this section are private.

                      Re-typing elements of the triplet intersection #

                      All declarations in this section are private.

                      Conversion from union form to block form and vice versa #

                      def Matrix.toBlockSummandₗ {α : Type u_1} {Xₗ Yₗ : Set α} {R : Type u_2} (Bₗ : Matrix (↑Xₗ) (↑Yₗ) R) (x₀ x₁ x₂ : ↑Xₗ) (y₀ y₁ y₂ : ↑Yₗ) :
                      Matrix ((↑(Xₗ.drop3 x₀ x₁ x₂) ⊕ Unit) ⊕ Fin 2) ((↑(Yₗ.drop3 y₀ y₁ y₂) ⊕ Fin 2) ⊕ Unit) R
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        def Matrix.toBlockSummandᵣ {α : Type u_1} {Xᵣ Yᵣ : Set α} {R : Type u_2} (Bᵣ : Matrix (↑Xᵣ) (↑Yᵣ) R) (x₀ x₁ x₂ : ↑Xᵣ) (y₀ y₁ y₂ : ↑Yᵣ) :
                        Matrix (Unit ⊕ Fin 2 ⊕ ↑(Xᵣ.drop3 x₀ x₁ x₂)) (Fin 2 ⊕ Unit ⊕ ↑(Yᵣ.drop3 y₀ y₁ y₂)) R
                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          def Matrix.toMatrixDropUnionDrop {α : Type u_1} [DecidableEq α] {Xₗ Yₗ Xᵣ Yᵣ : Set α} {R : Type u_2} [(a : α) → Decidable (a ∈ Xₗ)] [(a : α) → Decidable (a ∈ Yₗ)] [(a : α) → Decidable (a ∈ Xᵣ)] [(a : α) → Decidable (a ∈ Yᵣ)] {x₀ₗ x₁ₗ x₂ₗ : ↑Xₗ} {y₀ₗ y₁ₗ y₂ₗ : ↑Yₗ} {x₀ᵣ x₁ᵣ x₂ᵣ : ↑Xᵣ} {y₀ᵣ y₁ᵣ y₂ᵣ : ↑Yᵣ} (A : Matrix ((↑(Xₗ.drop3 x₀ₗ x₁ₗ x₂ₗ) ⊕ Unit) ⊕ Fin 2 ⊕ ↑(Xᵣ.drop3 x₀ᵣ x₁ᵣ x₂ᵣ)) ((↑(Yₗ.drop3 y₀ₗ y₁ₗ y₂ₗ) ⊕ Fin 2) ⊕ Unit ⊕ ↑(Yᵣ.drop3 y₀ᵣ y₁ᵣ y₂ᵣ)) R) :
                          Matrix (↑(Xₗ.drop2 x₀ₗ x₁ₗ ∪ Xᵣ.drop1 x₂ᵣ)) (↑(Yₗ.drop1 y₂ₗ ∪ Yᵣ.drop2 y₀ᵣ y₁ᵣ)) R
                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For

                            The 3-sum of standard representations #

                            noncomputable def standardReprSum3 {α : Type u_1} [DecidableEq α] {Sₗ Sᵣ : StandardRepr α Z2} {x₀ x₁ x₂ y₀ y₁ y₂ : α} (hXX : Sₗ.X ∩ Sᵣ.X = x₀ ᕃ x₁ ᕃ {x₂}) (hYY : Sₗ.Y ∩ Sᵣ.Y = y₀ ᕃ y₁ ᕃ {y₂}) (hXY : Sₗ.X ⫗ Sᵣ.Y) (hYX : Sₗ.Y ⫗ Sᵣ.X) :

                            StandardRepr-level 3-sum of two matroids. Returns the result only if valid.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              theorem standardReprSum3_X_eq {α : Type u_1} [DecidableEq α] {Sₗ Sᵣ S : StandardRepr α Z2} {x₀ x₁ x₂ y₀ y₁ y₂ : α} {hXX : Sₗ.X ∩ Sᵣ.X = x₀ ᕃ x₁ ᕃ {x₂}} {hYY : Sₗ.Y ∩ Sᵣ.Y = y₀ ᕃ y₁ ᕃ {y₂}} {hXY : Sₗ.X ⫗ Sᵣ.Y} {hYX : Sₗ.Y ⫗ Sᵣ.X} (hS : standardReprSum3 hXX hYY hXY hYX = some S) :
                              S.X = Sₗ.X ∪ Sᵣ.X
                              theorem standardReprSum3_Y_eq {α : Type u_1} [DecidableEq α] {Sₗ Sᵣ S : StandardRepr α Z2} {x₀ x₁ x₂ y₀ y₁ y₂ : α} {hXX : Sₗ.X ∩ Sᵣ.X = x₀ ᕃ x₁ ᕃ {x₂}} {hYY : Sₗ.Y ∩ Sᵣ.Y = y₀ ᕃ y₁ ᕃ {y₂}} {hXY : Sₗ.X ⫗ Sᵣ.Y} {hYX : Sₗ.Y ⫗ Sᵣ.X} (hS : standardReprSum3 hXX hYY hXY hYX = some S) :
                              S.Y = Sₗ.Y ∪ Sᵣ.Y
                              theorem standardReprSum3_hasTuSigning {α : Type u_1} [DecidableEq α] {Sₗ Sᵣ S : StandardRepr α Z2} {x₀ x₁ x₂ y₀ y₁ y₂ : α} {hXX : Sₗ.X ∩ Sᵣ.X = x₀ ᕃ x₁ ᕃ {x₂}} {hYY : Sₗ.Y ∩ Sᵣ.Y = y₀ ᕃ y₁ ᕃ {y₂}} {hXY : Sₗ.X ⫗ Sᵣ.Y} {hYX : Sₗ.Y ⫗ Sᵣ.X} (hSₗ : Sₗ.B.HasTuSigning) (hSᵣ : Sᵣ.B.HasTuSigning) (hS : standardReprSum3 hXX hYY hXY hYX = some S) :

                              The 3-sum of matroids #

                              def Matroid.IsSum3of {α : Type u_1} [DecidableEq α] (M Mₗ Mᵣ : Matroid α) :

                              Matroid M is a result of 3-summing Mₗ and Mᵣ in some way.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                theorem Matroid.IsSum3of.E_eq {α : Type u_1} [DecidableEq α] (M Mₗ Mᵣ : Matroid α) (hMMM : M.IsSum3of Mₗ Mᵣ) :
                                M.E = Mₗ.E ∪ Mᵣ.E
                                theorem Matroid.IsSum3of.isRegular {α : Type u_1} [DecidableEq α] {M Mₗ Mᵣ : Matroid α} (hMMM : M.IsSum3of Mₗ Mᵣ) (hM : M.RankFinite) (hMₗ : Mₗ.IsRegular) (hMᵣ : Mᵣ.IsRegular) :

                                Any 3-sum of two regular matroids is a regular matroid. This is the final part of the easy direction of the Seymour's theorem.