Theorem: Set.mulIndicator_iUnion_apply
File: Mathlib/Algebra/Order/Group/Indicator.lean

tactic: by_cases hx : x ∈ ⋃ i, s i
state_before: ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : CompleteLattice M
inst✝ : One M
s✝ t : Set α
f✝ g : α → M
a : α
y : M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
⊢ (⋃ i, s i).mulIndicator f x = ⨆ i, (s i).mulIndicator f x
state_after: case pos
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : CompleteLattice M
inst✝ : One M
s✝ t : Set α
f✝ g : α → M
a : α
y : M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : x ∈ ⋃ i, s i
⊢ (⋃ i, s i).mulIndicator f x = ⨆ i, (s i).mulIndicator f x

case neg
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : CompleteLattice M
inst✝ : One M
s✝ t : Set α
f✝ g : α → M
a : α
y : M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : x ∉ ⋃ i, s i
⊢ (⋃ i, s i).mulIndicator f x = ⨆ i, (s i).mulIndicator f x

tactic: rw [mulIndicator_of_mem hx]
state_before: case pos
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : CompleteLattice M
inst✝ : One M
s✝ t : Set α
f✝ g : α → M
a : α
y : M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : x ∈ ⋃ i, s i
⊢ (⋃ i, s i).mulIndicator f x = ⨆ i, (s i).mulIndicator f x
state_after: case pos
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : CompleteLattice M
inst✝ : One M
s✝ t : Set α
f✝ g : α → M
a : α
y : M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : x ∈ ⋃ i, s i
⊢ f x = ⨆ i, (s i).mulIndicator f x

tactic: rw [mem_iUnion] at hx
state_before: case pos
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : CompleteLattice M
inst✝ : One M
s✝ t : Set α
f✝ g : α → M
a : α
y : M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : x ∈ ⋃ i, s i
⊢ f x = ⨆ i, (s i).mulIndicator f x
state_after: case pos
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : CompleteLattice M
inst✝ : One M
s✝ t : Set α
f✝ g : α → M
a : α
y : M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : ∃ i, x ∈ s i
⊢ f x = ⨆ i, (s i).mulIndicator f x

tactic: refine le_antisymm ?_ (iSup_le fun i ↦ mulIndicator_le_self' (fun x _ ↦ h1 ▸ bot_le) x)
state_before: case pos
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : CompleteLattice M
inst✝ : One M
s✝ t : Set α
f✝ g : α → M
a : α
y : M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : ∃ i, x ∈ s i
⊢ f x = ⨆ i, (s i).mulIndicator f x
state_after: case pos
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : CompleteLattice M
inst✝ : One M
s✝ t : Set α
f✝ g : α → M
a : α
y : M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : ∃ i, x ∈ s i
⊢ f x ≤ ⨆ i, (s i).mulIndicator f x

tactic: rcases hx with ⟨i, hi⟩
state_before: case pos
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : CompleteLattice M
inst✝ : One M
s✝ t : Set α
f✝ g : α → M
a : α
y : M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : ∃ i, x ∈ s i
⊢ f x ≤ ⨆ i, (s i).mulIndicator f x
state_after: case pos.intro
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : CompleteLattice M
inst✝ : One M
s✝ t : Set α
f✝ g : α → M
a : α
y : M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
i : ι
hi : x ∈ s i
⊢ f x ≤ ⨆ i, (s i).mulIndicator f x

tactic: exact le_iSup_of_le i (ge_of_eq <| mulIndicator_of_mem hi _)
state_before: case pos.intro
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : CompleteLattice M
inst✝ : One M
s✝ t : Set α
f✝ g : α → M
a : α
y : M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
i : ι
hi : x ∈ s i
⊢ f x ≤ ⨆ i, (s i).mulIndicator f x
state_after: no goals

tactic: rw [mulIndicator_of_not_mem hx]
state_before: case neg
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : CompleteLattice M
inst✝ : One M
s✝ t : Set α
f✝ g : α → M
a : α
y : M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : x ∉ ⋃ i, s i
⊢ (⋃ i, s i).mulIndicator f x = ⨆ i, (s i).mulIndicator f x
state_after: case neg
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : CompleteLattice M
inst✝ : One M
s✝ t : Set α
f✝ g : α → M
a : α
y : M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : x ∉ ⋃ i, s i
⊢ 1 = ⨆ i, (s i).mulIndicator f x

tactic: simp only [mem_iUnion, not_exists] at hx
state_before: case neg
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : CompleteLattice M
inst✝ : One M
s✝ t : Set α
f✝ g : α → M
a : α
y : M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : x ∉ ⋃ i, s i
⊢ 1 = ⨆ i, (s i).mulIndicator f x
state_after: case neg
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : CompleteLattice M
inst✝ : One M
s✝ t : Set α
f✝ g : α → M
a : α
y : M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : ∀ (x_1 : ι), x ∉ s x_1
⊢ 1 = ⨆ i, (s i).mulIndicator f x

tactic: simp [hx, ← h1]
state_before: case neg
ι : Sort u_1
α : Type u_2
β : Type u_3
M : Type u_4
inst✝¹ : CompleteLattice M
inst✝ : One M
s✝ t : Set α
f✝ g : α → M
a : α
y : M
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : ∀ (x_1 : ι), x ∉ s x_1
⊢ 1 = ⨆ i, (s i).mulIndicator f x
state_after: no goals