Theorem: Set.mulIndicator_iUnion_apply
File: Mathlib/Algebra/IndicatorFunction.lean

tactic: by_cases hx : x ∈ ⋃ i, s i
state_before: α : Type u_3
β : Type ?u.157531
ι✝ : Type ?u.157534
M✝ : Type ?u.157537
N : Type ?u.157540
inst✝³ : One M✝
s✝ t : Set α
f✝ g : α → M✝
a : α
y : M✝
inst✝² : Preorder M✝
ι : Sort u_1
M : Type u_2
inst✝¹ : CompleteLattice M
inst✝ : One M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
⊢ mulIndicator (⋃ (i : ι), s i) f x = ⨆ (i : ι), mulIndicator (s i) f x

tactic: rw [mulIndicator_of_mem hx]
state_before: case pos
α : Type u_3
β : Type ?u.157531
ι✝ : Type ?u.157534
M✝ : Type ?u.157537
N : Type ?u.157540
inst✝³ : One M✝
s✝ t : Set α
f✝ g : α → M✝
a : α
y : M✝
inst✝² : Preorder M✝
ι : Sort u_1
M : Type u_2
inst✝¹ : CompleteLattice M
inst✝ : One M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : x ∈ ⋃ (i : ι), s i
⊢ mulIndicator (⋃ (i : ι), s i) f x = ⨆ (i : ι), mulIndicator (s i) f x

tactic: rw [mem_iUnion] at hx
state_before: case pos
α : Type u_3
β : Type ?u.157531
ι✝ : Type ?u.157534
M✝ : Type ?u.157537
N : Type ?u.157540
inst✝³ : One M✝
s✝ t : Set α
f✝ g : α → M✝
a : α
y : M✝
inst✝² : Preorder M✝
ι : Sort u_1
M : Type u_2
inst✝¹ : CompleteLattice M
inst✝ : One M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : x ∈ ⋃ (i : ι), s i
⊢ f x = ⨆ (i : ι), mulIndicator (s i) f x

tactic: refine' le_antisymm _ (iSup_le fun i => mulIndicator_le_self' (fun x _ => h1 ▸ bot_le) x)
state_before: case pos
α : Type u_3
β : Type ?u.157531
ι✝ : Type ?u.157534
M✝ : Type ?u.157537
N : Type ?u.157540
inst✝³ : One M✝
s✝ t : Set α
f✝ g : α → M✝
a : α
y : M✝
inst✝² : Preorder M✝
ι : Sort u_1
M : Type u_2
inst✝¹ : CompleteLattice M
inst✝ : One M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : ∃ i, x ∈ s i
⊢ f x = ⨆ (i : ι), mulIndicator (s i) f x

tactic: rcases hx with ⟨i, hi⟩
state_before: case pos
α : Type u_3
β : Type ?u.157531
ι✝ : Type ?u.157534
M✝ : Type ?u.157537
N : Type ?u.157540
inst✝³ : One M✝
s✝ t : Set α
f✝ g : α → M✝
a : α
y : M✝
inst✝² : Preorder M✝
ι : Sort u_1
M : Type u_2
inst✝¹ : CompleteLattice M
inst✝ : One M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : ∃ i, x ∈ s i
⊢ f x ≤ ⨆ (i : ι), mulIndicator (s i) f x

tactic: exact le_iSup_of_le i (ge_of_eq <| mulIndicator_of_mem hi _)
state_before: case pos.intro
α : Type u_3
β : Type ?u.157531
ι✝ : Type ?u.157534
M✝ : Type ?u.157537
N : Type ?u.157540
inst✝³ : One M✝
s✝ t : Set α
f✝ g : α → M✝
a : α
y : M✝
inst✝² : Preorder M✝
ι : Sort u_1
M : Type u_2
inst✝¹ : CompleteLattice M
inst✝ : One M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
i : ι
hi : x ∈ s i
⊢ f x ≤ ⨆ (i : ι), mulIndicator (s i) f x

tactic: rw [mulIndicator_of_not_mem hx]
state_before: case neg
α : Type u_3
β : Type ?u.157531
ι✝ : Type ?u.157534
M✝ : Type ?u.157537
N : Type ?u.157540
inst✝³ : One M✝
s✝ t : Set α
f✝ g : α → M✝
a : α
y : M✝
inst✝² : Preorder M✝
ι : Sort u_1
M : Type u_2
inst✝¹ : CompleteLattice M
inst✝ : One M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : ¬x ∈ ⋃ (i : ι), s i
⊢ mulIndicator (⋃ (i : ι), s i) f x = ⨆ (i : ι), mulIndicator (s i) f x

tactic: simp only [mem_iUnion, not_exists] at hx
state_before: case neg
α : Type u_3
β : Type ?u.157531
ι✝ : Type ?u.157534
M✝ : Type ?u.157537
N : Type ?u.157540
inst✝³ : One M✝
s✝ t : Set α
f✝ g : α → M✝
a : α
y : M✝
inst✝² : Preorder M✝
ι : Sort u_1
M : Type u_2
inst✝¹ : CompleteLattice M
inst✝ : One M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : ¬x ∈ ⋃ (i : ι), s i
⊢ 1 = ⨆ (i : ι), mulIndicator (s i) f x

tactic: simp [hx, ← h1]
state_before: case neg
α : Type u_3
β : Type ?u.157531
ι✝ : Type ?u.157534
M✝ : Type ?u.157537
N : Type ?u.157540
inst✝³ : One M✝
s✝ t : Set α
f✝ g : α → M✝
a : α
y : M✝
inst✝² : Preorder M✝
ι : Sort u_1
M : Type u_2
inst✝¹ : CompleteLattice M
inst✝ : One M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : ∀ (x_1 : ι), ¬x ∈ s x_1
⊢ 1 = ⨆ (i : ι), mulIndicator (s i) f x