File: Mathlib/Data/Matroid/Sum.lean

full_name: Matroid.sigma
code: /-- The sum of an indexed collection of matroids, as a matroid on the sigma-type. -/
protected def sigma (M : (i : ι) → Matroid (α i)) : Matroid ((i : ι) × α i) 
goal: Matroid ((i : ι) × α i)

full_name: Matroid.sigma_indep_iff
code: @[simp] lemma sigma_indep_iff {I} :
    (Matroid.sigma M).Indep I ↔ ∀ i, (M i).Indep (Sigma.mk i ⁻¹' I) 
goal: (Matroid.sigma M).Indep I ↔ ∀ (i : ι), (M i).Indep (Sigma.mk i ⁻¹' I)

full_name: Matroid.sigma_base_iff
code: @[simp] lemma sigma_base_iff {B} :
    (Matroid.sigma M).Base B ↔ ∀ i, (M i).Base (Sigma.mk i ⁻¹' B) 
goal: (Matroid.sigma M).Base B ↔ ∀ (i : ι), (M i).Base (Sigma.mk i ⁻¹' B)

full_name: Matroid.sigma_ground_eq
code: @[simp] lemma sigma_ground_eq : (Matroid.sigma M).E = univ.sigma fun i ↦ (M i).E 
goal: (Matroid.sigma M).E = Set.univ.sigma fun i => (M i).E

full_name: Matroid.sigma_basis_iff
code: @[simp] lemma sigma_basis_iff {I X} :
    (Matroid.sigma M).Basis I X ↔ ∀ i, (M i).Basis (Sigma.mk i ⁻¹' I) (Sigma.mk i ⁻¹' X) 
goal: (Matroid.sigma M).Basis I X ↔ ∀ (i : ι), (M i).Basis (Sigma.mk i ⁻¹' I) (Sigma.mk i ⁻¹' X)

full_name: Matroid.Finitary.sigma
code: lemma Finitary.sigma (h : ∀ i, (M i).Finitary) : (Matroid.sigma M).Finitary 
goal: (Matroid.sigma M).Finitary

full_name: Matroid.sum'
code: /-- The sum of an indexed family `M : ι → Matroid α` of matroids on the same type,
as a matroid on the product type `ι × α`. -/
protected def sum' (M : ι → Matroid α) : Matroid (ι × α) 
goal: Matroid (ι × α)

full_name: Matroid.sum'_indep_iff
code: @[simp] lemma sum'_indep_iff {I} :
    (Matroid.sum' M).Indep I ↔ ∀ i, (M i).Indep (Prod.mk i ⁻¹' I) 
goal: (Matroid.sum' M).Indep I ↔ ∀ (i : ι), (M i).Indep (Prod.mk i ⁻¹' I)

full_name: Matroid.sum'_ground_eq
code: @[simp] lemma sum'_ground_eq (M : ι → Matroid α) :
    (Matroid.sum' M).E = ⋃ i, Prod.mk i '' (M i).E 
goal: (Matroid.sum' M).E = ⋃ i, Prod.mk i '' (M i).E

full_name: Matroid.sum'_base_iff
code: @[simp] lemma sum'_base_iff {B} : (Matroid.sum' M).Base B ↔ ∀ i, (M i).Base (Prod.mk i ⁻¹' B) 
goal: (Matroid.sum' M).Base B ↔ ∀ (i : ι), (M i).Base (Prod.mk i ⁻¹' B)

full_name: Matroid.sum'_basis_iff
code: @[simp] lemma sum'_basis_iff {I X} :
    (Matroid.sum' M).Basis I X ↔ ∀ i, (M i).Basis (Prod.mk i ⁻¹' I) (Prod.mk i ⁻¹' X) 
goal: (Matroid.sum' M).Basis I X ↔ ∀ (i : ι), (M i).Basis (Prod.mk i ⁻¹' I) (Prod.mk i ⁻¹' X)

full_name: Matroid.Finitary.sum'
code: lemma Finitary.sum' (h : ∀ i, (M i).Finitary) : (Matroid.sum' M).Finitary 
goal: (Matroid.sum' M).Finitary

full_name: Matroid.disjointSigma
code: /-- The sum of an indexed collection of matroids on `α` with pairwise disjoint ground sets,
as a matroid on `α` -/
protected def disjointSigma (M : ι → Matroid α) (h : Pairwise (Disjoint on fun i ↦ (M i).E)) :
    Matroid α 
goal: Matroid α

full_name: Matroid.disjointSigma_ground_eq
code: @[simp] lemma disjointSigma_ground_eq {h} : (Matroid.disjointSigma M h).E = ⋃ i : ι, (M i).E 
goal: (Matroid.disjointSigma M h).E = ⋃ i, (M i).E

full_name: Matroid.disjointSigma_indep_iff
code: @[simp] lemma disjointSigma_indep_iff {h I} :
    (Matroid.disjointSigma M h).Indep I ↔
      (∀ i, (M i).Indep (I ∩ (M i).E)) ∧ I ⊆ ⋃ i, (M i).E 
goal: (Matroid.disjointSigma M h).Indep I ↔ (∀ (i : ι), (M i).Indep (I ∩ (M i).E)) ∧ I ⊆ ⋃ i, (M i).E

full_name: Matroid.disjointSigma_base_iff
code: @[simp] lemma disjointSigma_base_iff {h B} :
    (Matroid.disjointSigma M h).Base B ↔
      (∀ i, (M i).Base (B ∩ (M i).E)) ∧ B ⊆ ⋃ i, (M i).E 
goal: (Matroid.disjointSigma M h).Base B ↔ (∀ (i : ι), (M i).Base (B ∩ (M i).E)) ∧ B ⊆ ⋃ i, (M i).E

full_name: Matroid.disjointSigma_basis_iff
code: @[simp] lemma disjointSigma_basis_iff {h I X} :
    (Matroid.disjointSigma M h).Basis I X ↔
      (∀ i, (M i).Basis (I ∩ (M i).E) (X ∩ (M i).E)) ∧ I ⊆ X ∧ X ⊆ ⋃ i, (M i).E 
goal: (Matroid.disjointSigma M h).Basis I X ↔ (∀ (i : ι), (M i).Basis (I ∩ (M i).E) (X ∩ (M i).E)) ∧ I ⊆ X ∧ X ⊆ ⋃ i, (M i).E

full_name: Matroid.sum
code: /-- The sum of two matroids as a matroid on the sum type. -/
protected def sum (M : Matroid α) (N : Matroid β) : Matroid (α ⊕ β) 
goal: Matroid (α ⊕ β)

full_name: Matroid.sum_ground
code: @[simp] lemma sum_ground (M : Matroid α) (N : Matroid β) :
    (M.sum N).E = (.inl '' M.E) ∪ (.inr '' N.E) 
goal: (M.sum N).E = Sum.inl '' M.E ∪ Sum.inr '' N.E

full_name: Matroid.sum_indep_iff
code: @[simp] lemma sum_indep_iff (M : Matroid α) (N : Matroid β) {I : Set (α ⊕ β)} :
    (M.sum N).Indep I ↔ M.Indep (.inl ⁻¹' I) ∧ N.Indep (.inr ⁻¹' I) 
goal: (M.sum N).Indep I ↔ M.Indep (Sum.inl ⁻¹' I) ∧ N.Indep (Sum.inr ⁻¹' I)

full_name: Matroid.sum_base_iff
code: @[simp] lemma sum_base_iff {M : Matroid α} {N : Matroid β} {B : Set (α ⊕ β)} :
    (M.sum N).Base B ↔ M.Base (.inl ⁻¹' B) ∧ N.Base (.inr ⁻¹' B) 
goal: (M.sum N).Base B ↔ M.Base (Sum.inl ⁻¹' B) ∧ N.Base (Sum.inr ⁻¹' B)

full_name: Matroid.sum_basis_iff
code: @[simp] lemma sum_basis_iff {M : Matroid α} {N : Matroid β} {I X : Set (α ⊕ β)} :
    (M.sum N).Basis I X ↔
      (M.Basis (Sum.inl ⁻¹' I) (Sum.inl ⁻¹' X) ∧ N.Basis (Sum.inr ⁻¹' I) (Sum.inr ⁻¹' X)) 
goal: (M.sum N).Basis I X ↔ M.Basis (Sum.inl ⁻¹' I) (Sum.inl ⁻¹' X) ∧ N.Basis (Sum.inr ⁻¹' I) (Sum.inr ⁻¹' X)

full_name: Matroid.disjointSum
code: /-- The sum of two matroids on `α` with disjoint ground sets, as a `Matroid α`. -/
def disjointSum (M N : Matroid α) (h : Disjoint M.E N.E) : Matroid α 
goal: Matroid α

full_name: Matroid.disjointSum_ground_eq
code: @[simp] lemma disjointSum_ground_eq {h} : (M.disjointSum N h).E = M.E ∪ N.E 
goal: (M.disjointSum N h).E = M.E ∪ N.E

full_name: Matroid.disjointSum_indep_iff
code: @[simp] lemma disjointSum_indep_iff {h I} :
    (M.disjointSum N h).Indep I ↔ M.Indep (I ∩ M.E) ∧ N.Indep (I ∩ N.E) ∧ I ⊆ M.E ∪ N.E 
goal: (M.disjointSum N h).Indep I ↔ M.Indep (I ∩ M.E) ∧ N.Indep (I ∩ N.E) ∧ I ⊆ M.E ∪ N.E

full_name: Matroid.disjointSum_base_iff
code: @[simp] lemma disjointSum_base_iff {h B} :
    (M.disjointSum N h).Base B ↔ M.Base (B ∩ M.E) ∧ N.Base (B ∩ N.E) ∧ B ⊆ M.E ∪ N.E 
goal: (M.disjointSum N h).Base B ↔ M.Base (B ∩ M.E) ∧ N.Base (B ∩ N.E) ∧ B ⊆ M.E ∪ N.E

full_name: Matroid.disjointSum_basis_iff
code: @[simp] lemma disjointSum_basis_iff {h I X} :
    (M.disjointSum N h).Basis I X ↔ M.Basis (I ∩ M.E) (X ∩ M.E) ∧
      N.Basis (I ∩ N.E) (X ∩ N.E) ∧ I ⊆ X ∧ X ⊆ M.E ∪ N.E 
goal: (M.disjointSum N h).Basis I X ↔ M.Basis (I ∩ M.E) (X ∩ M.E) ∧ N.Basis (I ∩ N.E) (X ∩ N.E) ∧ I ⊆ X ∧ X ⊆ M.E ∪ N.E

full_name: Matroid.Indep.eq_union_image_of_disjointSum
code: lemma Indep.eq_union_image_of_disjointSum {h I} (hI : (disjointSum M N h).Indep I) :
    ∃ IM IN, M.Indep IM ∧ N.Indep IN ∧ Disjoint IM IN ∧ I = IM ∪ IN 
goal: ∃ IM IN, M.Indep IM ∧ N.Indep IN ∧ Disjoint IM IN ∧ I = IM ∪ IN

full_name: Matroid.Base.eq_union_image_of_disjointSum
code: lemma Base.eq_union_image_of_disjointSum {h B} (hB : (disjointSum M N h).Base B) :
    ∃ BM BN, M.Base BM ∧ N.Base BN ∧ Disjoint BM BN ∧ B = BM ∪ BN 
goal: ∃ BM BN, M.Base BM ∧ N.Base BN ∧ Disjoint BM BN ∧ B = BM ∪ BN