Theorem: Set.Finite.iSup_biInf_of_monotone
File: Mathlib/Data/Set/Finite.lean

tactic: induction' s, hs using Set.Finite.dinduction_on with a s _ _ ihs hf
state_before: α✝ : Type u
β : Type v
ι✝ : Sort w
γ : Type x
s✝ t : Set α✝
ι : Type u_1
ι' : Type u_2
α : Type u_3
inst✝³ : Preorder ι'
inst✝² : Nonempty ι'
inst✝¹ : IsDirected ι' fun x x_1 => x ≤ x_1
inst✝ : Order.Frame α
s : Set ι
hs : s.Finite
f : ι → ι' → α
hf : ∀ i ∈ s, Monotone (f i)
⊢ ⨆ j, ⨅ i ∈ s, f i j = ⨅ i ∈ s, ⨆ j, f i j
state_after: case H0
α✝ : Type u
β : Type v
ι✝ : Sort w
γ : Type x
s✝ t : Set α✝
ι : Type u_1
ι' : Type u_2
α : Type u_3
inst✝³ : Preorder ι'
inst✝² : Nonempty ι'
inst✝¹ : IsDirected ι' fun x x_1 => x ≤ x_1
inst✝ : Order.Frame α
s : Set ι
f : ι → ι' → α
hf : ∀ i ∈ ∅, Monotone (f i)
⊢ ⨆ j, ⨅ i ∈ ∅, f i j = ⨅ i ∈ ∅, ⨆ j, f i j

case H1
α✝ : Type u
β : Type v
ι✝ : Sort w
γ : Type x
s✝¹ t : Set α✝
ι : Type u_1
ι' : Type u_2
α : Type u_3
inst✝³ : Preorder ι'
inst✝² : Nonempty ι'
inst✝¹ : IsDirected ι' fun x x_1 => x ≤ x_1
inst✝ : Order.Frame α
s✝ : Set ι
f : ι → ι' → α
a : ι
s : Set ι
a✝ : a ∉ s
h✝ : s.Finite
ihs : (∀ i ∈ s, Monotone (f i)) → ⨆ j, ⨅ i ∈ s, f i j = ⨅ i ∈ s, ⨆ j, f i j
hf : ∀ i ∈ insert a s, Monotone (f i)
⊢ ⨆ j, ⨅ i ∈ insert a s, f i j = ⨅ i ∈ insert a s, ⨆ j, f i j

tactic: simp [iSup_const]
state_before: case H0
α✝ : Type u
β : Type v
ι✝ : Sort w
γ : Type x
s✝ t : Set α✝
ι : Type u_1
ι' : Type u_2
α : Type u_3
inst✝³ : Preorder ι'
inst✝² : Nonempty ι'
inst✝¹ : IsDirected ι' fun x x_1 => x ≤ x_1
inst✝ : Order.Frame α
s : Set ι
f : ι → ι' → α
hf : ∀ i ∈ ∅, Monotone (f i)
⊢ ⨆ j, ⨅ i ∈ ∅, f i j = ⨅ i ∈ ∅, ⨆ j, f i j
state_after: no goals

tactic: rw [forall_mem_insert] at hf
state_before: case H1
α✝ : Type u
β : Type v
ι✝ : Sort w
γ : Type x
s✝¹ t : Set α✝
ι : Type u_1
ι' : Type u_2
α : Type u_3
inst✝³ : Preorder ι'
inst✝² : Nonempty ι'
inst✝¹ : IsDirected ι' fun x x_1 => x ≤ x_1
inst✝ : Order.Frame α
s✝ : Set ι
f : ι → ι' → α
a : ι
s : Set ι
a✝ : a ∉ s
h✝ : s.Finite
ihs : (∀ i ∈ s, Monotone (f i)) → ⨆ j, ⨅ i ∈ s, f i j = ⨅ i ∈ s, ⨆ j, f i j
hf : ∀ i ∈ insert a s, Monotone (f i)
⊢ ⨆ j, ⨅ i ∈ insert a s, f i j = ⨅ i ∈ insert a s, ⨆ j, f i j
state_after: case H1
α✝ : Type u
β : Type v
ι✝ : Sort w
γ : Type x
s✝¹ t : Set α✝
ι : Type u_1
ι' : Type u_2
α : Type u_3
inst✝³ : Preorder ι'
inst✝² : Nonempty ι'
inst✝¹ : IsDirected ι' fun x x_1 => x ≤ x_1
inst✝ : Order.Frame α
s✝ : Set ι
f : ι → ι' → α
a : ι
s : Set ι
a✝ : a ∉ s
h✝ : s.Finite
ihs : (∀ i ∈ s, Monotone (f i)) → ⨆ j, ⨅ i ∈ s, f i j = ⨅ i ∈ s, ⨆ j, f i j
hf : Monotone (f a) ∧ ∀ x ∈ s, Monotone (f x)
⊢ ⨆ j, ⨅ i ∈ insert a s, f i j = ⨅ i ∈ insert a s, ⨆ j, f i j

tactic: simp only [iInf_insert, ← ihs hf.2]
state_before: case H1
α✝ : Type u
β : Type v
ι✝ : Sort w
γ : Type x
s✝¹ t : Set α✝
ι : Type u_1
ι' : Type u_2
α : Type u_3
inst✝³ : Preorder ι'
inst✝² : Nonempty ι'
inst✝¹ : IsDirected ι' fun x x_1 => x ≤ x_1
inst✝ : Order.Frame α
s✝ : Set ι
f : ι → ι' → α
a : ι
s : Set ι
a✝ : a ∉ s
h✝ : s.Finite
ihs : (∀ i ∈ s, Monotone (f i)) → ⨆ j, ⨅ i ∈ s, f i j = ⨅ i ∈ s, ⨆ j, f i j
hf : Monotone (f a) ∧ ∀ x ∈ s, Monotone (f x)
⊢ ⨆ j, ⨅ i ∈ insert a s, f i j = ⨅ i ∈ insert a s, ⨆ j, f i j
state_after: case H1
α✝ : Type u
β : Type v
ι✝ : Sort w
γ : Type x
s✝¹ t : Set α✝
ι : Type u_1
ι' : Type u_2
α : Type u_3
inst✝³ : Preorder ι'
inst✝² : Nonempty ι'
inst✝¹ : IsDirected ι' fun x x_1 => x ≤ x_1
inst✝ : Order.Frame α
s✝ : Set ι
f : ι → ι' → α
a : ι
s : Set ι
a✝ : a ∉ s
h✝ : s.Finite
ihs : (∀ i ∈ s, Monotone (f i)) → ⨆ j, ⨅ i ∈ s, f i j = ⨅ i ∈ s, ⨆ j, f i j
hf : Monotone (f a) ∧ ∀ x ∈ s, Monotone (f x)
⊢ ⨆ j, f a j ⊓ ⨅ x ∈ s, f x j = (⨆ j, f a j) ⊓ ⨆ j, ⨅ i ∈ s, f i j

tactic: exact iSup_inf_of_monotone hf.1 fun j₁ j₂ hj => iInf₂_mono fun i hi => hf.2 i hi hj
state_before: case H1
α✝ : Type u
β : Type v
ι✝ : Sort w
γ : Type x
s✝¹ t : Set α✝
ι : Type u_1
ι' : Type u_2
α : Type u_3
inst✝³ : Preorder ι'
inst✝² : Nonempty ι'
inst✝¹ : IsDirected ι' fun x x_1 => x ≤ x_1
inst✝ : Order.Frame α
s✝ : Set ι
f : ι → ι' → α
a : ι
s : Set ι
a✝ : a ∉ s
h✝ : s.Finite
ihs : (∀ i ∈ s, Monotone (f i)) → ⨆ j, ⨅ i ∈ s, f i j = ⨅ i ∈ s, ⨆ j, f i j
hf : Monotone (f a) ∧ ∀ x ∈ s, Monotone (f x)
⊢ ⨆ j, f a j ⊓ ⨅ x ∈ s, f x j = (⨆ j, f a j) ⊓ ⨆ j, ⨅ i ∈ s, f i j
state_after: no goals