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

tactic: rintro u hu ⟨i, i'⟩ hi hiu
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
⊢ (s ×ˢ t).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✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i') ∈ s ×ˢ t
hiu : (i, i') ∉ u
⊢ Disjoint (f (i, i')) (u.sup f)

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✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i') ∈ s ×ˢ t
hiu : (i, i') ∉ u
⊢ Disjoint (f (i, i')) (u.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✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i') ∈ s ×ˢ t
hiu : (i, i') ∉ u
⊢ ∀ ⦃i_1 : ι × ι'⦄, i_1 ∈ u → Disjoint (f (i, i')) (f i_1)

tactic: rintro ⟨j, j'⟩ hj
state_before: case mk
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i') ∈ s ×ˢ t
hiu : (i, i') ∉ u
⊢ ∀ ⦃i_1 : ι × ι'⦄, i_1 ∈ u → Disjoint (f (i, i')) (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✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i') ∈ s ×ˢ t
hiu : (i, i') ∉ u
j : ι
j' : ι'
hj : (j, j') ∈ u
⊢ Disjoint (f (i, i')) (f (j, j'))

tactic: have hij := (ne_of_mem_of_not_mem hj hiu).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✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i') ∈ s ×ˢ t
hiu : (i, i') ∉ u
j : ι
j' : ι'
hj : (j, j') ∈ u
⊢ Disjoint (f (i, i')) (f (j, j'))
state_after: case mk.mk
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i') ∈ s ×ˢ t
hiu : (i, i') ∉ u
j : ι
j' : ι'
hj : (j, j') ∈ u
hij : (i, i') ≠ (j, j')
⊢ Disjoint (f (i, i')) (f (j, j'))

tactic: replace hj := hu 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✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i') ∈ s ×ˢ t
hiu : (i, i') ∉ u
j : ι
j' : ι'
hj : (j, j') ∈ u
hij : (i, i') ≠ (j, j')
⊢ Disjoint (f (i, i')) (f (j, j'))
state_after: case mk.mk
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i') ∈ s ×ˢ t
hiu : (i, i') ∉ u
j : ι
j' : ι'
hij : (i, i') ≠ (j, j')
hj : (j, j') ∈ s ×ˢ t
⊢ Disjoint (f (i, i')) (f (j, j'))

tactic: rw [mem_product] 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✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i') ∈ s ×ˢ t
hiu : (i, i') ∉ u
j : ι
j' : ι'
hij : (i, i') ≠ (j, j')
hj : (j, j') ∈ s ×ˢ t
⊢ Disjoint (f (i, i')) (f (j, j'))
state_after: case mk.mk
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j : ι
j' : ι'
hij : (i, i') ≠ (j, j')
hj : (j, j').1 ∈ s ∧ (j, j').2 ∈ t
⊢ Disjoint (f (i, i')) (f (j, j'))

tactic: obtain rfl | hij := eq_or_ne i j
state_before: case mk.mk
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j : ι
j' : ι'
hij : (i, i') ≠ (j, j')
hj : (j, j').1 ∈ s ∧ (j, j').2 ∈ t
⊢ Disjoint (f (i, i')) (f (j, j'))
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✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j' : ι'
hij : (i, i') ≠ (i, j')
hj : (i, j').1 ∈ s ∧ (i, j').2 ∈ t
⊢ Disjoint (f (i, i')) (f (i, j'))

case mk.mk.inr
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j : ι
j' : ι'
hij✝ : (i, i') ≠ (j, j')
hj : (j, j').1 ∈ s ∧ (j, j').2 ∈ t
hij : i ≠ j
⊢ Disjoint (f (i, i')) (f (j, j'))

tactic: refine (ht.pairwiseDisjoint hi.2 hj.2 <| (Prod.mk.inj_left _).ne_iff.1 hij).mono ?_ ?_
state_before: case mk.mk.inl
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j' : ι'
hij : (i, i') ≠ (i, j')
hj : (i, j').1 ∈ s ∧ (i, j').2 ∈ t
⊢ Disjoint (f (i, i')) (f (i, j'))
state_after: case mk.mk.inl.refine_1
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j' : ι'
hij : (i, i') ≠ (i, j')
hj : (i, j').1 ∈ s ∧ (i, j').2 ∈ t
⊢ f (i, i') ≤ (fun i' => s.sup fun i => f (i, i')) (i, i').2

case mk.mk.inl.refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j' : ι'
hij : (i, i') ≠ (i, j')
hj : (i, j').1 ∈ s ∧ (i, j').2 ∈ t
⊢ f (i, j') ≤ (fun i' => s.sup fun i => f (i, i')) (i, j').2

tactic: convert le_sup (α := α) hi.1
state_before: case mk.mk.inl.refine_1
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j' : ι'
hij : (i, i') ≠ (i, j')
hj : (i, j').1 ∈ s ∧ (i, j').2 ∈ t
⊢ f (i, i') ≤ (fun i' => s.sup fun i => f (i, i')) (i, i').2
state_after: case h.e'_3
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j' : ι'
hij : (i, i') ≠ (i, j')
hj : (i, j').1 ∈ s ∧ (i, j').2 ∈ t
⊢ f (i, i') = f ((i, i').1, (i, i').2)

tactic: simp
state_before: case h.e'_3
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j' : ι'
hij : (i, i') ≠ (i, j')
hj : (i, j').1 ∈ s ∧ (i, j').2 ∈ t
⊢ f (i, i') = f ((i, i').1, (i, i').2)
state_after: no goals

tactic: convert le_sup (α := α) hj.1
state_before: case mk.mk.inl.refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j' : ι'
hij : (i, i') ≠ (i, j')
hj : (i, j').1 ∈ s ∧ (i, j').2 ∈ t
⊢ f (i, j') ≤ (fun i' => s.sup fun i => f (i, i')) (i, j').2
state_after: case h.e'_3
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j' : ι'
hij : (i, i') ≠ (i, j')
hj : (i, j').1 ∈ s ∧ (i, j').2 ∈ t
⊢ f (i, j') = f ((i, j').1, (i, j').2)

tactic: simp
state_before: case h.e'_3
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j' : ι'
hij : (i, i') ≠ (i, j')
hj : (i, j').1 ∈ s ∧ (i, j').2 ∈ t
⊢ f (i, j') = f ((i, j').1, (i, j').2)
state_after: no goals

tactic: refine (hs.pairwiseDisjoint hi.1 hj.1 hij).mono ?_ ?_
state_before: case mk.mk.inr
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j : ι
j' : ι'
hij✝ : (i, i') ≠ (j, j')
hj : (j, j').1 ∈ s ∧ (j, j').2 ∈ t
hij : i ≠ j
⊢ Disjoint (f (i, i')) (f (j, j'))
state_after: case mk.mk.inr.refine_1
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j : ι
j' : ι'
hij✝ : (i, i') ≠ (j, j')
hj : (j, j').1 ∈ s ∧ (j, j').2 ∈ t
hij : i ≠ j
⊢ f (i, i') ≤ (fun i => t.sup fun i' => f (i, i')) (i, i').1

case mk.mk.inr.refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j : ι
j' : ι'
hij✝ : (i, i') ≠ (j, j')
hj : (j, j').1 ∈ s ∧ (j, j').2 ∈ t
hij : i ≠ j
⊢ f (j, j') ≤ (fun i => t.sup fun i' => f (i, i')) (j, j').1

tactic: convert le_sup (α := α) hi.2
state_before: case mk.mk.inr.refine_1
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j : ι
j' : ι'
hij✝ : (i, i') ≠ (j, j')
hj : (j, j').1 ∈ s ∧ (j, j').2 ∈ t
hij : i ≠ j
⊢ f (i, i') ≤ (fun i => t.sup fun i' => f (i, i')) (i, i').1
state_after: case h.e'_3
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j : ι
j' : ι'
hij✝ : (i, i') ≠ (j, j')
hj : (j, j').1 ∈ s ∧ (j, j').2 ∈ t
hij : i ≠ j
⊢ f (i, i') = f ((i, i').1, (i, i').2)

tactic: simp
state_before: case h.e'_3
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j : ι
j' : ι'
hij✝ : (i, i') ≠ (j, j')
hj : (j, j').1 ∈ s ∧ (j, j').2 ∈ t
hij : i ≠ j
⊢ f (i, i') = f ((i, i').1, (i, i').2)
state_after: no goals

tactic: convert le_sup (α := α) hj.2
state_before: case mk.mk.inr.refine_2
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j : ι
j' : ι'
hij✝ : (i, i') ≠ (j, j')
hj : (j, j').1 ∈ s ∧ (j, j').2 ∈ t
hij : i ≠ j
⊢ f (j, j') ≤ (fun i => t.sup fun i' => f (i, i')) (j, j').1
state_after: case h.e'_3
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j : ι
j' : ι'
hij✝ : (i, i') ≠ (j, j')
hj : (j, j').1 ∈ s ∧ (j, j').2 ∈ t
hij : i ≠ j
⊢ f (j, j') = f ((j, j').1, (j, j').2)

tactic: simp
state_before: case h.e'_3
α : Type u_1
β : Type u_2
ι : Type u_3
ι' : Type u_4
inst✝¹ : DistribLattice α
inst✝ : OrderBot α
s✝ : Finset ι
f✝ : ι → α
s : Finset ι
t : Finset ι'
f : ι × ι' → α
hs : s.SupIndep fun i => t.sup fun i' => f (i, i')
ht : t.SupIndep fun i' => s.sup fun i => f (i, i')
u : Finset (ι × ι')
hu : u ⊆ s ×ˢ t
i : ι
i' : ι'
hi : (i, i').1 ∈ s ∧ (i, i').2 ∈ t
hiu : (i, i') ∉ u
j : ι
j' : ι'
hij✝ : (i, i') ≠ (j, j')
hj : (j, j').1 ∈ s ∧ (j, j').2 ∈ t
hij : i ≠ j
⊢ f (j, j') = f ((j, j').1, (j, j').2)
state_after: no goals