Theorem: Finset.SupIndep.sigma
File: Mathlib/Order/SupIndep.lean

Proof steps:
state_before: α : Type u_1
β✝ : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
β : ι → Type u_5
s : Finset ι
g : (i : ι) → Finset (β i)
f : Sigma β → α
hs : s.SupIndep fun i => (g i).sup fun b => f ⟨i, b⟩
hg : ∀ i ∈ s, (g i).SupIndep fun b => f ⟨i, b⟩
⊢ (s.sigma g).SupIndep f
state_after: case mk
α : Type u_1
β✝ : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
β : ι → Type u_5
s : Finset ι
g : (i : ι) → Finset (β i)
f : Sigma β → α
hs : s.SupIndep fun i => (g i).sup fun b => f ⟨i, b⟩
hg : ∀ i ∈ s, (g i).SupIndep fun b => f ⟨i, b⟩
t : Finset ((i : ι) × β i)
ht : t ⊆ s.sigma g
i : ι
b : β i
hi : ⟨i, b⟩ ∈ s.sigma g
hit : ⟨i, b⟩ ∉ t
⊢ Disjoint (f ⟨i, b⟩) (t.sup f)
tactic: rintro t ht ⟨i, b⟩ hi hit
state_before: case mk
α : Type u_1
β✝ : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
β : ι → Type u_5
s : Finset ι
g : (i : ι) → Finset (β i)
f : Sigma β → α
hs : s.SupIndep fun i => (g i).sup fun b => f ⟨i, b⟩
hg : ∀ i ∈ s, (g i).SupIndep fun b => f ⟨i, b⟩
t : Finset ((i : ι) × β i)
ht : t ⊆ s.sigma g
i : ι
b : β i
hi : ⟨i, b⟩ ∈ s.sigma g
hit : ⟨i, b⟩ ∉ t
⊢ Disjoint (f ⟨i, b⟩) (t.sup f)
state_after: case mk
α : Type u_1
β✝ : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
β : ι → Type u_5
s : Finset ι
g : (i : ι) → Finset (β i)
f : Sigma β → α
hs : s.SupIndep fun i => (g i).sup fun b => f ⟨i, b⟩
hg : ∀ i ∈ s, (g i).SupIndep fun b => f ⟨i, b⟩
t : Finset ((i : ι) × β i)
ht : t ⊆ s.sigma g
i : ι
b : β i
hi : ⟨i, b⟩ ∈ s.sigma g
hit : ⟨i, b⟩ ∉ t
⊢ ∀ ⦃i_1 : (i : ι) × β i⦄, i_1 ∈ t → Disjoint (f ⟨i, b⟩) (f i_1)
tactic: rw [Finset.disjoint_sup_right]
state_before: case mk
α : Type u_1
β✝ : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
β : ι → Type u_5
s : Finset ι
g : (i : ι) → Finset (β i)
f : Sigma β → α
hs : s.SupIndep fun i => (g i).sup fun b => f ⟨i, b⟩
hg : ∀ i ∈ s, (g i).SupIndep fun b => f ⟨i, b⟩
t : Finset ((i : ι) × β i)
ht : t ⊆ s.sigma g
i : ι
b : β i
hi : ⟨i, b⟩ ∈ s.sigma g
hit : ⟨i, b⟩ ∉ t
⊢ ∀ ⦃i_1 : (i : ι) × β i⦄, i_1 ∈ t → Disjoint (f ⟨i, b⟩) (f i_1)
state_after: case mk.mk
α : Type u_1
β✝ : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
β : ι → Type u_5
s : Finset ι
g : (i : ι) → Finset (β i)
f : Sigma β → α
hs : s.SupIndep fun i => (g i).sup fun b => f ⟨i, b⟩
hg : ∀ i ∈ s, (g i).SupIndep fun b => f ⟨i, b⟩
t : Finset ((i : ι) × β i)
ht : t ⊆ s.sigma g
i : ι
b : β i
hi : ⟨i, b⟩ ∈ s.sigma g
hit : ⟨i, b⟩ ∉ t
j : ι
c : β j
hj : ⟨j, c⟩ ∈ t
⊢ Disjoint (f ⟨i, b⟩) (f ⟨j, c⟩)
tactic: rintro ⟨j, c⟩ hj
state_before: case mk.mk
α : Type u_1
β✝ : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
β : ι → Type u_5
s : Finset ι
g : (i : ι) → Finset (β i)
f : Sigma β → α
hs : s.SupIndep fun i => (g i).sup fun b => f ⟨i, b⟩
hg : ∀ i ∈ s, (g i).SupIndep fun b => f ⟨i, b⟩
t : Finset ((i : ι) × β i)
ht : t ⊆ s.sigma g
i : ι
b : β i
hi : ⟨i, b⟩ ∈ s.sigma g
hit : ⟨i, b⟩ ∉ t
j : ι
c : β j
hj : ⟨j, c⟩ ∈ t
⊢ Disjoint (f ⟨i, b⟩) (f ⟨j, c⟩)
state_after: case mk.mk
α : Type u_1
β✝ : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
β : ι → Type u_5
s : Finset ι
g : (i : ι) → Finset (β i)
f : Sigma β → α
hs : s.SupIndep fun i => (g i).sup fun b => f ⟨i, b⟩
hg : ∀ i ∈ s, (g i).SupIndep fun b => f ⟨i, b⟩
t : Finset ((i : ι) × β i)
ht : t ⊆ s.sigma g
i : ι
b : β i
hi : ⟨i, b⟩ ∈ s.sigma g
hit : ⟨i, b⟩ ∉ t
j : ι
c : β j
hj : ⟨j, c⟩ ∈ t
hbc : ⟨i, b⟩ ≠ ⟨j, c⟩
⊢ Disjoint (f ⟨i, b⟩) (f ⟨j, c⟩)
tactic: have hbc := (ne_of_mem_of_not_mem hj hit).symm
state_before: case mk.mk
α : Type u_1
β✝ : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
β : ι → Type u_5
s : Finset ι
g : (i : ι) → Finset (β i)
f : Sigma β → α
hs : s.SupIndep fun i => (g i).sup fun b => f ⟨i, b⟩
hg : ∀ i ∈ s, (g i).SupIndep fun b => f ⟨i, b⟩
t : Finset ((i : ι) × β i)
ht : t ⊆ s.sigma g
i : ι
b : β i
hi : ⟨i, b⟩ ∈ s.sigma g
hit : ⟨i, b⟩ ∉ t
j : ι
c : β j
hj : ⟨j, c⟩ ∈ t
hbc : ⟨i, b⟩ ≠ ⟨j, c⟩
⊢ Disjoint (f ⟨i, b⟩) (f ⟨j, c⟩)
state_after: case mk.mk
α : Type u_1
β✝ : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
β : ι → Type u_5
s : Finset ι
g : (i : ι) → Finset (β i)
f : Sigma β → α
hs : s.SupIndep fun i => (g i).sup fun b => f ⟨i, b⟩
hg : ∀ i ∈ s, (g i).SupIndep fun b => f ⟨i, b⟩
t : Finset ((i : ι) × β i)
ht : t ⊆ s.sigma g
i : ι
b : β i
hi : ⟨i, b⟩ ∈ s.sigma g
hit : ⟨i, b⟩ ∉ t
j : ι
c : β j
hbc : ⟨i, b⟩ ≠ ⟨j, c⟩
hj : ⟨j, c⟩ ∈ s.sigma g
⊢ Disjoint (f ⟨i, b⟩) (f ⟨j, c⟩)
tactic: replace hj := ht hj
state_before: case mk.mk
α : Type u_1
β✝ : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
β : ι → Type u_5
s : Finset ι
g : (i : ι) → Finset (β i)
f : Sigma β → α
hs : s.SupIndep fun i => (g i).sup fun b => f ⟨i, b⟩
hg : ∀ i ∈ s, (g i).SupIndep fun b => f ⟨i, b⟩
t : Finset ((i : ι) × β i)
ht : t ⊆ s.sigma g
i : ι
b : β i
hi : ⟨i, b⟩ ∈ s.sigma g
hit : ⟨i, b⟩ ∉ t
j : ι
c : β j
hbc : ⟨i, b⟩ ≠ ⟨j, c⟩
hj : ⟨j, c⟩ ∈ s.sigma g
⊢ Disjoint (f ⟨i, b⟩) (f ⟨j, c⟩)
state_after: case mk.mk
α : Type u_1
β✝ : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
β : ι → Type u_5
s : Finset ι
g : (i : ι) → Finset (β i)
f : Sigma β → α
hs : s.SupIndep fun i => (g i).sup fun b => f ⟨i, b⟩
hg : ∀ i ∈ s, (g i).SupIndep fun b => f ⟨i, b⟩
t : Finset ((i : ι) × β i)
ht : t ⊆ s.sigma g
i : ι
b : β i
hi : ⟨i, b⟩.fst ∈ s ∧ ⟨i, b⟩.snd ∈ g ⟨i, b⟩.fst
hit : ⟨i, b⟩ ∉ t
j : ι
c : β j
hbc : ⟨i, b⟩ ≠ ⟨j, c⟩
hj : ⟨j, c⟩.fst ∈ s ∧ ⟨j, c⟩.snd ∈ g ⟨j, c⟩.fst
⊢ Disjoint (f ⟨i, b⟩) (f ⟨j, c⟩)
tactic: rw [mem_sigma] at hi hj
state_before: case mk.mk
α : Type u_1
β✝ : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
β : ι → Type u_5
s : Finset ι
g : (i : ι) → Finset (β i)
f : Sigma β → α
hs : s.SupIndep fun i => (g i).sup fun b => f ⟨i, b⟩
hg : ∀ i ∈ s, (g i).SupIndep fun b => f ⟨i, b⟩
t : Finset ((i : ι) × β i)
ht : t ⊆ s.sigma g
i : ι
b : β i
hi : ⟨i, b⟩.fst ∈ s ∧ ⟨i, b⟩.snd ∈ g ⟨i, b⟩.fst
hit : ⟨i, b⟩ ∉ t
j : ι
c : β j
hbc : ⟨i, b⟩ ≠ ⟨j, c⟩
hj : ⟨j, c⟩.fst ∈ s ∧ ⟨j, c⟩.snd ∈ g ⟨j, c⟩.fst
⊢ Disjoint (f ⟨i, b⟩) (f ⟨j, c⟩)
state_after: case mk.mk.inl
α : Type u_1
β✝ : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
β : ι → Type u_5
s : Finset ι
g : (i : ι) → Finset (β i)
f : Sigma β → α
hs : s.SupIndep fun i => (g i).sup fun b => f ⟨i, b⟩
hg : ∀ i ∈ s, (g i).SupIndep fun b => f ⟨i, b⟩
t : Finset ((i : ι) × β i)
ht : t ⊆ s.sigma g
i : ι
b : β i
hi : ⟨i, b⟩.fst ∈ s ∧ ⟨i, b⟩.snd ∈ g ⟨i, b⟩.fst
hit : ⟨i, b⟩ ∉ t
c : β i
hbc : ⟨i, b⟩ ≠ ⟨i, c⟩
hj : ⟨i, c⟩.fst ∈ s ∧ ⟨i, c⟩.snd ∈ g ⟨i, c⟩.fst
⊢ Disjoint (f ⟨i, b⟩) (f ⟨i, c⟩)

case mk.mk.inr
α : Type u_1
β✝ : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
β : ι → Type u_5
s : Finset ι
g : (i : ι) → Finset (β i)
f : Sigma β → α
hs : s.SupIndep fun i => (g i).sup fun b => f ⟨i, b⟩
hg : ∀ i ∈ s, (g i).SupIndep fun b => f ⟨i, b⟩
t : Finset ((i : ι) × β i)
ht : t ⊆ s.sigma g
i : ι
b : β i
hi : ⟨i, b⟩.fst ∈ s ∧ ⟨i, b⟩.snd ∈ g ⟨i, b⟩.fst
hit : ⟨i, b⟩ ∉ t
j : ι
c : β j
hbc : ⟨i, b⟩ ≠ ⟨j, c⟩
hj : ⟨j, c⟩.fst ∈ s ∧ ⟨j, c⟩.snd ∈ g ⟨j, c⟩.fst
hij : i ≠ j
⊢ Disjoint (f ⟨i, b⟩) (f ⟨j, c⟩)
tactic: obtain rfl | hij := eq_or_ne i j