Documentation

Mathlib.Data.Matroid.Loop

Matroid loops and coloops #

Loops #

A 'loop' of a matroid M is an element e satisfying one of the following equivalent conditions:

In many mathematical contexts, loops can be thought of as 'trivial' or 'zero' elements; For linearly representable matroids, they correspond to the zero vector, and for graphic matroids, they correspond to edges incident with just one vertex (aka 'loops'). As trivial as they are, loops can be created from matroids with no loops by taking minors or duals, so in many contexts it is unreasonable to simply forbid loops from appearing. For M : Matroid α, this file defines a set Matroid.loops M : Set α, as well as predicates Matroid.IsLoop M : α → Prop and Matroid.IsNonloop M : α → Prop, and provides API for interacting with them.

Coloops #

The dual notion of a loop is a 'coloop'. Geometrically, these can be thought of elements that are skew to the remainder of the matroid. Coloops in graphic matroids are 'bridge' edges of the graph, and coloops in linearly representable matroids are vectors not spanned by the other vectors in the elements of the matroid. Coloops also have many equivalent definitions in abstract matroid language; a coloop is an element of M.E if any of the following equivalent conditions holds :

Main Declarations #

For M : Matroid α:

def Matroid.loops {α : Type u_1} (M : Matroid α) :
Set α

Matroid.loops M is the closure of the empty set.

Equations
Instances For
    theorem Matroid.loops_subset_ground {α : Type u_1} (M : Matroid α) :
    M.loops M.E
    def Matroid.IsLoop {α : Type u_1} (M : Matroid α) (e : α) :

    A 'loop' is a member of the closure of the empty set

    Equations
    Instances For
      theorem Matroid.isLoop_iff {α : Type u_1} {M : Matroid α} {e : α} :
      theorem Matroid.closure_empty {α : Type u_1} (M : Matroid α) :
      theorem Matroid.IsLoop.mem_ground {α : Type u_1} {M : Matroid α} {e : α} (he : M.IsLoop e) :
      e M.E
      theorem Matroid.isLoop_tfae {α : Type u_1} (M : Matroid α) (e : α) :
      [M.IsLoop e, e M.closure , M.IsCircuit {e}, M.Dep {e}, ∀ ⦃B : Set α⦄, M.IsBase Be M.E \ B].TFAE
      @[simp]
      theorem Matroid.singleton_dep {α : Type u_1} {M : Matroid α} {e : α} :
      M.Dep {e} M.IsLoop e
      theorem Matroid.IsLoop.dep {α : Type u_1} {M : Matroid α} {e : α} :
      M.IsLoop eM.Dep {e}

      Alias of the reverse direction of Matroid.singleton_dep.

      theorem Matroid.singleton_not_indep {α : Type u_1} {M : Matroid α} {e : α} (he : e M.E := by aesop_mat) :
      @[simp]
      theorem Matroid.singleton_isCircuit {α : Type u_1} {M : Matroid α} {e : α} :
      theorem Matroid.IsLoop.isCircuit {α : Type u_1} {M : Matroid α} {e : α} :
      M.IsLoop eM.IsCircuit {e}

      Alias of the reverse direction of Matroid.singleton_isCircuit.

      theorem Matroid.isLoop_iff_forall_mem_compl_isBase {α : Type u_1} {M : Matroid α} {e : α} :
      M.IsLoop e ∀ (B : Set α), M.IsBase Be M.E \ B
      theorem Matroid.isLoop_iff_forall_not_mem_isBase {α : Type u_1} {M : Matroid α} {e : α} (he : e M.E := by aesop_mat) :
      M.IsLoop e ∀ (B : Set α), M.IsBase BeB
      theorem Matroid.IsLoop.mem_closure {α : Type u_1} {M : Matroid α} {e : α} (he : M.IsLoop e) (X : Set α) :
      e M.closure X
      theorem Matroid.IsLoop.mem_of_isFlat {α : Type u_1} {M : Matroid α} {e : α} (he : M.IsLoop e) {F : Set α} (hF : M.IsFlat F) :
      e F
      theorem Matroid.IsFlat.loops_subset {α : Type u_1} {M : Matroid α} {F : Set α} (hF : M.IsFlat F) :
      theorem Matroid.IsLoop.dep_of_mem {α : Type u_1} {M : Matroid α} {e : α} {X : Set α} (he : M.IsLoop e) (h : e X) (hXE : X M.E := by aesop_mat) :
      M.Dep X
      theorem Matroid.IsLoop.not_indep_of_mem {α : Type u_1} {M : Matroid α} {e : α} {X : Set α} (he : M.IsLoop e) (h : e X) :
      theorem Matroid.IsLoop.not_mem_of_indep {α : Type u_1} {M : Matroid α} {e : α} {I : Set α} (he : M.IsLoop e) (hI : M.Indep I) :
      eI
      theorem Matroid.IsLoop.eq_of_isCircuit_mem {α : Type u_1} {M : Matroid α} {e : α} {C : Set α} (he : M.IsLoop e) (hC : M.IsCircuit C) (h : e C) :
      C = {e}
      theorem Matroid.Indep.disjoint_loops {α : Type u_1} {M : Matroid α} {I : Set α} (hI : M.Indep I) :
      theorem Matroid.Indep.eq_empty_of_subset_loops {α : Type u_1} {M : Matroid α} {I : Set α} (hI : M.Indep I) (h : I M.loops) :
      I =
      @[simp]
      theorem Matroid.isBasis_loops_iff {α : Type u_1} {M : Matroid α} {I : Set α} :
      theorem Matroid.closure_eq_loops_of_subset {α : Type u_1} {M : Matroid α} {X : Set α} (h : X M.loops) :
      theorem Matroid.isBasis_iff_empty_of_subset_loops {α : Type u_1} {M : Matroid α} {X I : Set α} (hX : X M.loops) :
      M.IsBasis I X I =
      theorem Matroid.IsLoop.closure {α : Type u_1} {M : Matroid α} {e : α} (he : M.IsLoop e) :
      theorem Matroid.isLoop_iff_closure_eq_loops {α : Type u_1} {M : Matroid α} {e : α} (he : e M.E := by aesop_mat) :
      @[simp]
      theorem Matroid.closure_loops {α : Type u_1} (M : Matroid α) :
      @[simp]
      theorem Matroid.closure_union_loops_eq {α : Type u_1} (M : Matroid α) (X : Set α) :
      M.closure (X M.loops) = M.closure X
      @[simp]
      theorem Matroid.closure_loops_union_eq {α : Type u_1} (M : Matroid α) (X : Set α) :
      M.closure (M.loops X) = M.closure X
      @[simp]
      theorem Matroid.closure_diff_loops_eq {α : Type u_1} (M : Matroid α) (X : Set α) :
      M.closure (X \ M.loops) = M.closure X
      theorem Matroid.restrict_loops_eq' {α : Type u_1} (M : Matroid α) (R : Set α) :
      (M.restrict R).loops = M.loops R R \ M.E

      A version of restrict_loops_eq without the hypothesis that R ⊆ M.E

      theorem Matroid.restrict_loops_eq {α : Type u_1} {M : Matroid α} {R : Set α} (hR : R M.E) :
      @[simp]
      theorem Matroid.restrict_isLoop_iff {α : Type u_1} {M : Matroid α} {e : α} {R : Set α} :
      (M.restrict R).IsLoop e e R (M.IsLoop e eM.E)
      theorem Matroid.IsRestriction.isLoop_iff {α : Type u_1} {M N : Matroid α} {e : α} (hNM : N.IsRestriction M) :
      N.IsLoop e e N.E M.IsLoop e
      theorem Matroid.IsLoop.of_isRestriction {α : Type u_1} {M N : Matroid α} {e : α} (he : N.IsLoop e) (hNM : N.IsRestriction M) :
      M.IsLoop e
      theorem Matroid.IsLoop.isLoop_isRestriction {α : Type u_1} {M N : Matroid α} {e : α} (he : M.IsLoop e) (hNM : N.IsRestriction M) (heN : e N.E) :
      N.IsLoop e
      @[simp]
      theorem Matroid.map_loops {α : Type u_1} {β : Type u_2} {M : Matroid α} {f : αβ} {hf : Set.InjOn f M.E} :
      (M.map f hf).loops = f '' M.loops
      @[simp]
      theorem Matroid.map_isLoop_iff {α : Type u_1} {β : Type u_2} {M : Matroid α} {e : α} {f : αβ} {hf : Set.InjOn f M.E} (he : e M.E := by aesop_mat) :
      (M.map f hf).IsLoop (f e) M.IsLoop e
      @[simp]
      theorem Matroid.mapEmbedding_isLoop_iff {α : Type u_1} {β : Type u_2} {M : Matroid α} {e : α} {f : α β} :
      (M.mapEmbedding f).IsLoop (f e) M.IsLoop e
      @[simp]
      theorem Matroid.comap_loops {α : Type u_1} {β : Type u_2} {M : Matroid β} {f : αβ} :
      @[simp]
      theorem Matroid.comap_isLoop_iff {α : Type u_1} {β : Type u_2} {e : α} {M : Matroid β} {f : αβ} :
      (M.comap f).IsLoop e M.IsLoop (f e)
      @[simp]
      theorem Matroid.loopyOn_isLoop_iff {α : Type u_1} {e : α} {E : Set α} :
      (loopyOn E).IsLoop e e E
      @[simp]
      theorem Matroid.freeOn_not_isLoop {α : Type u_1} (E : Set α) (e : α) :
      @[simp]
      theorem Matroid.uniqueBaseOn_isLoop_iff {α : Type u_1} {e : α} {I E : Set α} :
      (uniqueBaseOn I E).IsLoop e e E \ I
      structure Matroid.IsNonloop {α : Type u_1} (M : Matroid α) (e : α) :

      M.IsNonloop e means that e is an element of M.E but not a loop of M.

      Instances For
        theorem Matroid.isNonloop_iff {α : Type u_1} (M : Matroid α) (e : α) :
        theorem Matroid.IsLoop.not_isNonloop {α : Type u_1} {M : Matroid α} {e : α} (he : M.IsLoop e) :
        theorem Matroid.isNonloop_of_not_isLoop {α : Type u_1} {M : Matroid α} {e : α} (he : e M.E := by aesop_mat) (h : ¬M.IsLoop e) :
        theorem Matroid.isLoop_of_not_isNonloop {α : Type u_1} {M : Matroid α} {e : α} (he : e M.E := by aesop_mat) (h : ¬M.IsNonloop e) :
        M.IsLoop e
        @[simp]
        theorem Matroid.not_isLoop_iff {α : Type u_1} {M : Matroid α} {e : α} (he : e M.E := by aesop_mat) :
        @[simp]
        theorem Matroid.not_isNonloop_iff {α : Type u_1} {M : Matroid α} {e : α} (he : e M.E := by aesop_mat) :
        theorem Matroid.isNonloop_iff_mem_compl_loops {α : Type u_1} {M : Matroid α} {e : α} :
        M.IsNonloop e e M.E \ M.loops
        theorem Matroid.setOf_isNonloop_eq {α : Type u_1} (M : Matroid α) :
        {e : α | M.IsNonloop e} = M.E \ M.loops
        theorem Matroid.not_isNonloop_iff_closure {α : Type u_1} {M : Matroid α} {e : α} :
        theorem Matroid.isLoop_or_isNonloop {α : Type u_1} (M : Matroid α) (e : α) (he : e M.E := by aesop_mat) :
        @[simp]
        theorem Matroid.indep_singleton {α : Type u_1} {M : Matroid α} {e : α} :
        theorem Matroid.IsNonloop.indep {α : Type u_1} {M : Matroid α} {e : α} :
        M.IsNonloop eM.Indep {e}

        Alias of the reverse direction of Matroid.indep_singleton.

        theorem Matroid.Indep.isNonloop {α : Type u_1} {M : Matroid α} {e : α} :
        M.Indep {e}M.IsNonloop e

        Alias of the forward direction of Matroid.indep_singleton.

        theorem Matroid.Indep.isNonloop_of_mem {α : Type u_1} {M : Matroid α} {e : α} {I : Set α} (hI : M.Indep I) (h : e I) :
        theorem Matroid.IsNonloop.exists_mem_isBase {α : Type u_1} {M : Matroid α} {e : α} (he : M.IsNonloop e) :
        ∃ (B : Set α), M.IsBase B e B
        theorem Matroid.IsCocircuit.isNonloop_of_mem {α : Type u_1} {M : Matroid α} {e : α} {K : Set α} (hK : M.IsCocircuit K) (he : e K) :
        theorem Matroid.IsCircuit.isNonloop_of_mem {α : Type u_1} {M : Matroid α} {e : α} {C : Set α} (hC : M.IsCircuit C) (hC' : C.Nontrivial) (he : e C) :
        theorem Matroid.IsCircuit.isNonloop_of_mem_of_one_lt_card {α : Type u_1} {M : Matroid α} {e : α} {C : Set α} (hC : M.IsCircuit C) (h : 1 < C.encard) (he : e C) :
        theorem Matroid.isNonloop_of_not_mem_closure {α : Type u_1} {M : Matroid α} {e : α} {X : Set α} (h : eM.closure X) (he : e M.E := by aesop_mat) :
        theorem Matroid.isNonloop_iff_not_mem_loops {α : Type u_1} {M : Matroid α} {e : α} (he : e M.E := by aesop_mat) :
        M.IsNonloop e eM.loops
        theorem Matroid.IsNonloop.mem_closure_singleton {α : Type u_1} {M : Matroid α} {e f : α} (he : M.IsNonloop e) (hef : e M.closure {f}) :
        theorem Matroid.IsNonloop.mem_closure_comm {α : Type u_1} {M : Matroid α} {e f : α} (he : M.IsNonloop e) (hf : M.IsNonloop f) :
        theorem Matroid.IsNonloop.isNonloop_of_mem_closure {α : Type u_1} {M : Matroid α} {e f : α} (he : M.IsNonloop e) (hef : e M.closure {f}) :
        theorem Matroid.IsNonloop.closure_eq_of_mem_closure {α : Type u_1} {M : Matroid α} {e f : α} (he : M.IsNonloop e) (hef : e M.closure {f}) :
        theorem Matroid.IsNonloop.closure_eq_closure_iff_isCircuit_of_ne {α : Type u_1} {M : Matroid α} {e f : α} (he : M.IsNonloop e) (hef : e f) :

        Two distinct nonloops with the same closure form a circuit.

        theorem Matroid.IsNonloop.closure_eq_closure_iff_eq_or_dep {α : Type u_1} {M : Matroid α} {e f : α} (he : M.IsNonloop e) (hf : M.IsNonloop f) :
        M.closure {e} = M.closure {f} e = f ¬M.Indep {e, f}
        theorem Matroid.exists_isNonloop {α : Type u_1} (M : Matroid α) [M.RankPos] :
        ∃ (e : α), M.IsNonloop e
        theorem Matroid.IsNonloop.rankPos {α : Type u_1} {M : Matroid α} {e : α} (h : M.IsNonloop e) :
        @[simp]
        theorem Matroid.restrict_isNonloop_iff {α : Type u_1} {M : Matroid α} {e : α} {R : Set α} :
        theorem Matroid.IsNonloop.of_restrict {α : Type u_1} {M : Matroid α} {e : α} {R : Set α} (h : (M.restrict R).IsNonloop e) :
        theorem Matroid.IsNonloop.of_isRestriction {α : Type u_1} {M N : Matroid α} {e : α} (h : N.IsNonloop e) (hNM : N.IsRestriction M) :
        theorem Matroid.isNonloop_iff_restrict_of_mem {α : Type u_1} {M : Matroid α} {e : α} {R : Set α} (he : e R) :
        @[simp]
        theorem Matroid.comap_isNonloop_iff {α : Type u_1} {β : Type u_2} {e : α} {M : Matroid β} {f : αβ} :
        (M.comap f).IsNonloop e M.IsNonloop (f e)
        @[simp]
        theorem Matroid.freeOn_isNonloop_iff {α : Type u_1} {e : α} {E : Set α} :
        @[simp]
        theorem Matroid.uniqueBaseOn_isNonloop_iff {α : Type u_1} {e : α} {I E : Set α} :
        theorem Matroid.IsNonloop.exists_mem_isCocircuit {α : Type u_1} {M : Matroid α} {e : α} (he : M.IsNonloop e) :
        ∃ (K : Set α), M.IsCocircuit K e K
        @[simp]
        theorem Matroid.closure_inter_setOf_isNonloop_eq {α : Type u_1} (M : Matroid α) (X : Set α) :
        M.closure (X {e : α | M.IsNonloop e}) = M.closure X
        def Matroid.IsColoop {α : Type u_1} (M : Matroid α) (e : α) :

        A coloop is a loop of the dual matroid. See Matroid.isColoop_tfae for a number of equivalent definitions.

        Equations
        Instances For
          def Matroid.coloops {α : Type u_1} (M : Matroid α) :
          Set α

          M.coloops is the set of coloops of M.

          Equations
          Instances For
            theorem Matroid.IsColoop.mem_ground {α : Type u_1} {M : Matroid α} {e : α} (he : M.IsColoop e) :
            e M.E
            theorem Matroid.coloops_subset_ground {α : Type u_1} (M : Matroid α) :
            theorem Matroid.isColoop_iff_mem_loops {α : Type u_1} {M : Matroid α} {e : α} :
            @[simp]
            theorem Matroid.dual_loops {α : Type u_1} {M : Matroid α} :
            @[simp]
            theorem Matroid.dual_coloops {α : Type u_1} {M : Matroid α} :
            theorem Matroid.IsColoop.dual_isLoop {α : Type u_1} {M : Matroid α} {e : α} (he : M.IsColoop e) :
            theorem Matroid.IsColoop.isCocircuit {α : Type u_1} {M : Matroid α} {e : α} (he : M.IsColoop e) :
            theorem Matroid.IsLoop.dual_isColoop {α : Type u_1} {M : Matroid α} {e : α} (he : M.IsLoop e) :
            @[simp]
            theorem Matroid.dual_isColoop_iff_isLoop {α : Type u_1} {M : Matroid α} {e : α} :
            @[simp]
            theorem Matroid.dual_isLoop_iff_isColoop {α : Type u_1} {M : Matroid α} {e : α} :
            theorem Matroid.singleton_isCocircuit {α : Type u_1} {M : Matroid α} {e : α} :
            theorem Matroid.isColoop_tfae {α : Type u_1} (M : Matroid α) (e : α) :
            [M.IsColoop e, e M.coloops, M.IsCocircuit {e}, ∀ ⦃B : Set α⦄, M.IsBase Be B, (∀ ⦃C : Set α⦄, M.IsCircuit CeC) e M.E, ∀ (X : Set α), e M.closure X e X, ¬M.Spanning (M.E \ {e})].TFAE
            theorem Matroid.isColoop_iff_forall_mem_isBase {α : Type u_1} {M : Matroid α} {e : α} :
            M.IsColoop e ∀ ⦃B : Set α⦄, M.IsBase Be B
            theorem Matroid.IsBase.mem_of_isColoop {α : Type u_1} {M : Matroid α} {e : α} {B : Set α} (hB : M.IsBase B) (he : M.IsColoop e) :
            e B
            theorem Matroid.IsColoop.mem_of_isBase {α : Type u_1} {M : Matroid α} {e : α} {B : Set α} (he : M.IsColoop e) (hB : M.IsBase B) :
            e B
            theorem Matroid.IsBase.coloops_subset {α : Type u_1} {M : Matroid α} {B : Set α} (hB : M.IsBase B) :
            theorem Matroid.IsColoop.isNonloop {α : Type u_1} {M : Matroid α} {e : α} (h : M.IsColoop e) :
            theorem Matroid.IsLoop.not_isColoop {α : Type u_1} {M : Matroid α} {e : α} (h : M.IsLoop e) :
            theorem Matroid.IsColoop.not_mem_isCircuit {α : Type u_1} {M : Matroid α} {e : α} {C : Set α} (he : M.IsColoop e) (hC : M.IsCircuit C) :
            eC
            theorem Matroid.IsCircuit.disjoint_coloops {α : Type u_1} {M : Matroid α} {C : Set α} (hC : M.IsCircuit C) :
            theorem Matroid.isColoop_iff_forall_not_mem_isCircuit {α : Type u_1} {M : Matroid α} {e : α} (he : e M.E := by aesop_mat) :
            M.IsColoop e ∀ ⦃C : Set α⦄, M.IsCircuit CeC
            theorem Matroid.isColoop_iff_forall_mem_compl_isCircuit {α : Type u_1} {M : Matroid α} {e : α} [M.RankPos] :
            M.IsColoop e ∀ (C : Set α), M.IsCircuit Ce M.E \ C
            theorem Matroid.IsCircuit.not_isColoop_of_mem {α : Type u_1} {M : Matroid α} {e : α} {C : Set α} (hC : M.IsCircuit C) (heC : e C) :
            theorem Matroid.isColoop_iff_forall_mem_closure_iff_mem {α : Type u_1} {M : Matroid α} {e : α} :
            M.IsColoop e ∀ (X : Set α), e M.closure X e X
            theorem Matroid.isColoop_iff_forall_mem_closure_iff_mem' {α : Type u_1} {M : Matroid α} {e : α} :
            M.IsColoop e (∀ XM.E, e M.closure X e X) e M.E

            A version of Matroid.isColoop_iff_forall_mem_closure_iff_mem where we only quantify over subsets of the ground set.

            theorem Matroid.IsColoop.mem_closure_iff_mem {α : Type u_1} {M : Matroid α} {e : α} {X : Set α} (he : M.IsColoop e) :
            e M.closure X e X
            theorem Matroid.IsColoop.mem_of_mem_closure {α : Type u_1} {M : Matroid α} {e : α} {X : Set α} (he : M.IsColoop e) (heX : e M.closure X) :
            e X
            theorem Matroid.isColoop_iff_diff_not_spanning {α : Type u_1} {M : Matroid α} {e : α} :
            theorem Matroid.IsColoop.diff_not_spanning {α : Type u_1} {M : Matroid α} {e : α} :
            M.IsColoop e¬M.Spanning (M.E \ {e})

            Alias of the forward direction of Matroid.isColoop_iff_diff_not_spanning.

            theorem Matroid.isColoop_iff_diff_closure {α : Type u_1} {M : Matroid α} {e : α} :
            M.IsColoop e M.closure (M.E \ {e}) M.E
            theorem Matroid.isColoop_iff_not_mem_closure_compl {α : Type u_1} {M : Matroid α} {e : α} (he : e M.E := by aesop_mat) :
            M.IsColoop e eM.closure (M.E \ {e})
            theorem Matroid.IsBase.isColoop_iff_forall_not_mem_fundCircuit {α : Type u_1} {M : Matroid α} {e : α} {B : Set α} (hB : M.IsBase B) (he : e B) :
            M.IsColoop e xM.E \ B, eM.fundCircuit x B
            theorem Matroid.IsBasis'.inter_coloops_subset {α : Type u_1} {M : Matroid α} {X I : Set α} (hIX : M.IsBasis' I X) :
            theorem Matroid.IsBasis.inter_coloops_subset {α : Type u_1} {M : Matroid α} {X I : Set α} (hIX : M.IsBasis I X) :
            theorem Matroid.exists_mem_isCircuit_of_not_isColoop {α : Type u_1} {M : Matroid α} {e : α} (heE : e M.E) (he : ¬M.IsColoop e) :
            ∃ (C : Set α), M.IsCircuit C e C
            @[simp]
            theorem Matroid.closure_inter_coloops_eq {α : Type u_1} (M : Matroid α) (X : Set α) :
            theorem Matroid.closure_inter_eq_of_subset_coloops {α : Type u_1} {M : Matroid α} {K : Set α} (X : Set α) (hK : K M.coloops) :
            M.closure X K = X K
            theorem Matroid.closure_union_eq_of_subset_coloops {α : Type u_1} {M : Matroid α} {K : Set α} (X : Set α) (hK : K M.coloops) :
            M.closure (X K) = M.closure X K
            theorem Matroid.closure_insert_isColoop_eq {α : Type u_1} {M : Matroid α} {e : α} (X : Set α) (he : M.IsColoop e) :
            M.closure (insert e X) = insert e (M.closure X)
            theorem Matroid.closure_eq_of_subset_coloops {α : Type u_1} {M : Matroid α} {K : Set α} (hK : K M.coloops) :
            M.closure K = K M.loops
            theorem Matroid.closure_diff_eq_of_subset_coloops {α : Type u_1} {M : Matroid α} {K : Set α} (X : Set α) (hK : K M.coloops) :
            M.closure (X \ K) = M.closure X \ K
            theorem Matroid.closure_disjoint_of_disjoint_of_subset_coloops {α : Type u_1} {M : Matroid α} {X K : Set α} (hXK : Disjoint X K) (hK : K M.coloops) :
            theorem Matroid.closure_union_coloops_eq {α : Type u_1} (M : Matroid α) (X : Set α) :
            theorem Matroid.IsColoop.not_mem_closure_of_not_mem {α : Type u_1} {M : Matroid α} {e : α} {X : Set α} (he : M.IsColoop e) (hX : eX) :
            eM.closure X
            theorem Matroid.IsColoop.insert_indep_of_indep {α : Type u_1} {M : Matroid α} {e : α} {I : Set α} (he : M.IsColoop e) (hI : M.Indep I) :
            M.Indep (insert e I)
            theorem Matroid.union_indep_iff_indep_of_subset_coloops {α : Type u_1} {M : Matroid α} {I K : Set α} (hK : K M.coloops) :
            M.Indep (I K) M.Indep I
            theorem Matroid.diff_indep_iff_indep_of_subset_coloops {α : Type u_1} {M : Matroid α} {I K : Set α} (hK : K M.coloops) :
            M.Indep (I \ K) M.Indep I
            @[simp]
            theorem Matroid.union_coloops_indep_iff {α : Type u_1} {M : Matroid α} {I : Set α} :
            M.Indep (I M.coloops) M.Indep I
            @[simp]
            theorem Matroid.diff_coloops_indep_iff {α : Type u_1} {M : Matroid α} {I : Set α} :
            M.Indep (I \ M.coloops) M.Indep I
            theorem Matroid.coloops_indep {α : Type u_1} (M : Matroid α) :
            theorem Matroid.ext_indep_disjoint_loops_coloops {α : Type u_1} {M₁ M₂ : Matroid α} (hE : M₁.E = M₂.E) (hl : M₁.loops = M₂.loops) (hc : M₁.coloops = M₂.coloops) (h : IM₁.E, Disjoint I (M₁.loops M₁.coloops) → (M₁.Indep I M₂.Indep I)) :
            M₁ = M₂

            If two matroids agree on loops and coloops, and have the same independent sets after loops/coloops are removed, they are equal.