internlm/Lean-Github huggingface dataset:
Theorem: Matroid.SkewFamily.iUnion_indep_subset_indep
Proof state before:
case intro.inr
ι : Type u_1
α : Type u_2
M : Matroid α
B I J✝ X X' Y Y' F : Set α
Xs Ys Js✝ Is : ι → Set α
i✝ j : ι
e✝ f✝ : α
h : M.SkewFamily Xs
hIX : ∀ (i : ι), Is i ⊆ Xs i
hIs : ∀ (i : ι), M.Indep (Is i)
Js : ι → Set α
hJs : ∀ (i : ι), M.Basis (Js i) (Xs i) ∧ Is i ⊆ Js i
J : Set α
hJ : M.Basis J (⋃ i, Js i)
hcon : ¬M.Indep (⋃ i, Js i)
i₀ : ι
e : α
hei₀ : e ∈ Js i₀
heJ : e ∉ J
Ks : ι → Set α
hdj : Pairwise (Disjoint on Ks)
hKs : M.Basis (⋃ i, Ks i) (⋃ i, Xs i)
huKs : ∀ (i : ι), M.Basis (Ks i) (Xs i)
hssE : Js i₀ ∪ ⋃ i ∈ {i₀}ᶜ, Ks i ⊆ M.E
K' : Set α
hK' : M.Basis K' (Js i₀ ∪ ⋃ i ∈ {i₀}ᶜ, Ks i)
hss : Js i₀ ⊆ K'
hK'' : ∀ (i : ι), i ≠ i₀ → Ks i ⊆ K'
f : α
hf : f ∈ J
i : ι
hfi : f ∈ Js i
hi : i₀ ≠ i
⊢ Ks i ⊆ K' \ {e}
Tactic:
refine subset_diff_singleton (hK'' i hi.symm) (fun heK ↦ ?_)
Proof state after:
case intro.inr
ι : Type u_1
α : Type u_2
M : Matroid α
B I J✝ X X' Y Y' F : Set α
Xs Ys Js✝ Is : ι → Set α
i✝ j : ι
e✝ f✝ : α
h : M.SkewFamily Xs
hIX : ∀ (i : ι), Is i ⊆ Xs i
hIs : ∀ (i : ι), M.Indep (Is i)
Js : ι → Set α
hJs : ∀ (i : ι), M.Basis (Js i) (Xs i) ∧ Is i ⊆ Js i
J : Set α
hJ : M.Basis J (⋃ i, Js i)
hcon : ¬M.Indep (⋃ i, Js i)
i₀ : ι
e : α
hei₀ : e ∈ Js i₀
heJ : e ∉ J
Ks : ι → Set α
hdj : Pairwise (Disjoint on Ks)
hKs : M.Basis (⋃ i, Ks i) (⋃ i, Xs i)
huKs : ∀ (i : ι), M.Basis (Ks i) (Xs i)
hssE : Js i₀ ∪ ⋃ i ∈ {i₀}ᶜ, Ks i ⊆ M.E
K' : Set α
hK' : M.Basis K' (Js i₀ ∪ ⋃ i ∈ {i₀}ᶜ, Ks i)
hss : Js i₀ ⊆ K'
hK'' : ∀ (i : ι), i ≠ i₀ → Ks i ⊆ K'
f : α
hf : f ∈ J
i : ι
hfi : f ∈ Js i
hi : i₀ ≠ i
heK : e ∈ Ks i
⊢ False
Theorem: Matroid.SkewFamily.iUnion_indep_subset_indep
Proof state before:
case intro.inr
ι : Type u_1
α : Type u_2
M : Matroid α
B I J✝ X X' Y Y' F : Set α
Xs Ys Js✝ Is : ι → Set α
i✝ j : ι
e✝ f✝ : α
h : M.SkewFamily Xs
hIX : ∀ (i : ι), Is i ⊆ Xs i
hIs : ∀ (i : ι), M.Indep (Is i)
Js : ι → Set α
hJs : ∀ (i : ι), M.Basis (Js i) (Xs i) ∧ Is i ⊆ Js i
J : Set α
hJ : M.Basis J (⋃ i, Js i)
hcon : ¬M.Indep (⋃ i, Js i)
i₀ : ι
e : α
hei₀ : e ∈ Js i₀
heJ : e ∉ J
Ks : ι → Set α
hdj : Pairwise (Disjoint on Ks)
hKs : M.Basis (⋃ i, Ks i) (⋃ i, Xs i)
huKs : ∀ (i : ι), M.Basis (Ks i) (Xs i)
hssE : Js i₀ ∪ ⋃ i ∈ {i₀}ᶜ, Ks i ⊆ M.E
K' : Set α
hK' : M.Basis K' (Js i₀ ∪ ⋃ i ∈ {i₀}ᶜ, Ks i)
hss : Js i₀ ⊆ K'
hK'' : ∀ (i : ι), i ≠ i₀ → Ks i ⊆ K'
f : α
hf : f ∈ J
i : ι
hfi : f ∈ Js i
hi : i₀ ≠ i
heK : e ∈ Ks i
⊢ False
Tactic:
apply Loop.not_nonloop <| h.loop_of_mem_inter hi ⟨(hJs i₀).1.subset hei₀, (huKs i).subset heK⟩
Proof state after:
case intro.inr
ι : Type u_1
α : Type u_2
M : Matroid α
B I J✝ X X' Y Y' F : Set α
Xs Ys Js✝ Is : ι → Set α
i✝ j : ι
e✝ f✝ : α
h : M.SkewFamily Xs
hIX : ∀ (i : ι), Is i ⊆ Xs i
hIs : ∀ (i : ι), M.Indep (Is i)
Js : ι → Set α
hJs : ∀ (i : ι), M.Basis (Js i) (Xs i) ∧ Is i ⊆ Js i
J : Set α
hJ : M.Basis J (⋃ i, Js i)
hcon : ¬M.Indep (⋃ i, Js i)
i₀ : ι
e : α
hei₀ : e ∈ Js i₀
heJ : e ∉ J
Ks : ι → Set α
hdj : Pairwise (Disjoint on Ks)
hKs : M.Basis (⋃ i, Ks i) (⋃ i, Xs i)
huKs : ∀ (i : ι), M.Basis (Ks i) (Xs i)
hssE : Js i₀ ∪ ⋃ i ∈ {i₀}ᶜ, Ks i ⊆ M.E
K' : Set α
hK' : M.Basis K' (Js i₀ ∪ ⋃ i ∈ {i₀}ᶜ, Ks i)
hss : Js i₀ ⊆ K'
hK'' : ∀ (i : ι), i ≠ i₀ → Ks i ⊆ K'
f : α
hf : f ∈ J
i : ι
hfi : f ∈ Js i
hi : i₀ ≠ i
heK : e ∈ Ks i
⊢ M.Nonloop e
Theorem: Matroid.SkewFamily.iUnion_indep_subset_indep
Proof state before:
case intro.inr
ι : Type u_1
α : Type u_2
M : Matroid α
B I J✝ X X' Y Y' F : Set α
Xs Ys Js✝ Is : ι → Set α
i✝ j : ι
e✝ f✝ : α
h : M.SkewFamily Xs
hIX : ∀ (i : ι), Is i ⊆ Xs i
hIs : ∀ (i : ι), M.Indep (Is i)
Js : ι → Set α
hJs : ∀ (i : ι), M.Basis (Js i) (Xs i) ∧ Is i ⊆ Js i
J : Set α
hJ : M.Basis J (⋃ i, Js i)
hcon : ¬M.Indep (⋃ i, Js i)
i₀ : ι
e : α
hei₀ : e ∈ Js i₀
heJ : e ∉ J
Ks : ι → Set α
hdj : Pairwise (Disjoint on Ks)
hKs : M.Basis (⋃ i, Ks i) (⋃ i, Xs i)
huKs : ∀ (i : ι), M.Basis (Ks i) (Xs i)
hssE : Js i₀ ∪ ⋃ i ∈ {i₀}ᶜ, Ks i ⊆ M.E
K' : Set α
hK' : M.Basis K' (Js i₀ ∪ ⋃ i ∈ {i₀}ᶜ, Ks i)
hss : Js i₀ ⊆ K'
hK'' : ∀ (i : ι), i ≠ i₀ → Ks i ⊆ K'
f : α
hf : f ∈ J
i : ι
hfi : f ∈ Js i
hi : i₀ ≠ i
heK : e ∈ Ks i
⊢ M.Nonloop e
Tactic:
exact (hK'.indep.subset hss).nonloop_of_mem hei₀
Proof state after:
no goals
Theorem: Matroid.SkewFamily.iUnion_indep_subset_indep
Proof state before:
case intro.inl
ι : Type u_1
α : Type u_2
M : Matroid α
B I J✝ X X' Y Y' F : Set α
Xs Ys Js✝ Is : ι → Set α
i j : ι
e✝ f✝ : α
h : M.SkewFamily Xs
hIX : ∀ (i : ι), Is i ⊆ Xs i
hIs : ∀ (i : ι), M.Indep (Is i)
Js : ι → Set α
hJs : ∀ (i : ι), M.Basis (Js i) (Xs i) ∧ Is i ⊆ Js i
J : Set α
hJ : M.Basis J (⋃ i, Js i)
hcon : ¬M.Indep (⋃ i, Js i)
i₀ : ι
e : α
hei₀ : e ∈ Js i₀
heJ : e ∉ J
Ks : ι → Set α
hdj : Pairwise (Disjoint on Ks)
hKs : M.Basis (⋃ i, Ks i) (⋃ i, Xs i)
huKs : ∀ (i : ι), M.Basis (Ks i) (Xs i)
hssE : Js i₀ ∪ ⋃ i ∈ {i₀}ᶜ, Ks i ⊆ M.E
K' : Set α
hK' : M.Basis K' (Js i₀ ∪ ⋃ i ∈ {i₀}ᶜ, Ks i)
hss : Js i₀ ⊆ K'
hK'' : ∀ (i : ι), i ≠ i₀ → Ks i ⊆ K'
f : α
hf : f ∈ J
hfi : f ∈ Js i₀
⊢ f ∈ M.cl (K' \ {e})
Tactic:
apply M.subset_cl (K' \ {e}) (diff_subset.trans hK'.indep.subset_ground)
Proof state after:
case intro.inl.a
ι : Type u_1
α : Type u_2
M : Matroid α
B I J✝ X X' Y Y' F : Set α
Xs Ys Js✝ Is : ι → Set α
i j : ι
e✝ f✝ : α
h : M.SkewFamily Xs
hIX : ∀ (i : ι), Is i ⊆ Xs i
hIs : ∀ (i : ι), M.Indep (Is i)
Js : ι → Set α
hJs : ∀ (i : ι), M.Basis (Js i) (Xs i) ∧ Is i ⊆ Js i
J : Set α
hJ : M.Basis J (⋃ i, Js i)
hcon : ¬M.Indep (⋃ i, Js i)
i₀ : ι
e : α
hei₀ : e ∈ Js i₀
heJ : e ∉ J
Ks : ι → Set α
hdj : Pairwise (Disjoint on Ks)
hKs : M.Basis (⋃ i, Ks i) (⋃ i, Xs i)
huKs : ∀ (i : ι), M.Basis (Ks i) (Xs i)
hssE : Js i₀ ∪ ⋃ i ∈ {i₀}ᶜ, Ks i ⊆ M.E
K' : Set α
hK' : M.Basis K' (Js i₀ ∪ ⋃ i ∈ {i₀}ᶜ, Ks i)
hss : Js i₀ ⊆ K'
hK'' : ∀ (i : ι), i ≠ i₀ → Ks i ⊆ K'
f : α
hf : f ∈ J
hfi : f ∈ Js i₀
⊢ f ∈ K' \ {e}
Theorem: Matroid.SkewFamily.iUnion_indep_subset_indep
Proof state before:
case intro.inl.a
ι : Type u_1
α : Type u_2
M : Matroid α
B I J✝ X X' Y Y' F : Set α
Xs Ys Js✝ Is : ι → Set α
i j : ι
e✝ f✝ : α
h : M.SkewFamily Xs
hIX : ∀ (i : ι), Is i ⊆ Xs i
hIs : ∀ (i : ι), M.Indep (Is i)
Js : ι → Set α
hJs : ∀ (i : ι), M.Basis (Js i) (Xs i) ∧ Is i ⊆ Js i
J : Set α
hJ : M.Basis J (⋃ i, Js i)
hcon : ¬M.Indep (⋃ i, Js i)
i₀ : ι
e : α
hei₀ : e ∈ Js i₀
heJ : e ∉ J
Ks : ι → Set α
hdj : Pairwise (Disjoint on Ks)
hKs : M.Basis (⋃ i, Ks i) (⋃ i, Xs i)
huKs : ∀ (i : ι), M.Basis (Ks i) (Xs i)
hssE : Js i₀ ∪ ⋃ i ∈ {i₀}ᶜ, Ks i ⊆ M.E
K' : Set α
hK' : M.Basis K' (Js i₀ ∪ ⋃ i ∈ {i₀}ᶜ, Ks i)
hss : Js i₀ ⊆ K'
hK'' : ∀ (i : ι), i ≠ i₀ → Ks i ⊆ K'
f : α
hf : f ∈ J
hfi : f ∈ Js i₀
⊢ f ∈ K' \ {e}
Tactic:
exact ⟨hss hfi, fun (h : f = e) ↦ heJ <| h ▸ hf⟩
Proof state after:
no goals
Theorem: Matroid.SkewFamily.mono
Proof state before:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
h : M.SkewFamily Xs
hYX : ∀ (i : ι), Ys i ⊆ Xs i
⊢ M.SkewFamily Ys
Tactic:
choose Is hIs using fun i ↦ M.exists_basis (Ys i) ((hYX i).trans (h.subset_ground_of_mem i))
Proof state after:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
h : M.SkewFamily Xs
hYX : ∀ (i : ι), Ys i ⊆ Xs i
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Ys i)
⊢ M.SkewFamily Ys
Theorem: Matroid.SkewFamily.mono
Proof state before:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
h : M.SkewFamily Xs
hYX : ∀ (i : ι), Ys i ⊆ Xs i
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Ys i)
⊢ M.SkewFamily Ys
Tactic:
refine Indep.skewFamily_of_disjoint_bases ?_ ?_ hIs
Proof state after:
case refine_1
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
h : M.SkewFamily Xs
hYX : ∀ (i : ι), Ys i ⊆ Xs i
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Ys i)
⊢ M.Indep (⋃ i, Is i)

case refine_2
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
h : M.SkewFamily Xs
hYX : ∀ (i : ι), Ys i ⊆ Xs i
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Ys i)
⊢ Pairwise (Disjoint on fun i => Is i)
Theorem: Matroid.SkewFamily.mono
Proof state before:
case refine_2
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
h : M.SkewFamily Xs
hYX : ∀ (i : ι), Ys i ⊆ Xs i
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Ys i)
⊢ Pairwise (Disjoint on fun i => Is i)
Tactic:
exact h.pairwise_disjoint_of_indep_subsets
  (fun i ↦ (hIs i).subset.trans (hYX i)) (fun i ↦ (hIs i).indep)
Proof state after:
no goals
Theorem: Matroid.SkewFamily.mono
Proof state before:
case refine_1
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
h : M.SkewFamily Xs
hYX : ∀ (i : ι), Ys i ⊆ Xs i
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Ys i)
⊢ M.Indep (⋃ i, Is i)
Tactic:
exact h.iUnion_indep_subset_indep (fun i ↦ (hIs i).subset.trans (hYX i)) (fun i ↦ (hIs i).indep)
Proof state after:
no goals
Theorem: Matroid.SkewFamily.iUnion_basis_iUnion
Proof state before:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
h : M.SkewFamily Xs
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
⊢ M.Basis (⋃ i, Is i) (⋃ i, Xs i)
Tactic:
have hi := h.iUnion_indep_subset_indep (fun i ↦ (hIs i).subset) (fun i ↦ (hIs i).indep)
Proof state after:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
h : M.SkewFamily Xs
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hi : M.Indep (⋃ i, Is i)
⊢ M.Basis (⋃ i, Is i) (⋃ i, Xs i)
Theorem: Matroid.SkewFamily.iUnion_basis_iUnion
Proof state before:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
h : M.SkewFamily Xs
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hi : M.Indep (⋃ i, Is i)
⊢ M.Basis (⋃ i, Is i) (⋃ i, Xs i)
Tactic:
exact hi.basis_of_subset_of_subset_cl (iUnion_mono (fun i ↦ (hIs i).subset)) <|
  iUnion_subset (fun i ↦ (hIs i).subset_cl.trans (M.cl_subset_cl (subset_iUnion _ _)))
Proof state after:
no goals
Theorem: Matroid.SkewFamily.sum_er_eq_er_iUnion
Proof state before:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
h : M.SkewFamily Xs
⊢ ∑ i : ι, M.er (Xs i) = M.er (⋃ i, Xs i)
Tactic:
choose Is hIs using fun i ↦ M.exists_basis (Xs i) (h.subset_ground_of_mem i)
Proof state after:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
h : M.SkewFamily Xs
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
⊢ ∑ i : ι, M.er (Xs i) = M.er (⋃ i, Xs i)
Theorem: Matroid.SkewFamily.sum_er_eq_er_iUnion
Proof state before:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
h : M.SkewFamily Xs
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
⊢ ∑ i : ι, M.er (Xs i) = M.er (⋃ i, Xs i)
Tactic:
have hdj := (h.pairwise_disjoint_of_bases hIs)
Proof state after:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
h : M.SkewFamily Xs
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hdj : Pairwise (Disjoint on fun i => Is i)
⊢ ∑ i : ι, M.er (Xs i) = M.er (⋃ i, Xs i)
Theorem: Matroid.SkewFamily.sum_er_eq_er_iUnion
Proof state before:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
h : M.SkewFamily Xs
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hdj : Pairwise (Disjoint on fun i => Is i)
⊢ ∑ i : ι, M.er (Xs i) = M.er (⋃ i, Xs i)
Tactic:
rw [← pairwise_univ] at hdj
Proof state after:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
h : M.SkewFamily Xs
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hdj : univ.Pairwise (Disjoint on fun i => Is i)
⊢ ∑ i : ι, M.er (Xs i) = M.er (⋃ i, Xs i)
Theorem: Matroid.SkewFamily.sum_er_eq_er_iUnion
Proof state before:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
h : M.SkewFamily Xs
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hdj : univ.Pairwise (Disjoint on fun i => Is i)
⊢ ∑ i : ι, M.er (Xs i) = M.er (⋃ i, Xs i)
Tactic:
rw [(h.iUnion_basis_iUnion hIs).er_eq_encard, encard_iUnion _ hdj]
Proof state after:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
h : M.SkewFamily Xs
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hdj : univ.Pairwise (Disjoint on fun i => Is i)
⊢ ∑ i : ι, M.er (Xs i) = ∑ i : ι, (Is i).encard
Theorem: Matroid.SkewFamily.sum_er_eq_er_iUnion
Proof state before:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
h : M.SkewFamily Xs
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hdj : univ.Pairwise (Disjoint on fun i => Is i)
⊢ ∑ i : ι, M.er (Xs i) = ∑ i : ι, (Is i).encard
Tactic:
simp_rw [(hIs _).er_eq_encard]
Proof state after:
no goals
Theorem: Matroid.rFin.skewFamily_iff_sum_er_eq_er_iUnion
Proof state before:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
hXs : ∀ (i : ι), M.rFin (Xs i)
hXE : ∀ (i : ι), Xs i ⊆ M.E
⊢ M.SkewFamily Xs ↔ ∑ i : ι, M.er (Xs i) = M.er (⋃ i, Xs i)
Tactic:
refine ⟨SkewFamily.sum_er_eq_er_iUnion, fun hsum ↦ ?_⟩
Proof state after:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
hXs : ∀ (i : ι), M.rFin (Xs i)
hXE : ∀ (i : ι), Xs i ⊆ M.E
hsum : ∑ i : ι, M.er (Xs i) = M.er (⋃ i, Xs i)
⊢ M.SkewFamily Xs
Theorem: Matroid.rFin.skewFamily_iff_sum_er_eq_er_iUnion
Proof state before:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
hXs : ∀ (i : ι), M.rFin (Xs i)
hXE : ∀ (i : ι), Xs i ⊆ M.E
hsum : ∑ i : ι, M.er (Xs i) = M.er (⋃ i, Xs i)
⊢ M.SkewFamily Xs
Tactic:
choose Is hIs using fun i ↦ M.exists_basis (Xs i) (hXE i)
Proof state after:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
hXs : ∀ (i : ι), M.rFin (Xs i)
hXE : ∀ (i : ι), Xs i ⊆ M.E
hsum : ∑ i : ι, M.er (Xs i) = M.er (⋃ i, Xs i)
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
⊢ M.SkewFamily Xs
Theorem: Matroid.rFin.skewFamily_iff_sum_er_eq_er_iUnion
Proof state before:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
hXs : ∀ (i : ι), M.rFin (Xs i)
hXE : ∀ (i : ι), Xs i ⊆ M.E
hsum : ∑ i : ι, M.er (Xs i) = M.er (⋃ i, Xs i)
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
⊢ M.SkewFamily Xs
Tactic:
rw [← er_cl_eq , ← M.cl_iUnion_cl_eq_cl_iUnion] at hsum
Proof state after:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
hXs : ∀ (i : ι), M.rFin (Xs i)
hXE : ∀ (i : ι), Xs i ⊆ M.E
hsum : ∑ i : ι, M.er (Xs i) = M.er (M.cl (⋃ i, M.cl (Xs i)))
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
⊢ M.SkewFamily Xs
Theorem: Matroid.rFin.skewFamily_iff_sum_er_eq_er_iUnion
Proof state before:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
hXs : ∀ (i : ι), M.rFin (Xs i)
hXE : ∀ (i : ι), Xs i ⊆ M.E
hsum : ∑ i : ι, M.er (Xs i) = M.er (M.cl (⋃ i, M.cl (Xs i)))
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
⊢ M.SkewFamily Xs
Tactic:
simp_rw [← (fun i ↦ M.er_cl_eq (Xs i)), ← (fun i ↦ (hIs i).cl_eq_cl), M.cl_iUnion_cl_eq_cl_iUnion,
  er_cl_eq, (fun i ↦ (hIs i).indep.er)] at hsum
Proof state after:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
hXs : ∀ (i : ι), M.rFin (Xs i)
hXE : ∀ (i : ι), Xs i ⊆ M.E
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hsum : ∑ x : ι, (Is x).encard = M.er (⋃ i, Is i)
⊢ M.SkewFamily Xs
Theorem: Matroid.rFin.skewFamily_iff_sum_er_eq_er_iUnion
Proof state before:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
hXs : ∀ (i : ι), M.rFin (Xs i)
hXE : ∀ (i : ι), Xs i ⊆ M.E
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hsum : ∑ x : ι, (Is x).encard = M.er (⋃ i, Is i)
⊢ M.SkewFamily Xs
Tactic:
apply Indep.skewFamily_of_disjoint_bases ?_ ?_ hIs
Proof state after:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
hXs : ∀ (i : ι), M.rFin (Xs i)
hXE : ∀ (i : ι), Xs i ⊆ M.E
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hsum : ∑ x : ι, (Is x).encard = M.er (⋃ i, Is i)
⊢ M.Indep (⋃ i, Is i)

ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
hXs : ∀ (i : ι), M.rFin (Xs i)
hXE : ∀ (i : ι), Xs i ⊆ M.E
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hsum : ∑ x : ι, (Is x).encard = M.er (⋃ i, Is i)
⊢ Pairwise (Disjoint on fun i => Is i)
Theorem: Matroid.rFin.skewFamily_iff_sum_er_eq_er_iUnion
Proof state before:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
hXs : ∀ (i : ι), M.rFin (Xs i)
hXE : ∀ (i : ι), Xs i ⊆ M.E
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hsum : ∑ x : ι, (Is x).encard = M.er (⋃ i, Is i)
⊢ Pairwise (Disjoint on fun i => Is i)
Tactic:
rw [← pairwise_univ]
Proof state after:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
hXs : ∀ (i : ι), M.rFin (Xs i)
hXE : ∀ (i : ι), Xs i ⊆ M.E
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hsum : ∑ x : ι, (Is x).encard = M.er (⋃ i, Is i)
⊢ univ.Pairwise (Disjoint on fun i => Is i)
Theorem: Matroid.rFin.skewFamily_iff_sum_er_eq_er_iUnion
Proof state before:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
hXs : ∀ (i : ι), M.rFin (Xs i)
hXE : ∀ (i : ι), Xs i ⊆ M.E
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hsum : ∑ x : ι, (Is x).encard = M.er (⋃ i, Is i)
⊢ univ.Pairwise (Disjoint on fun i => Is i)
Tactic:
exact pairwiseDisjoint_of_encard_sum_le_encard_iUnion
  (fun i ↦ (hXs i).finite_of_basis (hIs i)) (hsum.le.trans <| M.er_le_encard _)
Proof state after:
no goals
Theorem: Matroid.rFin.skewFamily_iff_sum_er_eq_er_iUnion
Proof state before:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
inst✝ : Fintype ι
hXs : ∀ (i : ι), M.rFin (Xs i)
hXE : ∀ (i : ι), Xs i ⊆ M.E
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hsum : ∑ x : ι, (Is x).encard = M.er (⋃ i, Is i)
⊢ M.Indep (⋃ i, Is i)
Tactic:
exact rFin.indep_of_encard_le_er
  ((rFin.iUnion hXs).subset (iUnion_mono (fun i ↦ (hIs i).subset)))
  ((encard_iUnion_le _).trans hsum.le)
Proof state after:
no goals
Theorem: Matroid.skewFamily_iff_sum_er_eq_er_iUnion
Proof state before:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
inst✝¹ : Fintype ι
inst✝ : M.FiniteRk
hXs : ∀ (i : ι), Xs i ⊆ M.E
⊢ M.SkewFamily Xs ↔ ∑ i : ι, M.r (Xs i) = M.r (⋃ i, Xs i)
Tactic:
simp_rw [rFin.skewFamily_iff_sum_er_eq_er_iUnion (fun i ↦ M.to_rFin (Xs i)) hXs,
  ← M.coe_r_eq, ← Nat.cast_sum, Nat.cast_inj]
Proof state after:
no goals
Theorem: Matroid.skewFamily_iff_forall_circuit
Proof state before:
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
hXs : ∀ (i : ι), Xs i ⊆ M.E
hdj : Pairwise (Disjoint on Xs)
⊢ M.SkewFamily Xs ↔ ∀ (C : Set α), M.Circuit C → C ⊆ ⋃ i, Xs i → ∃ i, C ⊆ Xs i
Tactic:
refine ⟨fun h C hC hCU ↦ ?_, fun h ↦ ?_⟩
Proof state after:
case refine_1
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
hXs : ∀ (i : ι), Xs i ⊆ M.E
hdj : Pairwise (Disjoint on Xs)
h : M.SkewFamily Xs
C : Set α
hC : M.Circuit C
hCU : C ⊆ ⋃ i, Xs i
⊢ ∃ i, C ⊆ Xs i

case refine_2
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
hXs : ∀ (i : ι), Xs i ⊆ M.E
hdj : Pairwise (Disjoint on Xs)
h : ∀ (C : Set α), M.Circuit C → C ⊆ ⋃ i, Xs i → ∃ i, C ⊆ Xs i
⊢ M.SkewFamily Xs
Theorem: Matroid.skewFamily_iff_forall_circuit
Proof state before:
case refine_2
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is : ι → Set α
i j : ι
e f : α
hXs : ∀ (i : ι), Xs i ⊆ M.E
hdj : Pairwise (Disjoint on Xs)
h : ∀ (C : Set α), M.Circuit C → C ⊆ ⋃ i, Xs i → ∃ i, C ⊆ Xs i
⊢ M.SkewFamily Xs
Tactic:
choose Is hIs using fun i ↦ M.exists_basis _ (hXs i)
Proof state after:
case refine_2
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
hXs : ∀ (i : ι), Xs i ⊆ M.E
hdj : Pairwise (Disjoint on Xs)
h : ∀ (C : Set α), M.Circuit C → C ⊆ ⋃ i, Xs i → ∃ i, C ⊆ Xs i
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
⊢ M.SkewFamily Xs
Theorem: Matroid.skewFamily_iff_forall_circuit
Proof state before:
case refine_2
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
hXs : ∀ (i : ι), Xs i ⊆ M.E
hdj : Pairwise (Disjoint on Xs)
h : ∀ (C : Set α), M.Circuit C → C ⊆ ⋃ i, Xs i → ∃ i, C ⊆ Xs i
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
⊢ M.SkewFamily Xs
Tactic:
have hss := iUnion_mono (fun i ↦ (hIs i).subset)
Proof state after:
case refine_2
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
hXs : ∀ (i : ι), Xs i ⊆ M.E
hdj : Pairwise (Disjoint on Xs)
h : ∀ (C : Set α), M.Circuit C → C ⊆ ⋃ i, Xs i → ∃ i, C ⊆ Xs i
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hss : ⋃ i, Is i ⊆ ⋃ i, Xs i
⊢ M.SkewFamily Xs
Theorem: Matroid.skewFamily_iff_forall_circuit
Proof state before:
case refine_2
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
hXs : ∀ (i : ι), Xs i ⊆ M.E
hdj : Pairwise (Disjoint on Xs)
h : ∀ (C : Set α), M.Circuit C → C ⊆ ⋃ i, Xs i → ∃ i, C ⊆ Xs i
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hss : ⋃ i, Is i ⊆ ⋃ i, Xs i
⊢ M.SkewFamily Xs
Tactic:
have hIe : ⋃ i, Is i ⊆ M.E := by simp [fun i ↦ (hIs i).subset.trans (hXs i)]
Proof state after:
case refine_2
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
hXs : ∀ (i : ι), Xs i ⊆ M.E
hdj : Pairwise (Disjoint on Xs)
h : ∀ (C : Set α), M.Circuit C → C ⊆ ⋃ i, Xs i → ∃ i, C ⊆ Xs i
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hss : ⋃ i, Is i ⊆ ⋃ i, Xs i
hIe : ⋃ i, Is i ⊆ M.E
⊢ M.SkewFamily Xs
Theorem: Matroid.skewFamily_iff_forall_circuit
Proof state before:
case refine_2
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
hXs : ∀ (i : ι), Xs i ⊆ M.E
hdj : Pairwise (Disjoint on Xs)
h : ∀ (C : Set α), M.Circuit C → C ⊆ ⋃ i, Xs i → ∃ i, C ⊆ Xs i
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hss : ⋃ i, Is i ⊆ ⋃ i, Xs i
hIe : ⋃ i, Is i ⊆ M.E
h_inter : ∀ (i : ι), Xs i ∩ ⋃ j, Is j = Is i
⊢ M.SkewFamily Xs
Tactic:
refine Indep.skewFamily_of_disjoint_bases ?_ ?_ hIs
Proof state after:
case refine_2.refine_1
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
hXs : ∀ (i : ι), Xs i ⊆ M.E
hdj : Pairwise (Disjoint on Xs)
h : ∀ (C : Set α), M.Circuit C → C ⊆ ⋃ i, Xs i → ∃ i, C ⊆ Xs i
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hss : ⋃ i, Is i ⊆ ⋃ i, Xs i
hIe : ⋃ i, Is i ⊆ M.E
h_inter : ∀ (i : ι), Xs i ∩ ⋃ j, Is j = Is i
⊢ M.Indep (⋃ i, Is i)

case refine_2.refine_2
ι : Type u_1
α : Type u_2
M : Matroid α
B I J X X' Y Y' F : Set α
Xs Ys Js Is✝ : ι → Set α
i j : ι
e f : α
hXs : ∀ (i : ι), Xs i ⊆ M.E
hdj : Pairwise (Disjoint on Xs)
h : ∀ (C : Set α), M.Circuit C → C ⊆ ⋃ i, Xs i → ∃ i, C ⊆ Xs i
Is : ι → Set α
hIs : ∀ (i : ι), M.Basis (Is i) (Xs i)
hss : ⋃ i, Is i ⊆ ⋃ i, Xs i
hIe : ⋃ i, Is i ⊆ M.E
h_inter : ∀ (i : ι), Xs i ∩ ⋃ j, Is j = Is i
⊢ Pairwise (Disjoint on fun i => Is i)