-- Mathlib/Topology/Algebra/StarSubalgebra.lean
theorem _root_.StarAlgHom.ext_topologicalClosure [T2Space B] {S : StarSubalgebra R A}
    {φ ψ : S.topologicalClosure →⋆ₐ[R] B} (hφ : Continuous φ) (hψ : Continuous ψ)
    (h :
      φ.comp (inclusion (le_topologicalClosure S)) = ψ.comp (inclusion (le_topologicalClosure S))) :
    φ = ψ

Proof state:
case intro
R : Type u_1
A : Type u_2
B : Type u_3
inst✝¹³ : CommSemiring R
inst✝¹² : StarRing R
inst✝¹¹ : TopologicalSpace A
inst✝¹⁰ : Semiring A
inst✝⁹ : Algebra R A
inst✝⁸ : StarRing A
inst✝⁷ : StarModule R A
inst✝⁶ : IsTopologicalSemiring A
inst✝⁵ : ContinuousStar A
inst✝⁴ : TopologicalSpace B
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : T2Space B
S : StarSubalgebra R A
φ ψ : ↥S.topologicalClosure →⋆ₐ[R] B
hφ : Continuous ⇑φ
hψ : Continuous ⇑ψ
h : φ.comp (inclusion ⋯) = ψ.comp (inclusion ⋯)
x : { x // x ∈ ↑S.topologicalClosure }
y : ↥S
⊢ (Subtype.val ∘ ⇑(inclusion ⋯)) y ∈ ↑S

Tactic:
exact y.prop

Result:
no goals

Proof state:
R : Type u_1
A : Type u_2
B : Type u_3
inst✝¹³ : CommSemiring R
inst✝¹² : StarRing R
inst✝¹¹ : TopologicalSpace A
inst✝¹⁰ : Semiring A
inst✝⁹ : Algebra R A
inst✝⁸ : StarRing A
inst✝⁷ : StarModule R A
inst✝⁶ : IsTopologicalSemiring A
inst✝⁵ : ContinuousStar A
inst✝⁴ : TopologicalSpace B
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : T2Space B
S : StarSubalgebra R A
φ ψ : ↥S.topologicalClosure →⋆ₐ[R] B
hφ : Continuous ⇑φ
hψ : Continuous ⇑ψ
h : φ.comp (inclusion ⋯) = ψ.comp (inclusion ⋯)
this : Dense (Set.range ⇑(inclusion ⋯))
⊢ Set.EqOn (⇑φ) (⇑ψ) (Set.range ⇑(inclusion ⋯))

Tactic:
rintro _ ⟨x, rfl⟩

Result:
case intro
R : Type u_1
A : Type u_2
B : Type u_3
inst✝¹³ : CommSemiring R
inst✝¹² : StarRing R
inst✝¹¹ : TopologicalSpace A
inst✝¹⁰ : Semiring A
inst✝⁹ : Algebra R A
inst✝⁸ : StarRing A
inst✝⁷ : StarModule R A
inst✝⁶ : IsTopologicalSemiring A
inst✝⁵ : ContinuousStar A
inst✝⁴ : TopologicalSpace B
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : T2Space B
S : StarSubalgebra R A
φ ψ : ↥S.topologicalClosure →⋆ₐ[R] B
hφ : Continuous ⇑φ
hψ : Continuous ⇑ψ
h : φ.comp (inclusion ⋯) = ψ.comp (inclusion ⋯)
this : Dense (Set.range ⇑(inclusion ⋯))
x : ↥S
⊢ φ ((inclusion ⋯) x) = ψ ((inclusion ⋯) x)

Proof state:
R : Type u_1
A : Type u_2
B : Type u_3
inst✝¹³ : CommSemiring R
inst✝¹² : StarRing R
inst✝¹¹ : TopologicalSpace A
inst✝¹⁰ : Semiring A
inst✝⁹ : Algebra R A
inst✝⁸ : StarRing A
inst✝⁷ : StarModule R A
inst✝⁶ : IsTopologicalSemiring A
inst✝⁵ : ContinuousStar A
inst✝⁴ : TopologicalSpace B
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : T2Space B
S : StarSubalgebra R A
φ ψ : ↥S.topologicalClosure →⋆ₐ[R] B
hφ : Continuous ⇑φ
hψ : Continuous ⇑ψ
h : φ.comp (inclusion ⋯) = ψ.comp (inclusion ⋯)
⊢ ⇑φ = ⇑ψ

Tactic:
have : Dense (Set.range <| inclusion (le_topologicalClosure S)) := by
  refine IsInducing.subtypeVal.dense_iff.2 fun x => ?_
  convert show ↑x ∈ closure (S : Set A) from x.prop
  rw [← Set.range_comp]
  exact
    Set.ext fun y =>
      ⟨by
        rintro ⟨y, rfl⟩
        exact y.prop, fun hy => ⟨⟨y, hy⟩, rfl⟩⟩

Result:
R : Type u_1
A : Type u_2
B : Type u_3
inst✝¹³ : CommSemiring R
inst✝¹² : StarRing R
inst✝¹¹ : TopologicalSpace A
inst✝¹⁰ : Semiring A
inst✝⁹ : Algebra R A
inst✝⁸ : StarRing A
inst✝⁷ : StarModule R A
inst✝⁶ : IsTopologicalSemiring A
inst✝⁵ : ContinuousStar A
inst✝⁴ : TopologicalSpace B
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : T2Space B
S : StarSubalgebra R A
φ ψ : ↥S.topologicalClosure →⋆ₐ[R] B
hφ : Continuous ⇑φ
hψ : Continuous ⇑ψ
h : φ.comp (inclusion ⋯) = ψ.comp (inclusion ⋯)
this : Dense (Set.range ⇑(inclusion ⋯))
⊢ ⇑φ = ⇑ψ

Proof state:
R : Type u_1
A : Type u_2
B : Type u_3
inst✝¹³ : CommSemiring R
inst✝¹² : StarRing R
inst✝¹¹ : TopologicalSpace A
inst✝¹⁰ : Semiring A
inst✝⁹ : Algebra R A
inst✝⁸ : StarRing A
inst✝⁷ : StarModule R A
inst✝⁶ : IsTopologicalSemiring A
inst✝⁵ : ContinuousStar A
inst✝⁴ : TopologicalSpace B
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : T2Space B
S : StarSubalgebra R A
φ ψ : ↥S.topologicalClosure →⋆ₐ[R] B
hφ : Continuous ⇑φ
hψ : Continuous ⇑ψ
h : φ.comp (inclusion ⋯) = ψ.comp (inclusion ⋯)
⊢ φ = ψ

Tactic:
rw [DFunLike.ext'_iff]

Result:
R : Type u_1
A : Type u_2
B : Type u_3
inst✝¹³ : CommSemiring R
inst✝¹² : StarRing R
inst✝¹¹ : TopologicalSpace A
inst✝¹⁰ : Semiring A
inst✝⁹ : Algebra R A
inst✝⁸ : StarRing A
inst✝⁷ : StarModule R A
inst✝⁶ : IsTopologicalSemiring A
inst✝⁵ : ContinuousStar A
inst✝⁴ : TopologicalSpace B
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : T2Space B
S : StarSubalgebra R A
φ ψ : ↥S.topologicalClosure →⋆ₐ[R] B
hφ : Continuous ⇑φ
hψ : Continuous ⇑ψ
h : φ.comp (inclusion ⋯) = ψ.comp (inclusion ⋯)
⊢ ⇑φ = ⇑ψ

Proof state:
R : Type u_1
A : Type u_2
B : Type u_3
inst✝¹³ : CommSemiring R
inst✝¹² : StarRing R
inst✝¹¹ : TopologicalSpace A
inst✝¹⁰ : Semiring A
inst✝⁹ : Algebra R A
inst✝⁸ : StarRing A
inst✝⁷ : StarModule R A
inst✝⁶ : IsTopologicalSemiring A
inst✝⁵ : ContinuousStar A
inst✝⁴ : TopologicalSpace B
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : T2Space B
S : StarSubalgebra R A
φ ψ : ↥S.topologicalClosure →⋆ₐ[R] B
hφ : Continuous ⇑φ
hψ : Continuous ⇑ψ
h : φ.comp (inclusion ⋯) = ψ.comp (inclusion ⋯)
this : Dense (Set.range ⇑(inclusion ⋯))
⊢ ⇑φ = ⇑ψ

Tactic:
refine Continuous.ext_on this hφ hψ ?_

Result:
R : Type u_1
A : Type u_2
B : Type u_3
inst✝¹³ : CommSemiring R
inst✝¹² : StarRing R
inst✝¹¹ : TopologicalSpace A
inst✝¹⁰ : Semiring A
inst✝⁹ : Algebra R A
inst✝⁸ : StarRing A
inst✝⁷ : StarModule R A
inst✝⁶ : IsTopologicalSemiring A
inst✝⁵ : ContinuousStar A
inst✝⁴ : TopologicalSpace B
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : T2Space B
S : StarSubalgebra R A
φ ψ : ↥S.topologicalClosure →⋆ₐ[R] B
hφ : Continuous ⇑φ
hψ : Continuous ⇑ψ
h : φ.comp (inclusion ⋯) = ψ.comp (inclusion ⋯)
this : Dense (Set.range ⇑(inclusion ⋯))
⊢ Set.EqOn (⇑φ) (⇑ψ) (Set.range ⇑(inclusion ⋯))

Proof state:
case intro
R : Type u_1
A : Type u_2
B : Type u_3
inst✝¹³ : CommSemiring R
inst✝¹² : StarRing R
inst✝¹¹ : TopologicalSpace A
inst✝¹⁰ : Semiring A
inst✝⁹ : Algebra R A
inst✝⁸ : StarRing A
inst✝⁷ : StarModule R A
inst✝⁶ : IsTopologicalSemiring A
inst✝⁵ : ContinuousStar A
inst✝⁴ : TopologicalSpace B
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : T2Space B
S : StarSubalgebra R A
φ ψ : ↥S.topologicalClosure →⋆ₐ[R] B
hφ : Continuous ⇑φ
hψ : Continuous ⇑ψ
h : φ.comp (inclusion ⋯) = ψ.comp (inclusion ⋯)
this : Dense (Set.range ⇑(inclusion ⋯))
x : ↥S
⊢ φ ((inclusion ⋯) x) = ψ ((inclusion ⋯) x)

Tactic:
simpa only using DFunLike.congr_fun h x

Result:
no goals

Proof state:
R : Type u_1
A : Type u_2
B : Type u_3
inst✝¹³ : CommSemiring R
inst✝¹² : StarRing R
inst✝¹¹ : TopologicalSpace A
inst✝¹⁰ : Semiring A
inst✝⁹ : Algebra R A
inst✝⁸ : StarRing A
inst✝⁷ : StarModule R A
inst✝⁶ : IsTopologicalSemiring A
inst✝⁵ : ContinuousStar A
inst✝⁴ : TopologicalSpace B
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : T2Space B
S : StarSubalgebra R A
φ ψ : ↥S.topologicalClosure →⋆ₐ[R] B
hφ : Continuous ⇑φ
hψ : Continuous ⇑ψ
h : φ.comp (inclusion ⋯) = ψ.comp (inclusion ⋯)
x : { x // x ∈ ↑S.topologicalClosure }
y : A
⊢ y ∈ Set.range (Subtype.val ∘ ⇑(inclusion ⋯)) → y ∈ ↑S

Tactic:
rintro ⟨y, rfl⟩

Result:
case intro
R : Type u_1
A : Type u_2
B : Type u_3
inst✝¹³ : CommSemiring R
inst✝¹² : StarRing R
inst✝¹¹ : TopologicalSpace A
inst✝¹⁰ : Semiring A
inst✝⁹ : Algebra R A
inst✝⁸ : StarRing A
inst✝⁷ : StarModule R A
inst✝⁶ : IsTopologicalSemiring A
inst✝⁵ : ContinuousStar A
inst✝⁴ : TopologicalSpace B
inst✝³ : Semiring B
inst✝² : Algebra R B
inst✝¹ : StarRing B
inst✝ : T2Space B
S : StarSubalgebra R A
φ ψ : ↥S.topologicalClosure →⋆ₐ[R] B
hφ : Continuous ⇑φ
hψ : Continuous ⇑ψ
h : φ.comp (inclusion ⋯) = ψ.comp (inclusion ⋯)
x : { x // x ∈ ↑S.topologicalClosure }
y : ↥S
⊢ (Subtype.val ∘ ⇑(inclusion ⋯)) y ∈ ↑S