Documentation

Matroid.Loop

instance Matroid.InvariantFun.isLoop :
InvariantFun (fun {α : Type u_3} => IsLoop) fun {β : Type u_4} => IsLoop
instance Matroid.InvariantFun.isNonLoop :
InvariantFun (fun {α : Type u_3} => IsNonloop) fun {β : Type u_4} => IsNonloop
@[simp]
theorem Matroid.isFlat_loops {α : Type u_1} (M : Matroid α) :
def Matroid.IsNonColoop {α : Type u_1} (M : Matroid α) (e : α) :

A non-coloop of M is a nonloop of M✶.

Equations
Instances For
    theorem Matroid.IsNonColoop.mem_ground {α : Type u_1} {M : Matroid α} {e : α} (h : M.IsNonColoop e) :
    e ∈ M.E
    theorem Matroid.IsNonColoop.not_isColoop {α : Type u_1} {M : Matroid α} {e : α} (h : M.IsNonColoop e) :
    theorem Matroid.IsColoop.not_isNonColoop {α : Type u_1} {M : Matroid α} {e : α} (h : M.IsColoop e) :
    @[simp]
    theorem Matroid.isLoop_map_iff {α : Type u_1} {M : Matroid α} {β : Type u_3} {f : α → β} {x : α} (hf : Set.InjOn f M.E) (hx : x ∈ M.E) :
    (M.map f hf).IsLoop (f x) ↔ M.IsLoop x
    @[simp]
    theorem Matroid.isNonloop_map_iff {α : Type u_1} {M : Matroid α} {β : Type u_3} {f : α → β} {x : α} (hf : Set.InjOn f M.E) (hx : x ∈ M.E) :
    (M.map f hf).IsNonloop (f x) ↔ M.IsNonloop x
    @[simp]
    theorem Matroid.isColoop_map_iff {α : Type u_1} {M : Matroid α} {β : Type u_3} {f : α → β} {x : α} (hf : Set.InjOn f M.E) (hx : x ∈ M.E) :
    (M.map f hf).IsColoop (f x) ↔ M.IsColoop x
    @[simp]
    theorem Matroid.isNonColoop_map_iff {α : Type u_1} {M : Matroid α} {β : Type u_3} {f : α → β} {x : α} (hf : Set.InjOn f M.E) (hx : x ∈ M.E) :
    (M.map f hf).IsNonColoop (f x) ↔ M.IsNonColoop x
    @[simp]
    theorem Matroid.isNonColoop_dual {α : Type u_1} {M : Matroid α} {e : α} :
    @[simp]
    theorem Matroid.isNonloop_dual {α : Type u_1} {M : Matroid α} {e : α} :
    theorem Matroid.IsNonColoop.isNonloop_dual {α : Type u_1} {M : Matroid α} {e : α} :

    Alias of the reverse direction of Matroid.isNonloop_dual.

    theorem Matroid.not_isColoop_iff {α : Type u_1} {M : Matroid α} {e : α} (he : e ∈ M.E := by aesop_mat) :
    theorem Matroid.not_isNonColoop_iff {α : Type u_1} {M : Matroid α} {e : α} (he : e ∈ M.E := by aesop_mat) :
    theorem Matroid.isNonColoop_iff {α : Type u_1} {M : Matroid α} {e : α} :
    theorem Matroid.IsNonColoop.coindep {α : Type u_1} {M : Matroid α} {e : α} (h : M.IsNonColoop e) :
    theorem Matroid.IsNonColoop.exists_isBase_notMem {α : Type u_1} {M : Matroid α} {e : α} (h : M.IsNonColoop e) :
    ∃ (B : Set α), M.IsBase B ∧ e ∉ B
    theorem Matroid.IsLoop.isNonColoop {α : Type u_1} {M : Matroid α} {e : α} (h : M.IsLoop e) :
    theorem Matroid.coindep_singleton {α : Type u_1} {M : Matroid α} {e : α} :
    theorem Matroid.isColoop_or_isNonColoop {α : Type u_1} (M : Matroid α) (e : α) (he : e ∈ M.E := by aesop_mat) :
    class Matroid.Coloopless {α : Type u_1} (M : Matroid α) :

    A matroid is coloopless if its dual is loopless.

    Instances
      instance Matroid.dual_loopless {α : Type u_1} {M : Matroid α} [M.Coloopless] :
      theorem Matroid.coloopless_iff_forall {α : Type u_1} {M : Matroid α} :
      M.Coloopless ↔ ∀ e ∈ M.E, M.IsNonColoop e
      @[simp]
      theorem Matroid.coloops_eq_empty {α : Type u_1} (M : Matroid α) [M.Coloopless] :
      @[simp]
      theorem Matroid.isNonColoop_of_mem {α : Type u_1} {M : Matroid α} {e : α} [M.Coloopless] (he : e ∈ M.E) :
      theorem Matroid.Loopless.subsingleton_indep {α : Type u_1} {M : Matroid α} {X : Set α} (hM : M.Loopless) (hX : X.Subsingleton) (hXE : X ⊆ M.E := by aesop_mat) :
      M.Indep X
      theorem Matroid.Coloopless.subsingleton_coindep {α : Type u_1} {M : Matroid α} {X : Set α} (hM : M.Coloopless) (hX : X.Subsingleton) (hXE : X ⊆ M.E := by aesop_mat) :
      @[simp]
      theorem Matroid.mem_loops_iff {α : Type u_1} {M : Matroid α} {e : α} :
      @[simp]
      theorem Matroid.disjointSigma_isLoop_iff {α : Type u_1} {e : α} {ι : Type u_3} {M : ι → Matroid α} (hdj : Pairwise (Function.onFun Disjoint fun (i : ι) => (M i).E)) :
      (Matroid.disjointSigma M hdj).IsLoop e ↔ ∃ (i : ι), (M i).IsLoop e
      @[simp]
      theorem Matroid.disjointSigma_isNonloop_iff {α : Type u_1} {e : α} {ι : Type u_3} {M : ι → Matroid α} (hdj : Pairwise (Function.onFun Disjoint fun (i : ι) => (M i).E)) :
      (Matroid.disjointSigma M hdj).IsNonloop e ↔ ∃ (i : ι), (M i).IsNonloop e
      @[simp]
      theorem Matroid.disjointSum_isNonloop_iff {α : Type u_1} {e : α} {M N : Matroid α} (hMN : Disjoint M.E N.E) :
      @[simp]
      theorem Matroid.disjointSum_isLoop_iff {α : Type u_1} {e : α} {M N : Matroid α} (hMN : Disjoint M.E N.E) :
      (M.disjointSum N hMN).IsLoop e ↔ M.IsLoop e ∨ N.IsLoop e
      @[simp]
      theorem Matroid.disjointSigma_loops {α : Type u_1} {ι : Type u_3} {M : ι → Matroid α} (hdj : Pairwise (Function.onFun Disjoint fun (i : ι) => (M i).E)) :
      (Matroid.disjointSigma M hdj).loops = ⋃ (i : ι), (M i).loops
      @[simp]
      theorem Matroid.disjointSum_loops {α : Type u_1} {M N : Matroid α} (hMN : Disjoint M.E N.E) :
      @[simp]
      theorem Matroid.sigma_loops_eq {ι : Type u_3} {α : ι → Type u_4} {M : (i : ι) → Matroid (α i)} :
      (Matroid.sigma M).loops = ⋃ (i : ι), Sigma.mk i '' (M i).loops
      @[simp]
      theorem Matroid.sum_loops_eq {α : Type u_1} {β : Type u_2} (M : Matroid α) (N : Matroid β) :
      theorem Matroid.Loopless.isNonloop_of_mem {α : Type u_1} {M : Matroid α} {e : α} (h : M.Loopless) (he : e ∈ M.E) :

      a version of isNonloop_of_loopless that works with dot notation

      theorem Matroid.Coloopless.isNonColoop_of_mem {α : Type u_1} {M : Matroid α} {e : α} (hM : M.Coloopless) (he : e ∈ M.E) :
      theorem Matroid.Loopless.not_isLoop {α : Type u_1} {M : Matroid α} (h : M.Loopless) (e : α) :
      def Matroid.removeColoops {α : Type u_1} (M : Matroid α) :

      remove the coloops of a matroid M.

      Equations
      Instances For
        theorem Matroid.union_dep_iff_dep_of_subset_coloops {α : Type u_1} {M : Matroid α} {D X : Set α} (hX : X ⊆ M.coloops) :
        M.Dep (D ∪ X) ↔ M.Dep D
        theorem Matroid.diff_dep_iff_dep_of_subset_coloops {α : Type u_1} {M : Matroid α} {D X : Set α} (hX : X ⊆ M.coloops) :
        M.Dep (D \ X) ↔ M.Dep D
        @[simp]
        @[simp]
        theorem Matroid.union_coloops_dep_iff {α : Type u_1} {M : Matroid α} {X : Set α} :
        M.Dep (X ∪ M.coloops) ↔ M.Dep X
        theorem Matroid.union_coindep_iff_coindep_of_subset_loops {α : Type u_1} {M : Matroid α} {I X : Set α} (hX : X ⊆ M.loops) :
        M.Coindep (I ∪ X) ↔ M.Coindep I
        @[simp]
        theorem Matroid.union_loops_coindep_iff {α : Type u_1} {M : Matroid α} {X : Set α} :
        theorem Matroid.union_codep_iff_codep_of_subset_loops {α : Type u_1} {M : Matroid α} {I X : Set α} (hX : X ⊆ M.loops) :
        M.Codep (I ∪ X) ↔ M.Codep I
        @[simp]
        theorem Matroid.union_loops_codep_iff {α : Type u_1} {M : Matroid α} {X : Set α} :
        M.Codep (X ∪ M.loops) ↔ M.Codep X
        theorem Matroid.eRk_union_eq_of_subset_coloops {α : Type u_1} {M : Matroid α} {K : Set α} (X : Set α) (hK : K ⊆ M.coloops) :
        M.eRk (X ∪ K) = M.eRk X + (K \ X).encard
        @[simp]
        theorem Matroid.loops_indep_iff {α : Type u_1} {M : Matroid α} :
        @[simp]
        theorem Matroid.loops_dep_iff {α : Type u_1} {M : Matroid α} :
        @[simp]
        @[simp]
        @[simp]
        theorem Matroid.closure_coloops {α : Type u_1} (M : Matroid α) :
        @[simp]
        theorem Matroid.loops_subset_closure {α : Type u_1} (M : Matroid α) (X : Set α) :
        M.loops ⊆ M.closure X
        def Matroid.IsLoopEquiv {α : Type u_1} (M : Matroid α) (X Y : Set α) :

        Two sets are IsLoopEquiv in M if their symmetric difference contains only loops.

        Equations
        Instances For
          theorem Matroid.isLoopEquiv_iff_union_eq_union {α : Type u_1} {M : Matroid α} {X Y : Set α} :
          theorem Matroid.IsLoopEquiv.union_eq_union {α : Type u_1} {M : Matroid α} {X Y : Set α} (h : M.IsLoopEquiv X Y) :
          X ∪ M.loops = Y ∪ M.loops
          theorem Matroid.IsLoopEquiv.diff_eq_diff {α : Type u_1} {M : Matroid α} {X Y : Set α} (h : M.IsLoopEquiv X Y) :
          X \ M.loops = Y \ M.loops
          theorem Matroid.IsLoopEquiv.rfl {α : Type u_1} (M : Matroid α) {X : Set α} :
          theorem Matroid.IsLoopEquiv.symm {α : Type u_1} {M : Matroid α} {X Y : Set α} (h : M.IsLoopEquiv X Y) :
          theorem Matroid.IsLoopEquiv.comm {α : Type u_1} {M : Matroid α} {X Y : Set α} :
          theorem Matroid.IsLoopEquiv.trans {α : Type u_1} {M : Matroid α} {X Y Z : Set α} (hXY : M.IsLoopEquiv X Y) (hYZ : M.IsLoopEquiv Y Z) :
          theorem Matroid.IsLoopEquiv.diff_subset_loops {α : Type u_1} {M : Matroid α} {X Y : Set α} (h : M.IsLoopEquiv X Y) :
          X \ Y ⊆ M.loops
          theorem Matroid.IsLoopEquiv.symmDiff_subset_loops {α : Type u_1} {M : Matroid α} {X Y : Set α} :
          M.IsLoopEquiv X Y ↔ symmDiff X Y ⊆ M.loops
          theorem Matroid.isLoopEquiv_union {α : Type u_1} {M : Matroid α} {L : Set α} (X : Set α) (hL : L ⊆ M.loops) :
          M.IsLoopEquiv X (X ∪ L)
          theorem Matroid.isLoopEquiv_diff {α : Type u_1} {M : Matroid α} {L : Set α} (X : Set α) (hL : L ⊆ M.loops) :
          M.IsLoopEquiv X (X \ L)
          theorem Matroid.isLoopEquiv_union_diff {α : Type u_1} {M : Matroid α} {L L' : Set α} (X : Set α) (hL : L ⊆ M.loops) (hL' : L' ⊆ M.loops) :
          M.IsLoopEquiv X ((X ∪ L) \ L')
          theorem Matroid.isLoopEquiv_union_loops {α : Type u_1} (M : Matroid α) (X : Set α) :
          theorem Matroid.isLoopEquiv_diff_loops {α : Type u_1} (M : Matroid α) (X : Set α) :
          M.IsLoopEquiv X (X \ M.loops)
          theorem Matroid.IsLoopEquiv.exists_diff_union_loops {α : Type u_1} {M : Matroid α} {X Y : Set α} (h : M.IsLoopEquiv X Y) :
          ∃ (L : Set α) (L' : Set α), L ⊆ M.loops ∧ L' ⊆ M.loops ∧ Y = (X ∪ L) \ L'
          theorem Matroid.IsLoopEquiv.subset_union_loops {α : Type u_1} {M : Matroid α} {X Y : Set α} (h : M.IsLoopEquiv X Y) :
          Y ⊆ X ∪ M.loops
          theorem Matroid.IsLoopEquiv.closure_eq_closure {α : Type u_1} {M : Matroid α} {X Y : Set α} (h : M.IsLoopEquiv X Y) :
          M.closure X = M.closure Y
          theorem Matroid.IsLoopEquiv.subset_ground {α : Type u_1} {M : Matroid α} {X Y : Set α} (h : M.IsLoopEquiv X Y) (hX : X ⊆ M.E := by aesop_mat) :
          Y ⊆ M.E
          theorem Matroid.IsLoopEquiv.inter_eq_of_indep {α : Type u_1} {M : Matroid α} {I X Y : Set α} (h : M.IsLoopEquiv X Y) (hI : M.Indep I) :
          X ∩ I = Y ∩ I
          theorem Matroid.IsLoopEquiv.subset_iff_of_indep {α : Type u_1} {M : Matroid α} {I X Y : Set α} (h : M.IsLoopEquiv X Y) (hI : M.Indep I) :
          I ⊆ X ↔ I ⊆ Y
          theorem Matroid.IsLoopEquiv.isBasis_iff {α : Type u_1} {M : Matroid α} {I X Y : Set α} (h : M.IsLoopEquiv X Y) :
          M.IsBasis I X ↔ M.IsBasis I Y
          theorem Matroid.isBasis_union_iff_isBasis_of_subset_loops {α : Type u_1} {M : Matroid α} {L I X : Set α} (hL : L ⊆ M.loops) :
          M.IsBasis I (X ∪ L) ↔ M.IsBasis I X
          theorem Matroid.isBasis_diff_iff_isBasis_of_subset_loops {α : Type u_1} {M : Matroid α} {L I X : Set α} (hL : L ⊆ M.loops) :
          M.IsBasis I (X \ L) ↔ M.IsBasis I X
          theorem Matroid.closure_union_eq_closure_of_subset_loops {α : Type u_1} {Y : Set α} (M : Matroid α) (X : Set α) (hY : Y ⊆ M.loops) :
          M.closure (X ∪ Y) = M.closure X
          theorem Matroid.closure_diff_eq_closure_of_subset_loops {α : Type u_1} {Y : Set α} (M : Matroid α) (X : Set α) (hY : Y ⊆ M.loops) :
          M.closure (X \ Y) = M.closure X
          instance Matroid.freeOn_loopless {α : Type u_1} (E : Set α) :
          @[simp]
          theorem Matroid.OnUniv.toIsNonloop {α : Type u_1} {M : Matroid α} [M.Loopless] [M.OnUniv] (e : α) :
          @[simp]
          theorem Matroid.one_lt_girth_iff {α : Type u_1} {M : Matroid α} :
          @[simp]
          theorem Matroid.two_le_girth_iff {α : Type u_1} {M : Matroid α} :
          @[simp]
          theorem Matroid.removeLoops_isNonloop_iff {α : Type u_1} {M : Matroid α} {e : α} :
          @[simp]
          theorem Matroid.loopyOn_loops {α : Type u_1} (E : Set α) :
          @[simp]
          theorem Matroid.loopyOn_coloops {α : Type u_1} (E : Set α) :
          instance Matroid.loopyOn_coloopless {α : Type u_1} {E : Set α} :
          @[simp]
          theorem Matroid.loopyOn_not_isNonloop {α : Type u_1} (E : Set α) (e : α) :
          @[simp]
          theorem Matroid.loopyOn_removeLoops {α : Type u_1} (E : Set α) :
          @[simp]
          @[simp]
          theorem Matroid.freeOn_removeColoops {α : Type u_1} (E : Set α) :
          theorem Matroid.restrict_removeLoops {α : Type u_1} {M : Matroid α} (R : Set α) :
          @[simp]
          theorem Matroid.disjointSigma_removeLoops {α : Type u_1} {ι : Type u_3} (M : ι → Matroid α) (hdj : Pairwise (Function.onFun Disjoint fun (i : ι) => (M i).E)) :
          @[simp]
          theorem Matroid.disjointSum_removeLoops {α : Type u_1} {M N : Matroid α} (hMN : Disjoint M.E N.E) :
          @[simp]
          theorem Matroid.disjointSigma_removeColoops {α : Type u_1} {ι : Type u_3} (M : ι → Matroid α) (hdj : Pairwise (Function.onFun Disjoint fun (i : ι) => (M i).E)) :
          theorem Matroid.exists_eq_uniqueBaseOn_of_loops_union_coloops {α : Type u_1} {M : Matroid α} (hE : M.E = M.loops ∪ M.coloops) :
          ∃ (B : Set α) (E : Set α), B ⊆ E ∧ M = uniqueBaseOn B E
          theorem Matroid.exists_eq_uniqueBaseOn_or_removeColoops_rankPos {α : Type u_1} (M : Matroid α) :
          (∃ (B : Set α) (E : Set α), B ⊆ E ∧ M = uniqueBaseOn B E) ∨ M.removeColoops.RankPos
          theorem Matroid.uniqueBaseOn_loops_eq {α : Type u_1} (I E : Set α) :
          (uniqueBaseOn I E).loops = E \ I
          @[simp]
          theorem Matroid.uniqueBaseOn_coloops_eq' {α : Type u_1} (I E : Set α) :
          theorem Matroid.uniqueBaseOn_coloops_eq {α : Type u_1} {I E : Set α} (h : I ⊆ E) :
          theorem Matroid.IsNonloop.isNonloop_of_isRestriction_of_mem {α : Type u_1} {M N : Matroid α} {e : α} (he : M.IsNonloop e) (hNM : N.IsRestriction M) (heN : e ∈ N.E) :
          theorem Matroid.IsRestriction.isNonloop_iff {α : Type u_1} {M N : Matroid α} {e : α} (hNM : N.IsRestriction M) :
          theorem Matroid.IsLoop.isLoop_of_isRestriction_of_mem {α : Type u_1} {M N : Matroid α} {e : α} (he : M.IsLoop e) (hNM : N.IsRestriction M) (heN : e ∈ N.E) :
          N.IsLoop e
          def Matroid.loopComap {α : Type u_3} {β : Type u_4} (M : Matroid β) (f : α → Option β) :

          Given a function f : α → Option β and a matroid M on type β, the Matroid α obtained by pulling back M along f, and setting every e with f e = none to be a loop

          Equations
          Instances For
            @[simp]
            theorem Matroid.loopComap_ground_eq {α : Type u_1} {β : Type u_2} (M : Matroid β) (f : α → Option β) :
            theorem Matroid.loopComap_indep_iff {α : Type u_1} {β : Type u_2} {I : Set α} {M : Matroid β} {f : α → Option β} :
            (M.loopComap f).Indep I ↔ ∃ (I₀ : Set β), M.Indep I₀ ∧ Set.BijOn f I (some '' I₀)
            theorem Matroid.loopComap_closure_eq {α : Type u_1} {β : Type u_2} (M : Matroid β) (f : α → Option β) (X : Set α) :
            theorem Matroid.loopComap_subset_loops_preimage_none {α : Type u_1} {β : Type u_2} (M : Matroid β) (f : α → Option β) :