Documentation

Matroid.Parallel.Basic

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

The partition of the nonloops of M into parallel classes.

Equations
Instances For
    @[simp]
    theorem Matroid.parallelClasses_supp {α : Type u_1} (M : Matroid α) :
    @[simp]
    def Matroid.Parallel {α : Type u_1} (M : Matroid α) :
    α → α → Prop
    Equations
    Instances For
      @[simp]
      theorem Matroid.parallel_iff {α : Type u_1} {M : Matroid α} {e f : α} :
      theorem Matroid.Parallel.symm {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel e f) :
      M.Parallel f e
      theorem Matroid.parallel_comm {α : Type u_1} {M : Matroid α} {e f : α} :
      M.Parallel e f ↔ M.Parallel f e
      theorem Matroid.Parallel.trans {α : Type u_1} {M : Matroid α} {e f g : α} (h : M.Parallel e f) (h' : M.Parallel f g) :
      M.Parallel e g
      theorem Matroid.Parallel.closure_eq_closure {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel e f) :
      theorem Matroid.Parallel.isNonloop_left {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel e f) :
      theorem Matroid.Parallel.isNonloop_right {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel e f) :
      theorem Matroid.Parallel.mem_ground_left {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel e f) :
      e ∈ M.E
      theorem Matroid.Parallel.mem_ground_right {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel e f) :
      f ∈ M.E
      theorem Matroid.IsNonloop.parallel_iff_closure_eq_closure {α : Type u_1} {M : Matroid α} {e f : α} (he : M.IsNonloop e) :
      theorem Matroid.Parallel.mem_closure {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel e f) :
      theorem Matroid.Parallel.parallel_iff_left {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel e f) {x : α} :
      M.Parallel x e ↔ M.Parallel x f
      theorem Matroid.Parallel.parallel_iff_right {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel e f) {x : α} :
      M.Parallel e x ↔ M.Parallel f x
      theorem Matroid.setOf_parallel_eq_closure_diff_loops {α : Type u_1} (M : Matroid α) (e : α) :
      {f : α | M.Parallel e f} = M.closure {e} \ M.loops
      theorem Matroid.closure_eq_parallel_class_union_loops {α : Type u_1} (M : Matroid α) (e : α) :
      M.closure {e} = {f : α | M.Parallel e f} ∪ M.loops
      theorem Matroid.IsNonloop.parallel_self {α : Type u_1} {M : Matroid α} {e : α} (h : M.IsNonloop e) :
      M.Parallel e e
      @[simp]
      theorem Matroid.parallel_self_iff {α : Type u_1} {M : Matroid α} {e : α} :
      theorem Matroid.IsLoop.not_parallel {α : Type u_1} {M : Matroid α} {e : α} (h : M.IsLoop e) (f : α) :
      theorem Matroid.IsNonloop.parallel_iff_mem_closure {α : Type u_1} {M : Matroid α} {e f : α} (he : M.IsNonloop e) :
      theorem Matroid.Loopless.parallel_class_eq_closure {α : Type u_1} {M : Matroid α} (h : M.Loopless) (e : α) :
      {f : α | M.Parallel e f} = M.closure {e}
      theorem Matroid.Parallel.dep_of_ne {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel e f) (hne : e ≠ f) :
      M.Dep {e, f}
      theorem Matroid.parallel_iff_isCircuit {α : Type u_1} {M : Matroid α} {e f : α} (hef : e ≠ f) :
      theorem Matroid.Parallel.isCircuit_of_ne {α : Type u_1} {M : Matroid α} {e f : α} (hef : M.Parallel e f) (hne : e ≠ f) :
      theorem Matroid.IsNonloop.parallel_iff_dep {α : Type u_1} {M : Matroid α} {e f : α} (he : M.IsNonloop e) (hf : M.IsNonloop f) (hef : e ≠ f) :
      M.Parallel e f ↔ M.Dep {e, f}
      theorem Matroid.IsNonloop.not_parallel_iff {α : Type u_1} {M : Matroid α} {e f : α} (he : M.IsNonloop e) (hf : M.IsNonloop f) (hne : e ≠ f) :
      ¬M.Parallel e f ↔ M.Indep {e, f}
      theorem Matroid.Parallel.eq_of_indep {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel e f) (hi : M.Indep {e, f}) :
      e = f
      theorem Matroid.parallel_iff_isNonloop_isNonloop_indep_imp_eq {α : Type u_1} {M : Matroid α} {e f : α} :
      M.Parallel e f ↔ M.IsNonloop e ∧ M.IsNonloop f ∧ (M.Indep {e, f} → e = f)
      theorem Matroid.Parallel.mem_closure_iff_mem_closure {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel e f) {X : Set α} :
      e ∈ M.closure X ↔ f ∈ M.closure X
      theorem Matroid.IsNonloop.parallel_iff_forall_mem_of_mem_of_isCocircuit {α : Type u_1} {M : Matroid α} {e f : α} (henl : M.IsNonloop e) (hf : f ∈ M.E) :
      M.Parallel e f ↔ ∀ (C : Set α), M.IsCocircuit C → e ∈ C → f ∈ C
      theorem Matroid.IsCocircuit.mem_iff_mem_of_parallel {α : Type u_1} {M : Matroid α} {e f : α} {K : Set α} (hK : M.IsCocircuit K) (hef : M.Parallel e f) :
      e ∈ K ↔ f ∈ K
      theorem Matroid.parallel_dual_iff_forall_circuit {α : Type u_1} {M : Matroid α} {e f : α} (henl : M✶.IsNonloop e) (hf : f ∈ M.E) :
      M✶.Parallel e f ↔ ∀ (C : Set α), M.IsCircuit C → e ∈ C → f ∈ C
      theorem Matroid.IsNonloop.exists_isCircuit_mem_notMem {α : Type u_1} {M : Matroid α} {e f : α} (henl : M✶.IsNonloop e) (hnp : ¬M✶.Parallel e f) :
      ∃ (C : Set α), M.IsCircuit C ∧ e ∈ C ∧ f ∉ C
      theorem Matroid.Parallel.isLoop_contractElem {α : Type u_1} {M : Matroid α} {e f : α} (hef : M.Parallel e f) (hne : e ≠ f) :
      theorem Matroid.restrict_parallel_iff {α : Type u_1} {M : Matroid α} {e f : α} {R : Set α} :
      (M.restrict R).Parallel e f ↔ M.Parallel e f ∧ e ∈ R ∧ f ∈ R
      theorem Matroid.delete_parallel_iff {α : Type u_1} {M : Matroid α} {e f : α} {D : Set α} :
      (M.delete D).Parallel e f ↔ M.Parallel e f ∧ e ∉ D ∧ f ∉ D
      theorem Matroid.contract_parallel_iff {α : Type u_1} {M : Matroid α} {e f : α} {C : Set α} :
      (M.contract C).Parallel e f ↔ f ∈ M.closure (insert e C) ∧ f ∉ M.closure C
      theorem Matroid.IsRestriction.parallel_iff {α : Type u_1} {M N : Matroid α} {e f : α} (hNM : N.IsRestriction M) :
      N.Parallel e f ↔ M.Parallel e f ∧ e ∈ N.E ∧ f ∈ N.E
      theorem Matroid.Parallel.of_isRestriction {α : Type u_1} {M N : Matroid α} {e f : α} (hN : N.Parallel e f) (hNM : N.IsRestriction M) :
      M.Parallel e f
      theorem Matroid.Parallel.parallel_isRestriction {α : Type u_1} {M N : Matroid α} {e f : α} (hM : M.Parallel e f) (hNM : N.IsRestriction M) (he : e ∈ N.E) (hf : f ∈ N.E) :
      N.Parallel e f
      @[simp]
      theorem Matroid.removeLoops_parallel_iff {α : Type u_1} {M : Matroid α} {e f : α} :
      theorem Matroid.Parallel.mem_isCocircuit_of_mem {α : Type u_1} {M : Matroid α} {e f : α} {K : Set α} (hef : M.Parallel e f) (hK : M.IsCocircuit K) (he : e ∈ K) :
      f ∈ K
      @[simp]
      theorem Matroid.comap_parallel_iff {α : Type u_1} {e f : α} {β : Type u_2} {φ : α → β} {M : Matroid β} :
      (M.comap φ).Parallel e f ↔ M.Parallel (φ e) (φ f)
      @[simp]
      theorem Matroid.comapOn_parallel_iff {α : Type u_1} {e f : α} {β : Type u_2} {φ : α → β} {M : Matroid β} {E : Set α} :
      (M.comapOn E φ).Parallel e f ↔ M.Parallel (φ e) (φ f) ∧ e ∈ E ∧ f ∈ E
      theorem Matroid.IsCircuit.mem_iff_mem_of_parallel_dual {α : Type u_1} {M : Matroid α} {e f : α} {C : Set α} (h : M.IsCircuit C) (hef : M✶.Parallel e f) :
      e ∈ C ↔ f ∈ C
      theorem Matroid.IsCircuit.mem_iff_mem_of_parallel_bDual {α : Type u_1} {M : Matroid α} {e f : α} {C : Set α} {b : Bool} (h : (M.bDual b).IsCircuit C) (hef : (M.bDual !b).Parallel e f) :
      e ∈ C ↔ f ∈ C
      theorem Matroid.Dep.eq_of_subset_pair {α : Type u_1} {M : Matroid α} {e f : α} {D : Set α} (hD : M.Dep D) (hDss : D ⊆ {e, f}) (he : M.IsNonloop e) (hf : M.IsNonloop f) :
      D = {e, f}
      def Matroid.Parallel' {α : Type u_1} (M : Matroid α) (e f : α) :

      Two elements are Parallel' if they are either both loops or are Parallel isNonloops. (Sometimes allowing loops is more convenient.)

      Equations
      Instances For
        theorem Matroid.Parallel'.mem_ground_left {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel' e f) :
        e ∈ M.E
        theorem Matroid.Parallel'.mem_ground_right {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel' e f) :
        f ∈ M.E
        theorem Matroid.Parallel'.closure_eq_closure {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel' e f) :
        theorem Matroid.Parallel'.symm {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel' e f) :
        M.Parallel' f e
        theorem Matroid.parallel'_self {α : Type u_1} {M : Matroid α} {e : α} (h : e ∈ M.E) :
        M.Parallel' e e
        theorem Matroid.Parallel'.trans {α : Type u_1} {M : Matroid α} {e f g : α} (h : M.Parallel' e f) (h' : M.Parallel' f g) :
        M.Parallel' e g
        theorem Matroid.Parallel'.parallel_of_isNonloop {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel' e f) (he : M.IsNonloop e) :
        M.Parallel e f
        theorem Matroid.Parallel.parallel' {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel e f) :
        M.Parallel' e f
        theorem Matroid.Parallel'.parallel_iff {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel' e f) :
        theorem Matroid.Parallel'.isLoop_of_isLoop {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel' e f) (he : M.IsLoop e) :
        M.IsLoop f
        theorem Matroid.Parallel'.isLoop_or_parallel {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel' e f) :
        M.IsLoop e ∧ M.IsLoop f ∨ M.Parallel e f
        theorem Matroid.parallel'_iff_loops_or_parallel {α : Type u_1} {M : Matroid α} {e f : α} :
        M.Parallel' e f ↔ M.IsLoop e ∧ M.IsLoop f ∨ M.Parallel e f
        theorem Matroid.parallel'_iff_closure_eq_closure {α : Type u_1} {M : Matroid α} (e f : α) (he : e ∈ M.E := by aesop_mat) (hf : f ∈ M.E := by aesop_mat) :
        theorem Matroid.Parallel'.mem_closure {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel' e f) :
        theorem Matroid.Parallel'.eq_of_indep {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel' e f) (hef : M.Indep {e, f}) :
        e = f
        @[simp]
        theorem Matroid.parallel'_iff_parallel {α : Type u_1} {M : Matroid α} {e f : α} [M.Loopless] :
        M.Parallel' e f ↔ M.Parallel e f
        theorem Matroid.Parallel'.mem_closure_iff_mem_closure {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel' e f) {X : Set α} :
        e ∈ M.closure X ↔ f ∈ M.closure X
        theorem Matroid.Parallel'.restrict {α : Type u_1} {M : Matroid α} {e f : α} (hef : M.Parallel' e f) {R : Set α} (heR : e ∈ R) (hfR : f ∈ R) :
        theorem Matroid.Parallel'.delete {α : Type u_1} {M : Matroid α} {e f : α} (hef : M.Parallel' e f) {D : Set α} (heD : e ∉ D) (hfD : f ∉ D) :
        (M.delete D).Parallel' e f
        theorem Matroid.Parallel'.contract {α : Type u_1} {M : Matroid α} {e f : α} (hef : M.Parallel' e f) {C : Set α} (heC : e ∉ C) (hfC : f ∉ C) :
        theorem Matroid.Parallel'.of_isMinor {α : Type u_1} {M N : Matroid α} {e f : α} (hef : M.Parallel' e f) (hNM : N ≤m M) (heN : e ∈ N.E) (hfN : f ∈ N.E) :
        N.Parallel' e f
        theorem Matroid.Parallel.project {α : Type u_1} {M : Matroid α} {e f : α} (hef : M.Parallel' e f) (X : Set α) :
        (M.project X).Parallel' e f
        theorem Matroid.closure_range_of_forall_parallel'_subtype {α : Type u_1} {M : Matroid α} {X : Set α} (φ : ↑X → α) (h_para : ∀ (e : ↑X), M.Parallel' (↑e) (φ e)) :
        theorem Matroid.closure_image_of_forall_parallel'_subtype {α : Type u_1} {M : Matroid α} {X : Set α} (φ : ↑X → α) (h_para : ∀ (e : ↑X), M.Parallel' (↑e) (φ e)) (Y : Set ↑X) :
        M.closure (φ '' Y) = M.closure (Subtype.val '' Y)
        theorem Matroid.closure_image_of_forall_parallel' {α : Type u_1} {M : Matroid α} (φ : α → α) (h_para : ∀ (e : α), M.Parallel' e (φ e)) (X : Set α) :
        M.closure (φ '' X) = M.closure X
        def Matroid.isoOfMapParallelRestr {α : Type u_1} {M : Matroid α} {X Y : Set α} (φ : ↑X ≃ ↑Y) (h_para : ∀ (e : ↑X), M.Parallel' ↑e ↑(φ e)) :

        If φ : X ≃ Y is such that e and φ e are always Parallel', then φ determines a matroid isomorphism between M ↾ X and M ↾ Y.

        Equations
        Instances For
          def Matroid.isoOfMapParallel {α : Type u_1} {M : Matroid α} (φ : ↑M.E ≃ ↑M.E) (h_para : ∀ (e : ↑M.E), M.Parallel' ↑e ↑(φ e)) :
          M ≂ M

          If φ is a permutation of M.E that maps each element to something Parallel', then φ determines an automorphism of M.

          Equations
          Instances For
            noncomputable def Matroid.isoOfMapParallelBijOn {α : Type u_1} {M : Matroid α} {φ : α → α} (hφ : Set.BijOn φ M.E M.E) (h_para : ∀ e ∈ M.E, M.Parallel' e (φ e)) :
            M ≂ M

            If φ : α → α restricts to a permutation of M.E and maps each element to something Parallel', it induces an automorphism of M.

            Equations
            Instances For
              @[simp]
              theorem Matroid.isoOfMapParallelBijOn_toEquiv {α : Type u_1} {M : Matroid α} {φ : α → α} (hφ : Set.BijOn φ M.E M.E) (h_para : ∀ e ∈ M.E, M.Parallel' e (φ e)) :
              @[simp]
              theorem Matroid.isoOfMapParallelBijOn_apply {α : Type u_1} {M : Matroid α} {φ : α → α} (hφ : Set.BijOn φ M.E M.E) (h_para : ∀ e ∈ M.E, M.Parallel' e (φ e)) (x : ↑M.E) :
              (isoOfMapParallelBijOn hφ h_para) x = ⟨φ ↑x, ⋯⟩
              @[simp]
              theorem Matroid.isoOfMapParallelBijOn_apply_image {α : Type u_1} {M : Matroid α} {φ : α → α} (hφ : Set.BijOn φ M.E M.E) (h_para : ∀ e ∈ M.E, M.Parallel' e (φ e)) (X : Set ↑M.E) :
              noncomputable def Matroid.isoOfSwapParallel {α : Type u_1} {M : Matroid α} {e f : α} [DecidableEq α] (h_para : M.Parallel' e f) :
              M ≂ M

              Swapping two Parallel' matroid elements gives an automorphism

              Equations
              Instances For
                @[simp]
                theorem Matroid.isoOfSwapParallel_toEquiv_apply_coe {α : Type u_1} {M : Matroid α} {e f : α} [DecidableEq α] (h_para : M.Parallel' e f) (a✝ : ↑M.E) :
                ↑((isoOfSwapParallel h_para).toEquiv a✝) = (Equiv.swap e f) ↑a✝
                @[simp]
                theorem Matroid.isoOfSwapParallel_toEquiv_symm_apply {α : Type u_1} {M : Matroid α} {e f : α} [DecidableEq α] (h_para : M.Parallel' e f) (b : ↑M.E) :
                @[simp]
                theorem Matroid.isoOfSwapParallel_apply {α : Type u_1} {M : Matroid α} {e f : α} [DecidableEq α] (h_para : M.Parallel' e f) (x : ↑M.E) :
                (isoOfSwapParallel h_para) x = ⟨(Equiv.swap e f) ↑x, ⋯⟩
                @[simp]
                theorem Matroid.isoOfSwapParallel_apply_image {α : Type u_1} {M : Matroid α} {e f : α} [DecidableEq α] (h_para : M.Parallel' e f) (X : Set ↑M.E) :
                theorem Matroid.Indep.parallel'_substitute {α : Type u_1} {M : Matroid α} {e f : α} {I : Set α} (hI : M.Indep I) (h_para : M.Parallel' e f) (heI : e ∈ I) :
                M.Indep (insert f (I \ {e}))
                theorem Matroid.Parallel'.indep_substitute_iff {α : Type u_1} {M : Matroid α} {e f : α} {I : Set α} (h_para : M.Parallel' e f) (he : e ∈ I) (hf : f ∉ I) :
                M.Indep I ↔ M.Indep (insert f (I \ {e}))
                theorem Matroid.Parallel'.eq_mapEquiv_swap {α : Type u_1} {M : Matroid α} {e f : α} (h : M.Parallel' e f) [DecidableEq α] :
                theorem Matroid.Parallel'.contract_pair_eq {α : Type u_1} {M : Matroid α} {e f : α} (hef : M.Parallel' e f) :
                theorem Matroid.Parallel'.contract_delete_comm {α : Type u_1} {M : Matroid α} {e f : α} (hef : M.Parallel' e f) :
                theorem Matroid.Parallel'.deleteElem_eq_mapEquiv {α : Type u_1} {M : Matroid α} {e f : α} [DecidableEq α] (hef : M.Parallel' e f) :
                theorem Matroid.indep_iff_range_indep_of_paraMap {α : Type u_1} {M : Matroid α} {I : Set α} {φ : ↑I → α} (hφ : Function.Injective φ) (h_para : ∀ (e : ↑I), M.Parallel' (↑e) (φ e)) :
                theorem Matroid.Indep.paraMap_injective {α : Type u_1} {M : Matroid α} {I : Set α} (hI : M.Indep I) (φ : ↑I → α) (h_para : ∀ (e : ↑I), M.Parallel' (↑e) (φ e)) :
                theorem Matroid.Indep.indep_range_paraMap {α : Type u_1} {M : Matroid α} {I : Set α} (hI : M.Indep I) (φ : ↑I → α) (h_para : ∀ (e : ↑I), M.Parallel' (↑e) (φ e)) :
                theorem Matroid.Indep.image_paraMap {α : Type u_1} {M : Matroid α} {I : Set α} {φ : α → α} (hI : M.Indep I) (h_para : ∀ e ∈ I, M.Parallel' e (φ e)) :
                M.Indep (φ '' I)
                theorem Matroid.Indep.of_image_paraMap {α : Type u_1} {M : Matroid α} {I : Set α} {φ : α → α} (hI : M.Indep (φ '' I)) (hφ : Set.InjOn φ I) (h_para : ∀ e ∈ I, M.Parallel' e (φ e)) :
                M.Indep I
                theorem Matroid.indep_image_iff_of_injOn_paraMap {α : Type u_1} {M : Matroid α} {I : Set α} {φ : α → α} (hφ : Set.InjOn φ I) (h : ∀ e ∈ I, M.Parallel' e (φ e)) :
                M.Indep (φ '' I) ↔ M.Indep I
                theorem Matroid.mem_parallelClasses_iff {α : Type u_1} {M : Matroid α} {P : Set α} :
                P ∈ M.parallelClasses ↔ ∃ (e : α), M.IsNonloop e ∧ P = {f : α | M.Parallel e f}
                @[simp]
                theorem Matroid.parallelClasses_partOf_eq {α : Type u_1} (M : Matroid α) (e : α) :
                def Matroid.parallelPointEquiv {α : Type u_1} (M : Matroid α) :

                Parallel classes are equivalent to points.

                Equations
                Instances For
                  @[simp]
                  theorem Matroid.parallelPointEquiv_symm_apply_coe {α : Type u_1} (M : Matroid α) (P : { P : Set α // M.IsPoint P }) :
                  ↑(M.parallelPointEquiv.symm P) = ↑P \ M.loops
                  @[simp]
                  theorem Matroid.parallelPointEquiv_apply_coe {α : Type u_1} (M : Matroid α) (P : ↥M.parallelClasses) :
                  ↑(M.parallelPointEquiv P) = ↑P ∪ M.loops
                  def Matroid.Series {α : Type u_1} (M : Matroid α) (e f : α) :
                  Equations
                  Instances For