Theorem: Set.mulIndicator_iInter_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
inst✝ : Nonempty ι
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
inst✝ : Nonempty ι
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
inst✝ : Nonempty ι
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
inst✝ : Nonempty ι
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
inst✝ : Nonempty ι
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : x ∈ ⋂ i, s i
⊢ f x = ⨅ i, (s i).mulIndicator f x

tactic: rw [mem_iInter] 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
inst✝ : Nonempty ι
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
inst✝ : Nonempty ι
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : ∀ (i : ι), x ∈ s i
⊢ f x = ⨅ i, (s i).mulIndicator f x

tactic: refine le_antisymm ?_ (by simp only [mulIndicator_of_mem (hx _), ciInf_const, le_refl])
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
inst✝ : Nonempty ι
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
inst✝ : Nonempty ι
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : ∀ (i : ι), x ∈ s i
⊢ f x ≤ ⨅ i, (s i).mulIndicator f x

tactic: exact le_iInf (fun j ↦ by simp only [mulIndicator_of_mem (hx j), le_refl])
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
inst✝ : Nonempty ι
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : ∀ (i : ι), x ∈ s i
⊢ f x ≤ ⨅ i, (s i).mulIndicator f x
state_after: no goals

tactic: simp only [mulIndicator_of_mem (hx _), ciInf_const, le_refl]
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
inst✝ : Nonempty ι
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : ∀ (i : ι), x ∈ s i
⊢ ⨅ i, (s i).mulIndicator f x ≤ f x
state_after: no goals

tactic: simp only [mulIndicator_of_mem (hx j), le_refl]
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
inst✝ : Nonempty ι
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : ∀ (i : ι), x ∈ s i
j : ι
⊢ f x ≤ (s j).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
inst✝ : Nonempty ι
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
inst✝ : Nonempty ι
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : x ∉ ⋂ i, s i
⊢ 1 = ⨅ i, (s i).mulIndicator f x

tactic: simp only [mem_iInter, not_exists, not_forall] 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
inst✝ : Nonempty ι
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
inst✝ : Nonempty ι
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : ∃ x_1, x ∉ s x_1
⊢ 1 = ⨅ i, (s i).mulIndicator f x

tactic: rcases hx with ⟨j, hj⟩
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
inst✝ : Nonempty ι
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
hx : ∃ x_1, x ∉ s x_1
⊢ 1 = ⨅ i, (s i).mulIndicator f x
state_after: case neg.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
inst✝ : Nonempty ι
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
j : ι
hj : x ∉ s j
⊢ 1 = ⨅ i, (s i).mulIndicator f x

tactic: refine le_antisymm (by simp only [← h1, le_iInf_iff, bot_le, forall_const]) ?_
state_before: case neg.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
inst✝ : Nonempty ι
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
j : ι
hj : x ∉ s j
⊢ 1 = ⨅ i, (s i).mulIndicator f x
state_after: case neg.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
inst✝ : Nonempty ι
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
j : ι
hj : x ∉ s j
⊢ ⨅ i, (s i).mulIndicator f x ≤ 1

tactic: simpa [mulIndicator_of_not_mem hj] using (iInf_le (fun i ↦ (s i).mulIndicator f) j) x
state_before: case neg.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
inst✝ : Nonempty ι
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
j : ι
hj : x ∉ s j
⊢ ⨅ i, (s i).mulIndicator f x ≤ 1
state_after: no goals

tactic: simp only [← h1, le_iInf_iff, bot_le, forall_const]
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
inst✝ : Nonempty ι
h1 : ⊥ = 1
s : ι → Set α
f : α → M
x : α
j : ι
hj : x ∉ s j
⊢ 1 ≤ ⨅ i, (s i).mulIndicator f x
state_after: no goals