Theorem: thickenedIndicator_tendsto_indicator_closure
File: Mathlib/Topology/MetricSpace/ThickenedIndicator.lean

tactic: have key := thickenedIndicatorAux_tendsto_indicator_closure δseq_lim E
state_before: α : Type u_1
inst✝ : PseudoEMetricSpace α
δseq : ℕ → ℝ
δseq_pos : ∀ (n : ℕ), 0 < δseq n
δseq_lim : Tendsto δseq atTop (𝓝 0)
E : Set α
⊢ Tendsto (fun n => ⇑(thickenedIndicator ⋯ E)) atTop (𝓝 ((closure E).indicator fun x => 1))
state_after: α : Type u_1
inst✝ : PseudoEMetricSpace α
δseq : ℕ → ℝ
δseq_pos : ∀ (n : ℕ), 0 < δseq n
δseq_lim : Tendsto δseq atTop (𝓝 0)
E : Set α
key : Tendsto (fun n => thickenedIndicatorAux (δseq n) E) atTop (𝓝 ((closure E).indicator fun x => 1))
⊢ Tendsto (fun n => ⇑(thickenedIndicator ⋯ E)) atTop (𝓝 ((closure E).indicator fun x => 1))

tactic: rw [tendsto_pi_nhds] at *
state_before: α : Type u_1
inst✝ : PseudoEMetricSpace α
δseq : ℕ → ℝ
δseq_pos : ∀ (n : ℕ), 0 < δseq n
δseq_lim : Tendsto δseq atTop (𝓝 0)
E : Set α
key : Tendsto (fun n => thickenedIndicatorAux (δseq n) E) atTop (𝓝 ((closure E).indicator fun x => 1))
⊢ Tendsto (fun n => ⇑(thickenedIndicator ⋯ E)) atTop (𝓝 ((closure E).indicator fun x => 1))
state_after: α : Type u_1
inst✝ : PseudoEMetricSpace α
δseq : ℕ → ℝ
δseq_pos : ∀ (n : ℕ), 0 < δseq n
δseq_lim : Tendsto δseq atTop (𝓝 0)
E : Set α
key : ∀ (x : α), Tendsto (fun i => thickenedIndicatorAux (δseq i) E x) atTop (𝓝 ((closure E).indicator (fun x => 1) x))
⊢ ∀ (x : α), Tendsto (fun i => (thickenedIndicator ⋯ E) x) atTop (𝓝 ((closure E).indicator (fun x => 1) x))

tactic: intro x
state_before: α : Type u_1
inst✝ : PseudoEMetricSpace α
δseq : ℕ → ℝ
δseq_pos : ∀ (n : ℕ), 0 < δseq n
δseq_lim : Tendsto δseq atTop (𝓝 0)
E : Set α
key : ∀ (x : α), Tendsto (fun i => thickenedIndicatorAux (δseq i) E x) atTop (𝓝 ((closure E).indicator (fun x => 1) x))
⊢ ∀ (x : α), Tendsto (fun i => (thickenedIndicator ⋯ E) x) atTop (𝓝 ((closure E).indicator (fun x => 1) x))
state_after: α : Type u_1
inst✝ : PseudoEMetricSpace α
δseq : ℕ → ℝ
δseq_pos : ∀ (n : ℕ), 0 < δseq n
δseq_lim : Tendsto δseq atTop (𝓝 0)
E : Set α
key : ∀ (x : α), Tendsto (fun i => thickenedIndicatorAux (δseq i) E x) atTop (𝓝 ((closure E).indicator (fun x => 1) x))
x : α
⊢ Tendsto (fun i => (thickenedIndicator ⋯ E) x) atTop (𝓝 ((closure E).indicator (fun x => 1) x))

tactic: rw [show indicator (closure E) (fun _ => (1 : ℝ≥0)) x =
      (indicator (closure E) (fun _ => (1 : ℝ≥0∞)) x).toNNReal
    by refine (congr_fun (comp_indicator_const 1 ENNReal.toNNReal zero_toNNReal) x).symm]
state_before: α : Type u_1
inst✝ : PseudoEMetricSpace α
δseq : ℕ → ℝ
δseq_pos : ∀ (n : ℕ), 0 < δseq n
δseq_lim : Tendsto δseq atTop (𝓝 0)
E : Set α
key : ∀ (x : α), Tendsto (fun i => thickenedIndicatorAux (δseq i) E x) atTop (𝓝 ((closure E).indicator (fun x => 1) x))
x : α
⊢ Tendsto (fun i => (thickenedIndicator ⋯ E) x) atTop (𝓝 ((closure E).indicator (fun x => 1) x))
state_after: α : Type u_1
inst✝ : PseudoEMetricSpace α
δseq : ℕ → ℝ
δseq_pos : ∀ (n : ℕ), 0 < δseq n
δseq_lim : Tendsto δseq atTop (𝓝 0)
E : Set α
key : ∀ (x : α), Tendsto (fun i => thickenedIndicatorAux (δseq i) E x) atTop (𝓝 ((closure E).indicator (fun x => 1) x))
x : α
⊢ Tendsto (fun i => (thickenedIndicator ⋯ E) x) atTop (𝓝 ((closure E).indicator (fun x => 1) x).toNNReal)

tactic: refine Tendsto.comp (tendsto_toNNReal ?_) (key x)
state_before: α : Type u_1
inst✝ : PseudoEMetricSpace α
δseq : ℕ → ℝ
δseq_pos : ∀ (n : ℕ), 0 < δseq n
δseq_lim : Tendsto δseq atTop (𝓝 0)
E : Set α
key : ∀ (x : α), Tendsto (fun i => thickenedIndicatorAux (δseq i) E x) atTop (𝓝 ((closure E).indicator (fun x => 1) x))
x : α
⊢ Tendsto (fun i => (thickenedIndicator ⋯ E) x) atTop (𝓝 ((closure E).indicator (fun x => 1) x).toNNReal)
state_after: α : Type u_1
inst✝ : PseudoEMetricSpace α
δseq : ℕ → ℝ
δseq_pos : ∀ (n : ℕ), 0 < δseq n
δseq_lim : Tendsto δseq atTop (𝓝 0)
E : Set α
key : ∀ (x : α), Tendsto (fun i => thickenedIndicatorAux (δseq i) E x) atTop (𝓝 ((closure E).indicator (fun x => 1) x))
x : α
⊢ (closure E).indicator (fun x => 1) x ≠ ⊤

tactic: by_cases x_mem : x ∈ closure E <;> simp [x_mem]
state_before: α : Type u_1
inst✝ : PseudoEMetricSpace α
δseq : ℕ → ℝ
δseq_pos : ∀ (n : ℕ), 0 < δseq n
δseq_lim : Tendsto δseq atTop (𝓝 0)
E : Set α
key : ∀ (x : α), Tendsto (fun i => thickenedIndicatorAux (δseq i) E x) atTop (𝓝 ((closure E).indicator (fun x => 1) x))
x : α
⊢ (closure E).indicator (fun x => 1) x ≠ ⊤
state_after: no goals

tactic: refine (congr_fun (comp_indicator_const 1 ENNReal.toNNReal zero_toNNReal) x).symm
state_before: α : Type u_1
inst✝ : PseudoEMetricSpace α
δseq : ℕ → ℝ
δseq_pos : ∀ (n : ℕ), 0 < δseq n
δseq_lim : Tendsto δseq atTop (𝓝 0)
E : Set α
key : ∀ (x : α), Tendsto (fun i => thickenedIndicatorAux (δseq i) E x) atTop (𝓝 ((closure E).indicator (fun x => 1) x))
x : α
⊢ (closure E).indicator (fun x => 1) x = ((closure E).indicator (fun x => 1) x).toNNReal
state_after: no goals