Documentation

Matroid.Representation.Basic

structure Matroid.Rep {Ξ± : Type u_1} (M : Matroid Ξ±) (𝔽 : Type u_7) (W : Type u_8) [Semiring 𝔽] [AddCommMonoid W] [Module 𝔽 W] :
Type (max u_1 u_8)

M.Rep 𝔽 W is a function from Ξ± to a module W that represents M.

Instances For
    theorem Matroid.Rep.ext {Ξ± : Type u_1} {M : Matroid Ξ±} {𝔽 : Type u_7} {W : Type u_8} {inst✝ : Semiring 𝔽} {inst✝¹ : AddCommMonoid W} {inst✝² : Module 𝔽 W} {x y : M.Rep 𝔽 W} (to_fun : x.to_fun = y.to_fun) :
    x = y
    theorem Matroid.Rep.ext_iff {Ξ± : Type u_1} {M : Matroid Ξ±} {𝔽 : Type u_7} {W : Type u_8} {inst✝ : Semiring 𝔽} {inst✝¹ : AddCommMonoid W} {inst✝² : Module 𝔽 W} {x y : M.Rep 𝔽 W} :
    @[instance_reducible]
    instance Matroid.instFunLikeRep {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] :
    FunLike (M.Rep 𝔽 W) Ξ± W
    Equations
    @[simp]
    theorem Matroid.Rep.to_fun_eq_coe {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] (v : M.Rep 𝔽 W) :
    v.to_fun = ⇑v
    theorem Matroid.Rep.indep_iff {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {I : Set Ξ±} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] (v : M.Rep 𝔽 W) :
    M.Indep I ↔ LinearIndepOn 𝔽 (⇑v) I
    theorem Matroid.Rep.onIndep {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {I : Set Ξ±} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] (v : M.Rep 𝔽 W) (hI : M.Indep I) :
    LinearIndepOn 𝔽 (⇑v) I
    theorem Matroid.Rep.injOn_of_indep {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {I : Set Ξ±} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] (v : M.Rep 𝔽 W) (hI : M.Indep I) :
    Set.InjOn (⇑v) I
    theorem Matroid.Rep.isBasis'_iff {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {I X : Set Ξ±} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] (v : M.Rep 𝔽 W) :
    M.IsBasis' I X ↔ I βŠ† X ∧ LinearIndepOn 𝔽 (⇑v) I ∧ ⇑v '' X βŠ† ↑(Submodule.span 𝔽 (⇑v '' I))
    theorem Matroid.Rep.mem_closure_iff {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {e : Ξ±} {X : Set Ξ±} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] (v : M.Rep 𝔽 W) (heE : e ∈ M.E := by aesop_mat) :
    e ∈ M.closure X ↔ v e ∈ Submodule.span 𝔽 (⇑v '' X)
    theorem Matroid.Rep.closure_eq {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] (v : M.Rep 𝔽 W) (X : Set Ξ±) :
    M.closure X = ⇑v ⁻¹' ↑(Submodule.span 𝔽 (⇑v '' X)) ∩ M.E
    theorem Matroid.Rep.mem_closure_iff' {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {e : Ξ±} {X : Set Ξ±} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] (v : M.Rep 𝔽 W) :
    e ∈ M.closure X ↔ v e ∈ Submodule.span 𝔽 (⇑v '' X) ∧ e ∈ M.E
    theorem Matroid.Rep.eq_zero_iff_not_indep {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {e : Ξ±} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] {v : M.Rep 𝔽 W} :
    v e = 0 ↔ Β¬M.Indep {e}
    theorem Matroid.Rep.eq_zero_iff {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] (v : M.Rep 𝔽 W) (e : Ξ±) (he : e ∈ M.E := by aesop_mat) :
    v e = 0 ↔ M.IsLoop e
    theorem Matroid.Rep.eq_zero_of_notMem_ground {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {e : Ξ±} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] (v : M.Rep 𝔽 W) (he : e βˆ‰ M.E) :
    v e = 0
    theorem Matroid.Rep.eq_zero_of_isLoop {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {e : Ξ±} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] (v : M.Rep 𝔽 W) (h : M.IsLoop e) :
    v e = 0
    theorem Matroid.Rep.ne_zero_of_isNonloop {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {e : Ξ±} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] (v : M.Rep 𝔽 W) (h : M.IsNonloop e) :
    v e β‰  0
    theorem Matroid.Rep.ne_zero_iff_isNonloop {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] (v : M.Rep 𝔽 W) (e : Ξ±) :
    theorem Matroid.Rep.support_subset_ground {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] (v : M.Rep 𝔽 W) :
    Function.support ⇑v βŠ† M.E
    theorem Matroid.Rep.mem_ground_of_apply_ne_zero {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {e : Ξ±} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] {v : M.Rep 𝔽 W} (hv : v e β‰  0) :
    e ∈ M.E
    theorem Matroid.Indep.rep_apply_ne_zero_of_mem {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {e : Ξ±} {I : Set Ξ±} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] {v : M.Rep 𝔽 W} (hI : M.Indep I) (heI : e ∈ I) :
    v e β‰  0
    theorem Matroid.Rep.span_le_of_closure_subset {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {X Y : Set Ξ±} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] (v : M.Rep 𝔽 W) (hXY : M.closure X βŠ† M.closure Y) :
    Submodule.span 𝔽 (⇑v '' X) ≀ Submodule.span 𝔽 (⇑v '' Y)
    theorem Matroid.Rep.closure_subset_iff_span_le {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {X Y : Set Ξ±} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] (v : M.Rep 𝔽 W) :
    M.closure X βŠ† M.closure Y ↔ Submodule.span 𝔽 (⇑v '' X) ≀ Submodule.span 𝔽 (⇑v '' Y)
    theorem Matroid.Rep.span_closure_congr {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {X Y : Set Ξ±} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] (v : M.Rep 𝔽 W) (hXY : M.closure X = M.closure Y) :
    Submodule.span 𝔽 (⇑v '' X) = Submodule.span 𝔽 (⇑v '' Y)
    theorem Matroid.Rep.span_closure_congr_iff {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {X Y : Set Ξ±} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] (v : M.Rep 𝔽 W) :
    M.closure X = M.closure Y ↔ Submodule.span 𝔽 (⇑v '' X) = Submodule.span 𝔽 (⇑v '' Y)
    @[simp]
    theorem Matroid.Rep.span_image_loops {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] (v : M.Rep 𝔽 W) :
    Submodule.span 𝔽 (⇑v '' M.loops) = βŠ₯
    theorem Matroid.Rep.skew_iff_span_disjoint {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {X Y : Set Ξ±} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] (v : M.Rep 𝔽 W) (hXE : X βŠ† M.E) (hYE : Y βŠ† M.E) :
    M.Skew X Y ↔ Disjoint (Submodule.span 𝔽 (⇑v '' X)) (Submodule.span 𝔽 (⇑v '' Y))

    Constructors #

    def Matroid.Rep.ofGround {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] (v : Ξ± β†’ W) (h_support : Function.support v βŠ† M.E) (h_indep : βˆ€ I βŠ† M.E, M.Indep I ↔ LinearIndepOn 𝔽 v I) :
    M.Rep 𝔽 W

    A function with support contained in M.E that gives the correct independent sets within the ground set gives a representation

    Equations
    Instances For
      @[simp]
      theorem Matroid.Rep.ofGround_to_fun {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] (v : Ξ± β†’ W) (h_support : Function.support v βŠ† M.E) (h_indep : βˆ€ I βŠ† M.E, M.Indep I ↔ LinearIndepOn 𝔽 v I) (a✝ : Ξ±) :
      (ofGround v h_support h_indep).to_fun a✝ = v a✝
      @[simp]
      theorem Matroid.Rep.ofGround_apply {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] (f : Ξ± β†’ W) (hs : Function.support f βŠ† M.E) (hf : βˆ€ I βŠ† M.E, M.Indep I ↔ LinearIndependent (ΞΉ := ↑I) 𝔽 (I.domRestrict f)) (a : Ξ±) :
      (ofGround f hs hf) a = f a
      noncomputable def Matroid.Rep.ofSubtypeFun {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] (f : ↑M.E β†’ W) [DecidablePred fun (x : Ξ±) => x ∈ M.E] (hf : βˆ€ (I : Set ↑M.E), M.Indep (Subtype.val '' I) ↔ LinearIndepOn 𝔽 f I) :
      M.Rep 𝔽 W

      A function from M.E to a module determines a representation

      Equations
      Instances For
        @[simp]
        theorem Matroid.Rep.ofSubtypeFun_to_fun {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] (f : ↑M.E β†’ W) [DecidablePred fun (x : Ξ±) => x ∈ M.E] (hf : βˆ€ (I : Set ↑M.E), M.Indep (Subtype.val '' I) ↔ LinearIndepOn 𝔽 f I) (a : Ξ±) :
        (ofSubtypeFun f hf).to_fun a = if ha : a ∈ M.E then f ⟨a, ha⟩ else 0
        noncomputable def Matroid.Rep.restrict {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] (v : M.Rep 𝔽 W) (X : Set Ξ±) :
        (M.restrict X).Rep 𝔽 W

        A representation gives a representation of any restriction

        Equations
        Instances For
          @[simp]
          theorem Matroid.Rep.restrict_apply {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] (v : M.Rep 𝔽 W) (X : Set Ξ±) :
          ⇑(v.restrict X) = X.indicator ⇑v
          @[simp]
          theorem Matroid.Rep.ne_zero {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] [M.Loopless] [M.OnUniv] (v : M.Rep 𝔽 W) (e : Ξ±) :
          v e β‰  0
          theorem Matroid.Rep.loopless_iff {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] (v : M.Rep 𝔽 W) :
          M.Loopless ↔ βˆ€ e ∈ M.E, v e β‰  0
          theorem Matroid.Rep.parallel_iff {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {e f : Ξ±} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] (v : M.Rep 𝔽 W) (he : M.IsNonloop e) :
          M.Parallel e f ↔ βˆƒ (c : 𝔽), c β‰  0 ∧ c β€’ v f = v e
          theorem Matroid.Rep.parallel_iff' {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {e f : Ξ±} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] (v : M.Rep 𝔽 W) (he : M.IsNonloop e) :
          M.Parallel e f ↔ βˆƒ (c : 𝔽ˣ), c β€’ v f = v e
          theorem Matroid.Rep.simple_iff {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] [M.RankPos] (v : M.Rep 𝔽 W) :
          M.Simple ↔ βˆ€ {e f : Ξ±}, e ∈ M.E β†’ f ∈ M.E β†’ βˆ€ (c : 𝔽), c β€’ v f = v e β†’ e = f
          theorem Matroid.Rep.injOn_of_simple {Ξ± : Type u_1} {W : Type u_3} {𝔽 : Type u_5} {M : Matroid Ξ±} [DivisionRing 𝔽] [AddCommGroup W] [Module 𝔽 W] [Module.IsTorsionFree 𝔽 W] (v : M.Rep 𝔽 W) [h : M.Simple] :
          Set.InjOn (⇑v) M.E