Theorem: contMDiff_coe_sphere
File: Mathlib/Geometry/Manifold/Instances/Sphere.lean

tactic: have := EuclideanSpace.instSmoothManifoldWithCornersSphere (E := E) (n := n)
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
n : ℕ
inst✝ : Fact (finrank ℝ E = n + 1)
⊢ ContMDiff 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) 𝓘(ℝ, E) ⊤ Subtype.val
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
n : ℕ
inst✝ : Fact (finrank ℝ E = n + 1)
this : SmoothManifoldWithCorners 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) ↑(sphere 0 1)
⊢ ContMDiff 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) 𝓘(ℝ, E) ⊤ Subtype.val

tactic: rw [contMDiff_iff]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
n : ℕ
inst✝ : Fact (finrank ℝ E = n + 1)
this : SmoothManifoldWithCorners 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) ↑(sphere 0 1)
⊢ ContMDiff 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) 𝓘(ℝ, E) ⊤ Subtype.val
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
n : ℕ
inst✝ : Fact (finrank ℝ E = n + 1)
this : SmoothManifoldWithCorners 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) ↑(sphere 0 1)
⊢ Continuous Subtype.val ∧
    ∀ (x : { x // x ∈ sphere 0 1 }) (y : E),
      ContDiffOn ℝ ⊤ (↑(extChartAt 𝓘(ℝ, E) y) ∘ Subtype.val ∘ ↑(extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) x).symm)
        ((extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) x).target ∩
          ↑(extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) x).symm ⁻¹' (Subtype.val ⁻¹' (extChartAt 𝓘(ℝ, E) y).source))

tactic: constructor
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
n : ℕ
inst✝ : Fact (finrank ℝ E = n + 1)
this : SmoothManifoldWithCorners 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) ↑(sphere 0 1)
⊢ Continuous Subtype.val ∧
    ∀ (x : { x // x ∈ sphere 0 1 }) (y : E),
      ContDiffOn ℝ ⊤ (↑(extChartAt 𝓘(ℝ, E) y) ∘ Subtype.val ∘ ↑(extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) x).symm)
        ((extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) x).target ∩
          ↑(extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) x).symm ⁻¹' (Subtype.val ⁻¹' (extChartAt 𝓘(ℝ, E) y).source))
state_after: case left
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
n : ℕ
inst✝ : Fact (finrank ℝ E = n + 1)
this : SmoothManifoldWithCorners 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) ↑(sphere 0 1)
⊢ Continuous Subtype.val

case right
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
n : ℕ
inst✝ : Fact (finrank ℝ E = n + 1)
this : SmoothManifoldWithCorners 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) ↑(sphere 0 1)
⊢ ∀ (x : { x // x ∈ sphere 0 1 }) (y : E),
    ContDiffOn ℝ ⊤ (↑(extChartAt 𝓘(ℝ, E) y) ∘ Subtype.val ∘ ↑(extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) x).symm)
      ((extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) x).target ∩
        ↑(extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) x).symm ⁻¹' (Subtype.val ⁻¹' (extChartAt 𝓘(ℝ, E) y).source))

tactic: exact continuous_subtype_val
state_before: case left
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
n : ℕ
inst✝ : Fact (finrank ℝ E = n + 1)
this : SmoothManifoldWithCorners 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) ↑(sphere 0 1)
⊢ Continuous Subtype.val
state_after: no goals

tactic: intro v _
state_before: case right
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
n : ℕ
inst✝ : Fact (finrank ℝ E = n + 1)
this : SmoothManifoldWithCorners 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) ↑(sphere 0 1)
⊢ ∀ (x : { x // x ∈ sphere 0 1 }) (y : E),
    ContDiffOn ℝ ⊤ (↑(extChartAt 𝓘(ℝ, E) y) ∘ Subtype.val ∘ ↑(extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) x).symm)
      ((extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) x).target ∩
        ↑(extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) x).symm ⁻¹' (Subtype.val ⁻¹' (extChartAt 𝓘(ℝ, E) y).source))
state_after: case right
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
n : ℕ
inst✝ : Fact (finrank ℝ E = n + 1)
this : SmoothManifoldWithCorners 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) ↑(sphere 0 1)
v : { x // x ∈ sphere 0 1 }
y✝ : E
⊢ ContDiffOn ℝ ⊤ (↑(extChartAt 𝓘(ℝ, E) y✝) ∘ Subtype.val ∘ ↑(extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) v).symm)
    ((extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) v).target ∩
      ↑(extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) v).symm ⁻¹' (Subtype.val ⁻¹' (extChartAt 𝓘(ℝ, E) y✝).source))

tactic: let U : _ ≃ₗᵢ[ℝ] _ :=
  (OrthonormalBasis.fromOrthogonalSpanSingleton
      n (ne_zero_of_mem_unit_sphere (-v))).repr
state_before: case right
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
n : ℕ
inst✝ : Fact (finrank ℝ E = n + 1)
this : SmoothManifoldWithCorners 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) ↑(sphere 0 1)
v : { x // x ∈ sphere 0 1 }
y✝ : E
⊢ ContDiffOn ℝ ⊤ (↑(extChartAt 𝓘(ℝ, E) y✝) ∘ Subtype.val ∘ ↑(extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) v).symm)
    ((extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) v).target ∩
      ↑(extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) v).symm ⁻¹' (Subtype.val ⁻¹' (extChartAt 𝓘(ℝ, E) y✝).source))
state_after: case right
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
n : ℕ
inst✝ : Fact (finrank ℝ E = n + 1)
this : SmoothManifoldWithCorners 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) ↑(sphere 0 1)
v : { x // x ∈ sphere 0 1 }
y✝ : E
U : ↥(Submodule.span ℝ {↑(-v)})ᗮ ≃ₗᵢ[ℝ] EuclideanSpace ℝ (Fin n) :=
  (OrthonormalBasis.fromOrthogonalSpanSingleton n ⋯).repr
⊢ ContDiffOn ℝ ⊤ (↑(extChartAt 𝓘(ℝ, E) y✝) ∘ Subtype.val ∘ ↑(extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) v).symm)
    ((extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) v).target ∩
      ↑(extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) v).symm ⁻¹' (Subtype.val ⁻¹' (extChartAt 𝓘(ℝ, E) y✝).source))

tactic: exact
  ((contDiff_stereoInvFunAux.comp (ℝ ∙ (-v : E))ᗮ.subtypeL.contDiff).comp
      U.symm.contDiff).contDiffOn
state_before: case right
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
n : ℕ
inst✝ : Fact (finrank ℝ E = n + 1)
this : SmoothManifoldWithCorners 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) ↑(sphere 0 1)
v : { x // x ∈ sphere 0 1 }
y✝ : E
U : ↥(Submodule.span ℝ {↑(-v)})ᗮ ≃ₗᵢ[ℝ] EuclideanSpace ℝ (Fin n) :=
  (OrthonormalBasis.fromOrthogonalSpanSingleton n ⋯).repr
⊢ ContDiffOn ℝ ⊤ (↑(extChartAt 𝓘(ℝ, E) y✝) ∘ Subtype.val ∘ ↑(extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) v).symm)
    ((extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) v).target ∩
      ↑(extChartAt 𝓘(ℝ, EuclideanSpace ℝ (Fin n)) v).symm ⁻¹' (Subtype.val ⁻¹' (extChartAt 𝓘(ℝ, E) y✝).source))
state_after: no goals