Theorem: cfcₙHom_eq_cfcₙ_extend
File: Mathlib/Topology/ContinuousFunction/NonUnitalFunctionalCalculus.lean

tactic: have h : f = (σₙ R a).restrict (Function.extend Subtype.val f g) := by
  ext; simp [Subtype.val_injective.extend_apply]
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹² : CommSemiring R
inst✝¹¹ : Nontrivial R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : NonUnitalRing A
inst✝⁵ : StarRing A
inst✝⁴ : TopologicalSpace A
inst✝³ : Module R A
inst✝² : IsScalarTower R A A
inst✝¹ : SMulCommClass R A A
inst✝ : NonUnitalContinuousFunctionalCalculus R p
f✝ g✝ : R → R
a✝ : A
hf : autoParam (ContinuousOn f✝ (σₙ R a✝)) _auto✝
hf0 : autoParam (f✝ 0 = 0) _auto✝
hg : autoParam (ContinuousOn g✝ (σₙ R a✝)) _auto✝
hg0 : autoParam (g✝ 0 = 0) _auto✝
ha✝ : autoParam (p a✝) _auto✝
a : A
g : R → R
ha : p a
f : C(↑(σₙ R a), R)₀
⊢ (cfcₙHom ha) f = cfcₙ (Function.extend Subtype.val (⇑f) g) a
state_after: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹² : CommSemiring R
inst✝¹¹ : Nontrivial R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : NonUnitalRing A
inst✝⁵ : StarRing A
inst✝⁴ : TopologicalSpace A
inst✝³ : Module R A
inst✝² : IsScalarTower R A A
inst✝¹ : SMulCommClass R A A
inst✝ : NonUnitalContinuousFunctionalCalculus R p
f✝ g✝ : R → R
a✝ : A
hf : autoParam (ContinuousOn f✝ (σₙ R a✝)) _auto✝
hf0 : autoParam (f✝ 0 = 0) _auto✝
hg : autoParam (ContinuousOn g✝ (σₙ R a✝)) _auto✝
hg0 : autoParam (g✝ 0 = 0) _auto✝
ha✝ : autoParam (p a✝) _auto✝
a : A
g : R → R
ha : p a
f : C(↑(σₙ R a), R)₀
h : ⇑f = (σₙ R a).restrict (Function.extend Subtype.val (⇑f) g)
⊢ (cfcₙHom ha) f = cfcₙ (Function.extend Subtype.val (⇑f) g) a

tactic: have hg : ContinuousOn (Function.extend Subtype.val f g) (σₙ R a) :=
  continuousOn_iff_continuous_restrict.mpr <| h ▸ map_continuous f
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹² : CommSemiring R
inst✝¹¹ : Nontrivial R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : NonUnitalRing A
inst✝⁵ : StarRing A
inst✝⁴ : TopologicalSpace A
inst✝³ : Module R A
inst✝² : IsScalarTower R A A
inst✝¹ : SMulCommClass R A A
inst✝ : NonUnitalContinuousFunctionalCalculus R p
f✝ g✝ : R → R
a✝ : A
hf : autoParam (ContinuousOn f✝ (σₙ R a✝)) _auto✝
hf0 : autoParam (f✝ 0 = 0) _auto✝
hg : autoParam (ContinuousOn g✝ (σₙ R a✝)) _auto✝
hg0 : autoParam (g✝ 0 = 0) _auto✝
ha✝ : autoParam (p a✝) _auto✝
a : A
g : R → R
ha : p a
f : C(↑(σₙ R a), R)₀
h : ⇑f = (σₙ R a).restrict (Function.extend Subtype.val (⇑f) g)
⊢ (cfcₙHom ha) f = cfcₙ (Function.extend Subtype.val (⇑f) g) a
state_after: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹² : CommSemiring R
inst✝¹¹ : Nontrivial R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : NonUnitalRing A
inst✝⁵ : StarRing A
inst✝⁴ : TopologicalSpace A
inst✝³ : Module R A
inst✝² : IsScalarTower R A A
inst✝¹ : SMulCommClass R A A
inst✝ : NonUnitalContinuousFunctionalCalculus R p
f✝ g✝ : R → R
a✝ : A
hf : autoParam (ContinuousOn f✝ (σₙ R a✝)) _auto✝
hf0 : autoParam (f✝ 0 = 0) _auto✝
hg✝ : autoParam (ContinuousOn g✝ (σₙ R a✝)) _auto✝
hg0 : autoParam (g✝ 0 = 0) _auto✝
ha✝ : autoParam (p a✝) _auto✝
a : A
g : R → R
ha : p a
f : C(↑(σₙ R a), R)₀
h : ⇑f = (σₙ R a).restrict (Function.extend Subtype.val (⇑f) g)
hg : ContinuousOn (Function.extend Subtype.val (⇑f) g) (σₙ R a)
⊢ (cfcₙHom ha) f = cfcₙ (Function.extend Subtype.val (⇑f) g) a

tactic: have hg0 : (Function.extend Subtype.val f g) 0 = 0 := by
  rw [← quasispectrum.coe_zero (R := R) a, Subtype.val_injective.extend_apply]
  exact map_zero f
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹² : CommSemiring R
inst✝¹¹ : Nontrivial R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : NonUnitalRing A
inst✝⁵ : StarRing A
inst✝⁴ : TopologicalSpace A
inst✝³ : Module R A
inst✝² : IsScalarTower R A A
inst✝¹ : SMulCommClass R A A
inst✝ : NonUnitalContinuousFunctionalCalculus R p
f✝ g✝ : R → R
a✝ : A
hf : autoParam (ContinuousOn f✝ (σₙ R a✝)) _auto✝
hf0 : autoParam (f✝ 0 = 0) _auto✝
hg✝ : autoParam (ContinuousOn g✝ (σₙ R a✝)) _auto✝
hg0 : autoParam (g✝ 0 = 0) _auto✝
ha✝ : autoParam (p a✝) _auto✝
a : A
g : R → R
ha : p a
f : C(↑(σₙ R a), R)₀
h : ⇑f = (σₙ R a).restrict (Function.extend Subtype.val (⇑f) g)
hg : ContinuousOn (Function.extend Subtype.val (⇑f) g) (σₙ R a)
⊢ (cfcₙHom ha) f = cfcₙ (Function.extend Subtype.val (⇑f) g) a
state_after: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹² : CommSemiring R
inst✝¹¹ : Nontrivial R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : NonUnitalRing A
inst✝⁵ : StarRing A
inst✝⁴ : TopologicalSpace A
inst✝³ : Module R A
inst✝² : IsScalarTower R A A
inst✝¹ : SMulCommClass R A A
inst✝ : NonUnitalContinuousFunctionalCalculus R p
f✝ g✝ : R → R
a✝ : A
hf : autoParam (ContinuousOn f✝ (σₙ R a✝)) _auto✝
hf0 : autoParam (f✝ 0 = 0) _auto✝
hg✝ : autoParam (ContinuousOn g✝ (σₙ R a✝)) _auto✝
hg0✝ : autoParam (g✝ 0 = 0) _auto✝
ha✝ : autoParam (p a✝) _auto✝
a : A
g : R → R
ha : p a
f : C(↑(σₙ R a), R)₀
h : ⇑f = (σₙ R a).restrict (Function.extend Subtype.val (⇑f) g)
hg : ContinuousOn (Function.extend Subtype.val (⇑f) g) (σₙ R a)
hg0 : Function.extend Subtype.val (⇑f) g 0 = 0
⊢ (cfcₙHom ha) f = cfcₙ (Function.extend Subtype.val (⇑f) g) a

tactic: rw [cfcₙ_apply ..]
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹² : CommSemiring R
inst✝¹¹ : Nontrivial R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : NonUnitalRing A
inst✝⁵ : StarRing A
inst✝⁴ : TopologicalSpace A
inst✝³ : Module R A
inst✝² : IsScalarTower R A A
inst✝¹ : SMulCommClass R A A
inst✝ : NonUnitalContinuousFunctionalCalculus R p
f✝ g✝ : R → R
a✝ : A
hf : autoParam (ContinuousOn f✝ (σₙ R a✝)) _auto✝
hf0 : autoParam (f✝ 0 = 0) _auto✝
hg✝ : autoParam (ContinuousOn g✝ (σₙ R a✝)) _auto✝
hg0✝ : autoParam (g✝ 0 = 0) _auto✝
ha✝ : autoParam (p a✝) _auto✝
a : A
g : R → R
ha : p a
f : C(↑(σₙ R a), R)₀
h : ⇑f = (σₙ R a).restrict (Function.extend Subtype.val (⇑f) g)
hg : ContinuousOn (Function.extend Subtype.val (⇑f) g) (σₙ R a)
hg0 : Function.extend Subtype.val (⇑f) g 0 = 0
⊢ (cfcₙHom ha) f = cfcₙ (Function.extend Subtype.val (⇑f) g) a
state_after: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹² : CommSemiring R
inst✝¹¹ : Nontrivial R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : NonUnitalRing A
inst✝⁵ : StarRing A
inst✝⁴ : TopologicalSpace A
inst✝³ : Module R A
inst✝² : IsScalarTower R A A
inst✝¹ : SMulCommClass R A A
inst✝ : NonUnitalContinuousFunctionalCalculus R p
f✝ g✝ : R → R
a✝ : A
hf : autoParam (ContinuousOn f✝ (σₙ R a✝)) _auto✝
hf0 : autoParam (f✝ 0 = 0) _auto✝
hg✝ : autoParam (ContinuousOn g✝ (σₙ R a✝)) _auto✝
hg0✝ : autoParam (g✝ 0 = 0) _auto✝
ha✝ : autoParam (p a✝) _auto✝
a : A
g : R → R
ha : p a
f : C(↑(σₙ R a), R)₀
h : ⇑f = (σₙ R a).restrict (Function.extend Subtype.val (⇑f) g)
hg : ContinuousOn (Function.extend Subtype.val (⇑f) g) (σₙ R a)
hg0 : Function.extend Subtype.val (⇑f) g 0 = 0
⊢ (cfcₙHom ha) f =
    (cfcₙHom ha)
      { toFun := (σₙ R a).restrict (Function.extend Subtype.val (⇑f) g), continuous_toFun := ⋯, map_zero' := hg0 }

tactic: congr!
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹² : CommSemiring R
inst✝¹¹ : Nontrivial R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : NonUnitalRing A
inst✝⁵ : StarRing A
inst✝⁴ : TopologicalSpace A
inst✝³ : Module R A
inst✝² : IsScalarTower R A A
inst✝¹ : SMulCommClass R A A
inst✝ : NonUnitalContinuousFunctionalCalculus R p
f✝ g✝ : R → R
a✝ : A
hf : autoParam (ContinuousOn f✝ (σₙ R a✝)) _auto✝
hf0 : autoParam (f✝ 0 = 0) _auto✝
hg✝ : autoParam (ContinuousOn g✝ (σₙ R a✝)) _auto✝
hg0✝ : autoParam (g✝ 0 = 0) _auto✝
ha✝ : autoParam (p a✝) _auto✝
a : A
g : R → R
ha : p a
f : C(↑(σₙ R a), R)₀
h : ⇑f = (σₙ R a).restrict (Function.extend Subtype.val (⇑f) g)
hg : ContinuousOn (Function.extend Subtype.val (⇑f) g) (σₙ R a)
hg0 : Function.extend Subtype.val (⇑f) g 0 = 0
⊢ (cfcₙHom ha) f =
    (cfcₙHom ha)
      { toFun := (σₙ R a).restrict (Function.extend Subtype.val (⇑f) g), continuous_toFun := ⋯, map_zero' := hg0 }
state_after: no goals

tactic: ext
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹² : CommSemiring R
inst✝¹¹ : Nontrivial R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : NonUnitalRing A
inst✝⁵ : StarRing A
inst✝⁴ : TopologicalSpace A
inst✝³ : Module R A
inst✝² : IsScalarTower R A A
inst✝¹ : SMulCommClass R A A
inst✝ : NonUnitalContinuousFunctionalCalculus R p
f✝ g✝ : R → R
a✝ : A
hf : autoParam (ContinuousOn f✝ (σₙ R a✝)) _auto✝
hf0 : autoParam (f✝ 0 = 0) _auto✝
hg : autoParam (ContinuousOn g✝ (σₙ R a✝)) _auto✝
hg0 : autoParam (g✝ 0 = 0) _auto✝
ha✝ : autoParam (p a✝) _auto✝
a : A
g : R → R
ha : p a
f : C(↑(σₙ R a), R)₀
⊢ ⇑f = (σₙ R a).restrict (Function.extend Subtype.val (⇑f) g)
state_after: case h
R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹² : CommSemiring R
inst✝¹¹ : Nontrivial R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : NonUnitalRing A
inst✝⁵ : StarRing A
inst✝⁴ : TopologicalSpace A
inst✝³ : Module R A
inst✝² : IsScalarTower R A A
inst✝¹ : SMulCommClass R A A
inst✝ : NonUnitalContinuousFunctionalCalculus R p
f✝ g✝ : R → R
a✝ : A
hf : autoParam (ContinuousOn f✝ (σₙ R a✝)) _auto✝
hf0 : autoParam (f✝ 0 = 0) _auto✝
hg : autoParam (ContinuousOn g✝ (σₙ R a✝)) _auto✝
hg0 : autoParam (g✝ 0 = 0) _auto✝
ha✝ : autoParam (p a✝) _auto✝
a : A
g : R → R
ha : p a
f : C(↑(σₙ R a), R)₀
x✝ : ↑(σₙ R a)
⊢ f x✝ = (σₙ R a).restrict (Function.extend Subtype.val (⇑f) g) x✝

tactic: simp [Subtype.val_injective.extend_apply]
state_before: case h
R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹² : CommSemiring R
inst✝¹¹ : Nontrivial R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : NonUnitalRing A
inst✝⁵ : StarRing A
inst✝⁴ : TopologicalSpace A
inst✝³ : Module R A
inst✝² : IsScalarTower R A A
inst✝¹ : SMulCommClass R A A
inst✝ : NonUnitalContinuousFunctionalCalculus R p
f✝ g✝ : R → R
a✝ : A
hf : autoParam (ContinuousOn f✝ (σₙ R a✝)) _auto✝
hf0 : autoParam (f✝ 0 = 0) _auto✝
hg : autoParam (ContinuousOn g✝ (σₙ R a✝)) _auto✝
hg0 : autoParam (g✝ 0 = 0) _auto✝
ha✝ : autoParam (p a✝) _auto✝
a : A
g : R → R
ha : p a
f : C(↑(σₙ R a), R)₀
x✝ : ↑(σₙ R a)
⊢ f x✝ = (σₙ R a).restrict (Function.extend Subtype.val (⇑f) g) x✝
state_after: no goals

tactic: rw [← quasispectrum.coe_zero (R := R) a, Subtype.val_injective.extend_apply]
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹² : CommSemiring R
inst✝¹¹ : Nontrivial R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : NonUnitalRing A
inst✝⁵ : StarRing A
inst✝⁴ : TopologicalSpace A
inst✝³ : Module R A
inst✝² : IsScalarTower R A A
inst✝¹ : SMulCommClass R A A
inst✝ : NonUnitalContinuousFunctionalCalculus R p
f✝ g✝ : R → R
a✝ : A
hf : autoParam (ContinuousOn f✝ (σₙ R a✝)) _auto✝
hf0 : autoParam (f✝ 0 = 0) _auto✝
hg✝ : autoParam (ContinuousOn g✝ (σₙ R a✝)) _auto✝
hg0 : autoParam (g✝ 0 = 0) _auto✝
ha✝ : autoParam (p a✝) _auto✝
a : A
g : R → R
ha : p a
f : C(↑(σₙ R a), R)₀
h : ⇑f = (σₙ R a).restrict (Function.extend Subtype.val (⇑f) g)
hg : ContinuousOn (Function.extend Subtype.val (⇑f) g) (σₙ R a)
⊢ Function.extend Subtype.val (⇑f) g 0 = 0
state_after: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹² : CommSemiring R
inst✝¹¹ : Nontrivial R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : NonUnitalRing A
inst✝⁵ : StarRing A
inst✝⁴ : TopologicalSpace A
inst✝³ : Module R A
inst✝² : IsScalarTower R A A
inst✝¹ : SMulCommClass R A A
inst✝ : NonUnitalContinuousFunctionalCalculus R p
f✝ g✝ : R → R
a✝ : A
hf : autoParam (ContinuousOn f✝ (σₙ R a✝)) _auto✝
hf0 : autoParam (f✝ 0 = 0) _auto✝
hg✝ : autoParam (ContinuousOn g✝ (σₙ R a✝)) _auto✝
hg0 : autoParam (g✝ 0 = 0) _auto✝
ha✝ : autoParam (p a✝) _auto✝
a : A
g : R → R
ha : p a
f : C(↑(σₙ R a), R)₀
h : ⇑f = (σₙ R a).restrict (Function.extend Subtype.val (⇑f) g)
hg : ContinuousOn (Function.extend Subtype.val (⇑f) g) (σₙ R a)
⊢ f 0 = ↑0

tactic: exact map_zero f
state_before: R : Type u_1
A : Type u_2
p : A → Prop
inst✝¹² : CommSemiring R
inst✝¹¹ : Nontrivial R
inst✝¹⁰ : StarRing R
inst✝⁹ : MetricSpace R
inst✝⁸ : TopologicalSemiring R
inst✝⁷ : ContinuousStar R
inst✝⁶ : NonUnitalRing A
inst✝⁵ : StarRing A
inst✝⁴ : TopologicalSpace A
inst✝³ : Module R A
inst✝² : IsScalarTower R A A
inst✝¹ : SMulCommClass R A A
inst✝ : NonUnitalContinuousFunctionalCalculus R p
f✝ g✝ : R → R
a✝ : A
hf : autoParam (ContinuousOn f✝ (σₙ R a✝)) _auto✝
hf0 : autoParam (f✝ 0 = 0) _auto✝
hg✝ : autoParam (ContinuousOn g✝ (σₙ R a✝)) _auto✝
hg0 : autoParam (g✝ 0 = 0) _auto✝
ha✝ : autoParam (p a✝) _auto✝
a : A
g : R → R
ha : p a
f : C(↑(σₙ R a), R)₀
h : ⇑f = (σₙ R a).restrict (Function.extend Subtype.val (⇑f) g)
hg : ContinuousOn (Function.extend Subtype.val (⇑f) g) (σₙ R a)
⊢ f 0 = ↑0
state_after: no goals