Theorem: Subalgebra.SeparatesPoints.strongly
File: Mathlib/Topology/ContinuousFunction/Algebra.lean

tactic: by_cases n : x = y
state_before: α : Type u_2
inst✝¹² : TopologicalSpace α
R : Type ?u.1508154
inst✝¹¹ : CommSemiring R
A : Type ?u.1508160
inst✝¹⁰ : TopologicalSpace A
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : TopologicalSemiring A
A₂ : Type ?u.1508332
inst✝⁶ : TopologicalSpace A₂
inst✝⁵ : Semiring A₂
inst✝⁴ : Algebra R A₂
inst✝³ : TopologicalSemiring A₂
𝕜 : Type u_1
inst✝² : TopologicalSpace 𝕜
s✝ : Set C(α, 𝕜)
f : ↑s✝
x✝ : α
inst✝¹ : Field 𝕜
inst✝ : TopologicalRing 𝕜
s : Subalgebra 𝕜 C(α, 𝕜)
h : SeparatesPoints s
v : α → 𝕜
x y : α
⊢ ∃ f, f ∈ ↑s ∧ ↑f x = v x ∧ ↑f y = v y

tactic: obtain ⟨_, ⟨f, hf, rfl⟩, hxy⟩ := h n
state_before: case neg
α : Type u_2
inst✝¹² : TopologicalSpace α
R : Type ?u.1508154
inst✝¹¹ : CommSemiring R
A : Type ?u.1508160
inst✝¹⁰ : TopologicalSpace A
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : TopologicalSemiring A
A₂ : Type ?u.1508332
inst✝⁶ : TopologicalSpace A₂
inst✝⁵ : Semiring A₂
inst✝⁴ : Algebra R A₂
inst✝³ : TopologicalSemiring A₂
𝕜 : Type u_1
inst✝² : TopologicalSpace 𝕜
s✝ : Set C(α, 𝕜)
f : ↑s✝
x✝ : α
inst✝¹ : Field 𝕜
inst✝ : TopologicalRing 𝕜
s : Subalgebra 𝕜 C(α, 𝕜)
h : SeparatesPoints s
v : α → 𝕜
x y : α
n : ¬x = y
⊢ ∃ f, f ∈ ↑s ∧ ↑f x = v x ∧ ↑f y = v y

tactic: replace hxy : f x - f y ≠ 0 := sub_ne_zero_of_ne hxy
state_before: case neg.intro.intro.intro.intro
α : Type u_2
inst✝¹² : TopologicalSpace α
R : Type ?u.1508154
inst✝¹¹ : CommSemiring R
A : Type ?u.1508160
inst✝¹⁰ : TopologicalSpace A
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : TopologicalSemiring A
A₂ : Type ?u.1508332
inst✝⁶ : TopologicalSpace A₂
inst✝⁵ : Semiring A₂
inst✝⁴ : Algebra R A₂
inst✝³ : TopologicalSemiring A₂
𝕜 : Type u_1
inst✝² : TopologicalSpace 𝕜
s✝ : Set C(α, 𝕜)
f✝ : ↑s✝
x✝ : α
inst✝¹ : Field 𝕜
inst✝ : TopologicalRing 𝕜
s : Subalgebra 𝕜 C(α, 𝕜)
h : SeparatesPoints s
v : α → 𝕜
x y : α
n : ¬x = y
f : C(α, 𝕜)
hf : f ∈ ↑s
hxy : (fun f => ↑f) f x ≠ (fun f => ↑f) f y
⊢ ∃ f, f ∈ ↑s ∧ ↑f x = v x ∧ ↑f y = v y

tactic: let a := v x
state_before: case neg.intro.intro.intro.intro
α : Type u_2
inst✝¹² : TopologicalSpace α
R : Type ?u.1508154
inst✝¹¹ : CommSemiring R
A : Type ?u.1508160
inst✝¹⁰ : TopologicalSpace A
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : TopologicalSemiring A
A₂ : Type ?u.1508332
inst✝⁶ : TopologicalSpace A₂
inst✝⁵ : Semiring A₂
inst✝⁴ : Algebra R A₂
inst✝³ : TopologicalSemiring A₂
𝕜 : Type u_1
inst✝² : TopologicalSpace 𝕜
s✝ : Set C(α, 𝕜)
f✝ : ↑s✝
x✝ : α
inst✝¹ : Field 𝕜
inst✝ : TopologicalRing 𝕜
s : Subalgebra 𝕜 C(α, 𝕜)
h : SeparatesPoints s
v : α → 𝕜
x y : α
n : ¬x = y
f : C(α, 𝕜)
hf : f ∈ ↑s
hxy : ↑f x - ↑f y ≠ 0
⊢ ∃ f, f ∈ ↑s ∧ ↑f x = v x ∧ ↑f y = v y

tactic: let b := v y
state_before: case neg.intro.intro.intro.intro
α : Type u_2
inst✝¹² : TopologicalSpace α
R : Type ?u.1508154
inst✝¹¹ : CommSemiring R
A : Type ?u.1508160
inst✝¹⁰ : TopologicalSpace A
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : TopologicalSemiring A
A₂ : Type ?u.1508332
inst✝⁶ : TopologicalSpace A₂
inst✝⁵ : Semiring A₂
inst✝⁴ : Algebra R A₂
inst✝³ : TopologicalSemiring A₂
𝕜 : Type u_1
inst✝² : TopologicalSpace 𝕜
s✝ : Set C(α, 𝕜)
f✝ : ↑s✝
x✝ : α
inst✝¹ : Field 𝕜
inst✝ : TopologicalRing 𝕜
s : Subalgebra 𝕜 C(α, 𝕜)
h : SeparatesPoints s
v : α → 𝕜
x y : α
n : ¬x = y
f : C(α, 𝕜)
hf : f ∈ ↑s
hxy : ↑f x - ↑f y ≠ 0
a : 𝕜 := v x
⊢ ∃ f, f ∈ ↑s ∧ ↑f x = v x ∧ ↑f y = v y

tactic: let f' : s :=
  ((b - a) * (f x - f y)⁻¹) • (algebraMap _ s (f x) - (⟨f, hf⟩ : s)) + algebraMap _ s a
state_before: case neg.intro.intro.intro.intro
α : Type u_2
inst✝¹² : TopologicalSpace α
R : Type ?u.1508154
inst✝¹¹ : CommSemiring R
A : Type ?u.1508160
inst✝¹⁰ : TopologicalSpace A
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : TopologicalSemiring A
A₂ : Type ?u.1508332
inst✝⁶ : TopologicalSpace A₂
inst✝⁵ : Semiring A₂
inst✝⁴ : Algebra R A₂
inst✝³ : TopologicalSemiring A₂
𝕜 : Type u_1
inst✝² : TopologicalSpace 𝕜
s✝ : Set C(α, 𝕜)
f✝ : ↑s✝
x✝ : α
inst✝¹ : Field 𝕜
inst✝ : TopologicalRing 𝕜
s : Subalgebra 𝕜 C(α, 𝕜)
h : SeparatesPoints s
v : α → 𝕜
x y : α
n : ¬x = y
f : C(α, 𝕜)
hf : f ∈ ↑s
hxy : ↑f x - ↑f y ≠ 0
a : 𝕜 := v x
b : 𝕜 := v y
⊢ ∃ f, f ∈ ↑s ∧ ↑f x = v x ∧ ↑f y = v y

tactic: refine' ⟨f', f'.prop, _, _⟩
state_before: case neg.intro.intro.intro.intro
α : Type u_2
inst✝¹² : TopologicalSpace α
R : Type ?u.1508154
inst✝¹¹ : CommSemiring R
A : Type ?u.1508160
inst✝¹⁰ : TopologicalSpace A
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : TopologicalSemiring A
A₂ : Type ?u.1508332
inst✝⁶ : TopologicalSpace A₂
inst✝⁵ : Semiring A₂
inst✝⁴ : Algebra R A₂
inst✝³ : TopologicalSemiring A₂
𝕜 : Type u_1
inst✝² : TopologicalSpace 𝕜
s✝ : Set C(α, 𝕜)
f✝ : ↑s✝
x✝ : α
inst✝¹ : Field 𝕜
inst✝ : TopologicalRing 𝕜
s : Subalgebra 𝕜 C(α, 𝕜)
h : SeparatesPoints s
v : α → 𝕜
x y : α
n : ¬x = y
f : C(α, 𝕜)
hf : f ∈ ↑s
hxy : ↑f x - ↑f y ≠ 0
a : 𝕜 := v x
b : 𝕜 := v y
f' : { x // x ∈ s } :=
  ((b - a) * (↑f x - ↑f y)⁻¹) • (↑(algebraMap ((fun x => 𝕜) x) { x // x ∈ s }) (↑f x) - { val := f, property := hf }) +
    ↑(algebraMap 𝕜 { x // x ∈ s }) a
⊢ ∃ f, f ∈ ↑s ∧ ↑f x = v x ∧ ↑f y = v y

tactic: subst n
state_before: case pos
α : Type u_2
inst✝¹² : TopologicalSpace α
R : Type ?u.1508154
inst✝¹¹ : CommSemiring R
A : Type ?u.1508160
inst✝¹⁰ : TopologicalSpace A
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : TopologicalSemiring A
A₂ : Type ?u.1508332
inst✝⁶ : TopologicalSpace A₂
inst✝⁵ : Semiring A₂
inst✝⁴ : Algebra R A₂
inst✝³ : TopologicalSemiring A₂
𝕜 : Type u_1
inst✝² : TopologicalSpace 𝕜
s✝ : Set C(α, 𝕜)
f : ↑s✝
x✝ : α
inst✝¹ : Field 𝕜
inst✝ : TopologicalRing 𝕜
s : Subalgebra 𝕜 C(α, 𝕜)
h : SeparatesPoints s
v : α → 𝕜
x y : α
n : x = y
⊢ ∃ f, f ∈ ↑s ∧ ↑f x = v x ∧ ↑f y = v y

tactic: refine' ⟨_, (v x • (1 : s) : s).prop, mul_one _, mul_one _⟩
state_before: case pos
α : Type u_2
inst✝¹² : TopologicalSpace α
R : Type ?u.1508154
inst✝¹¹ : CommSemiring R
A : Type ?u.1508160
inst✝¹⁰ : TopologicalSpace A
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : TopologicalSemiring A
A₂ : Type ?u.1508332
inst✝⁶ : TopologicalSpace A₂
inst✝⁵ : Semiring A₂
inst✝⁴ : Algebra R A₂
inst✝³ : TopologicalSemiring A₂
𝕜 : Type u_1
inst✝² : TopologicalSpace 𝕜
s✝ : Set C(α, 𝕜)
f : ↑s✝
x✝ : α
inst✝¹ : Field 𝕜
inst✝ : TopologicalRing 𝕜
s : Subalgebra 𝕜 C(α, 𝕜)
h : SeparatesPoints s
v : α → 𝕜
x : α
⊢ ∃ f, f ∈ ↑s ∧ ↑f x = v x ∧ ↑f x = v x

tactic: simp
state_before: case neg.intro.intro.intro.intro.refine'_1
α : Type u_2
inst✝¹² : TopologicalSpace α
R : Type ?u.1508154
inst✝¹¹ : CommSemiring R
A : Type ?u.1508160
inst✝¹⁰ : TopologicalSpace A
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : TopologicalSemiring A
A₂ : Type ?u.1508332
inst✝⁶ : TopologicalSpace A₂
inst✝⁵ : Semiring A₂
inst✝⁴ : Algebra R A₂
inst✝³ : TopologicalSemiring A₂
𝕜 : Type u_1
inst✝² : TopologicalSpace 𝕜
s✝ : Set C(α, 𝕜)
f✝ : ↑s✝
x✝ : α
inst✝¹ : Field 𝕜
inst✝ : TopologicalRing 𝕜
s : Subalgebra 𝕜 C(α, 𝕜)
h : SeparatesPoints s
v : α → 𝕜
x y : α
n : ¬x = y
f : C(α, 𝕜)
hf : f ∈ ↑s
hxy : ↑f x - ↑f y ≠ 0
a : 𝕜 := v x
b : 𝕜 := v y
f' : { x // x ∈ s } :=
  ((b - a) * (↑f x - ↑f y)⁻¹) • (↑(algebraMap ((fun x => 𝕜) x) { x // x ∈ s }) (↑f x) - { val := f, property := hf }) +
    ↑(algebraMap 𝕜 { x // x ∈ s }) a
⊢ ↑↑f' x = v x

tactic: simp [inv_mul_cancel_right₀ hxy]
state_before: case neg.intro.intro.intro.intro.refine'_2
α : Type u_2
inst✝¹² : TopologicalSpace α
R : Type ?u.1508154
inst✝¹¹ : CommSemiring R
A : Type ?u.1508160
inst✝¹⁰ : TopologicalSpace A
inst✝⁹ : Semiring A
inst✝⁸ : Algebra R A
inst✝⁷ : TopologicalSemiring A
A₂ : Type ?u.1508332
inst✝⁶ : TopologicalSpace A₂
inst✝⁵ : Semiring A₂
inst✝⁴ : Algebra R A₂
inst✝³ : TopologicalSemiring A₂
𝕜 : Type u_1
inst✝² : TopologicalSpace 𝕜
s✝ : Set C(α, 𝕜)
f✝ : ↑s✝
x✝ : α
inst✝¹ : Field 𝕜
inst✝ : TopologicalRing 𝕜
s : Subalgebra 𝕜 C(α, 𝕜)
h : SeparatesPoints s
v : α → 𝕜
x y : α
n : ¬x = y
f : C(α, 𝕜)
hf : f ∈ ↑s
hxy : ↑f x - ↑f y ≠ 0
a : 𝕜 := v x
b : 𝕜 := v y
f' : { x // x ∈ s } :=
  ((b - a) * (↑f x - ↑f y)⁻¹) • (↑(algebraMap ((fun x => 𝕜) x) { x // x ∈ s }) (↑f x) - { val := f, property := hf }) +
    ↑(algebraMap 𝕜 { x // x ∈ s }) a
⊢ ↑↑f' y = v y