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

Proof steps:
state_before: α : Type u_1
inst✝ : PseudoEMetricSpace α
δ : ℝ
δ_pos : 0 < δ
E : Set α
⊢ Continuous fun x => (thickenedIndicatorAux δ E x).toNNReal
state_after: α : Type u_1
inst✝ : PseudoEMetricSpace α
δ : ℝ
δ_pos : 0 < δ
E : Set α
⊢ ∀ (x : α), thickenedIndicatorAux δ E x ∈ {a | a ≠ ⊤}
tactic: apply ContinuousOn.comp_continuous continuousOn_toNNReal
      (continuous_thickenedIndicatorAux δ_pos E)
state_before: α : Type u_1
inst✝ : PseudoEMetricSpace α
δ : ℝ
δ_pos : 0 < δ
E : Set α
⊢ ∀ (x : α), thickenedIndicatorAux δ E x ∈ {a | a ≠ ⊤}
state_after: α : Type u_1
inst✝ : PseudoEMetricSpace α
δ : ℝ
δ_pos : 0 < δ
E : Set α
x : α
⊢ thickenedIndicatorAux δ E x ∈ {a | a ≠ ⊤}
tactic: intro x
state_before: α : Type u_1
inst✝ : PseudoEMetricSpace α
δ : ℝ
δ_pos : 0 < δ
E : Set α
x : α
⊢ thickenedIndicatorAux δ E x ∈ {a | a ≠ ⊤}
state_after: no goals
tactic: exact (lt_of_le_of_lt (@thickenedIndicatorAux_le_one _ _ δ E x) one_lt_top).ne
state_before: α : Type u_1
inst✝ : PseudoEMetricSpace α
δ : ℝ
δ_pos : 0 < δ
E : Set α
⊢ ∃ C,
    ∀ (x y : α),
      dist ({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun x)
          ({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun y) ≤
        C
state_after: case h
α : Type u_1
inst✝ : PseudoEMetricSpace α
δ : ℝ
δ_pos : 0 < δ
E : Set α
⊢ ∀ (x y : α),
    dist ({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun x)
        ({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun y) ≤
      2
tactic: use 2
state_before: case h
α : Type u_1
inst✝ : PseudoEMetricSpace α
δ : ℝ
δ_pos : 0 < δ
E : Set α
⊢ ∀ (x y : α),
    dist ({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun x)
        ({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun y) ≤
      2
state_after: case h
α : Type u_1
inst✝ : PseudoEMetricSpace α
δ : ℝ
δ_pos : 0 < δ
E : Set α
x y : α
⊢ dist ({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun x)
      ({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun y) ≤
    2
tactic: intro x y
state_before: case h
α : Type u_1
inst✝ : PseudoEMetricSpace α
δ : ℝ
δ_pos : 0 < δ
E : Set α
x y : α
⊢ dist ({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun x)
      ({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun y) ≤
    2
state_after: case h
α : Type u_1
inst✝ : PseudoEMetricSpace α
δ : ℝ
δ_pos : 0 < δ
E : Set α
x y : α
⊢ |↑({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun x) -
        ↑({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun y)| ≤
    2
tactic: rw [NNReal.dist_eq]
state_before: case h
α : Type u_1
inst✝ : PseudoEMetricSpace α
δ : ℝ
δ_pos : 0 < δ
E : Set α
x y : α
⊢ |↑({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun x) -
        ↑({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun y)| ≤
    2
state_after: case h
α : Type u_1
inst✝ : PseudoEMetricSpace α
δ : ℝ
δ_pos : 0 < δ
E : Set α
x y : α
⊢ |↑({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun x)| +
      |↑({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun y)| ≤
    2
tactic: apply (abs_sub _ _).trans
state_before: case h
α : Type u_1
inst✝ : PseudoEMetricSpace α
δ : ℝ
δ_pos : 0 < δ
E : Set α
x y : α
⊢ |↑({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun x)| +
      |↑({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun y)| ≤
    2
state_after: case h
α : Type u_1
inst✝ : PseudoEMetricSpace α
δ : ℝ
δ_pos : 0 < δ
E : Set α
x y : α
⊢ ↑({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun x) +
      ↑({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun y) ≤
    1 + 1
tactic: rw [NNReal.abs_eq, NNReal.abs_eq, ← one_add_one_eq_two]
state_before: case h
α : Type u_1
inst✝ : PseudoEMetricSpace α
δ : ℝ
δ_pos : 0 < δ
E : Set α
x y : α
⊢ ↑({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun x) +
      ↑({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun y) ≤
    1 + 1
state_after: case h
α : Type u_1
inst✝ : PseudoEMetricSpace α
δ : ℝ
δ_pos : 0 < δ
E : Set α
x y : α
key : ∀ (x : α), thickenedIndicatorAux δ E x ≤ 1
⊢ ↑({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun x) +
      ↑({ toFun := fun x => (thickenedIndicatorAux δ E x).toNNReal, continuous_toFun := ⋯ }.toFun y) ≤
    1 + 1
tactic: have key := @thickenedIndicatorAux_le_one _ _ δ E