File: Mathlib/LinearAlgebra/CliffordAlgebra/BaseChange.lean

full_name: CliffordAlgebra.ofBaseChangeAux
code: /-- Auxiliary construction: note this is really just a heterobasic `CliffordAlgebra.map`. -/
-- `noncomputable` is a performance workaround for mathlib4#7103
noncomputable def ofBaseChangeAux (Q : QuadraticForm R V) :
    CliffordAlgebra Q →ₐ[R] CliffordAlgebra (Q.baseChange A) 
goal: CliffordAlgebra Q →ₐ[R] CliffordAlgebra (QuadraticForm.baseChange A Q)

full_name: CliffordAlgebra.ofBaseChangeAux_ι
code: @[simp] theorem ofBaseChangeAux_ι (Q : QuadraticForm R V) (v : V) :
    ofBaseChangeAux A Q (ι Q v) = ι (Q.baseChange A) (1 ⊗ₜ v) 
goal: (CliffordAlgebra.ofBaseChangeAux A Q) ((CliffordAlgebra.ι Q) v) =
  (CliffordAlgebra.ι (QuadraticForm.baseChange A Q)) (1 ⊗ₜ[R] v)

full_name: CliffordAlgebra.ofBaseChange
code: /-- Convert from the base-changed clifford algebra to the clifford algebra over a base-changed
module. -/
-- `noncomputable` is a performance workaround for mathlib4#7103
noncomputable def ofBaseChange (Q : QuadraticForm R V) :
    A ⊗[R] CliffordAlgebra Q →ₐ[A] CliffordAlgebra (Q.baseChange A) 
goal: A ⊗[R] CliffordAlgebra Q →ₐ[A] CliffordAlgebra (QuadraticForm.baseChange A Q)

full_name: CliffordAlgebra.ofBaseChange_tmul_ι
code: @[simp] theorem ofBaseChange_tmul_ι (Q : QuadraticForm R V) (z : A) (v : V) :
    ofBaseChange A Q (z ⊗ₜ ι Q v) = ι (Q.baseChange A) (z ⊗ₜ v) 
goal: (CliffordAlgebra.ofBaseChange A Q) (z ⊗ₜ[R] (CliffordAlgebra.ι Q) v) =
  (CliffordAlgebra.ι (QuadraticForm.baseChange A Q)) (z ⊗ₜ[R] v)

full_name: CliffordAlgebra.ofBaseChange_tmul_one
code: @[simp] theorem ofBaseChange_tmul_one (Q : QuadraticForm R V) (z : A) :
    ofBaseChange A Q (z ⊗ₜ 1) = algebraMap _ _ z 
goal: (CliffordAlgebra.ofBaseChange A Q) (z ⊗ₜ[R] 1) = (algebraMap A (CliffordAlgebra (QuadraticForm.baseChange A Q))) z

full_name: CliffordAlgebra.toBaseChange
code: /-- Convert from the clifford algebra over a base-changed module to the base-changed clifford
algebra. -/
-- `noncomputable` is a performance workaround for mathlib4#7103
noncomputable def toBaseChange (Q : QuadraticForm R V) :
    CliffordAlgebra (Q.baseChange A) →ₐ[A] A ⊗[R] CliffordAlgebra Q 
goal: CliffordAlgebra (QuadraticForm.baseChange A Q) →ₐ[A] A ⊗[R] CliffordAlgebra Q

full_name: CliffordAlgebra.toBaseChange_ι
code: @[simp] theorem toBaseChange_ι (Q : QuadraticForm R V) (z : A) (v : V) :
    toBaseChange A Q (ι (Q.baseChange A) (z ⊗ₜ v)) = z ⊗ₜ ι Q v 
goal: (CliffordAlgebra.toBaseChange A Q) ((CliffordAlgebra.ι (QuadraticForm.baseChange A Q)) (z ⊗ₜ[R] v)) =
  z ⊗ₜ[R] (CliffordAlgebra.ι Q) v

full_name: CliffordAlgebra.toBaseChange_comp_involute
code: theorem toBaseChange_comp_involute (Q : QuadraticForm R V) :
    (toBaseChange A Q).comp (involute : CliffordAlgebra (Q.baseChange A) →ₐ[A] _) =
      (Algebra.TensorProduct.map (AlgHom.id _ _) involute).comp (toBaseChange A Q) 
goal: (CliffordAlgebra.toBaseChange A Q).comp CliffordAlgebra.involute =
  (Algebra.TensorProduct.map (AlgHom.id A A) CliffordAlgebra.involute).comp (CliffordAlgebra.toBaseChange A Q)

full_name: CliffordAlgebra.toBaseChange_involute
code: /-- The involution acts only on the right of the tensor product. -/
theorem toBaseChange_involute (Q : QuadraticForm R V) (x : CliffordAlgebra (Q.baseChange A)) :
    toBaseChange A Q (involute x) =
      TensorProduct.map LinearMap.id (involute.toLinearMap) (toBaseChange A Q x) 
goal: (CliffordAlgebra.toBaseChange A Q) (CliffordAlgebra.involute x) =
  (TensorProduct.map LinearMap.id CliffordAlgebra.involute.toLinearMap) ((CliffordAlgebra.toBaseChange A Q) x)

full_name: CliffordAlgebra.toBaseChange_comp_reverseOp
code: /-- Auxiliary theorem used to prove `toBaseChange_reverse` without needing induction. -/
theorem toBaseChange_comp_reverseOp (Q : QuadraticForm R V) :
    (toBaseChange A Q).op.comp reverseOp =
      ((Algebra.TensorProduct.opAlgEquiv R A A (CliffordAlgebra Q)).toAlgHom.comp <|
        (Algebra.TensorProduct.map
          (AlgEquiv.toOpposite A A).toAlgHom (reverseOp (Q := Q))).comp
        (toBaseChange A Q)) 
goal: (AlgHom.op (CliffordAlgebra.toBaseChange A Q)).comp CliffordAlgebra.reverseOp =
  (↑(Algebra.TensorProduct.opAlgEquiv R A A (CliffordAlgebra Q))).comp
    ((Algebra.TensorProduct.map (↑(AlgEquiv.toOpposite A A)) CliffordAlgebra.reverseOp).comp
      (CliffordAlgebra.toBaseChange A Q))

full_name: CliffordAlgebra.toBaseChange_reverse
code: /-- `reverse` acts only on the right of the tensor product. -/
theorem toBaseChange_reverse (Q : QuadraticForm R V) (x : CliffordAlgebra (Q.baseChange A)) :
    toBaseChange A Q (reverse x) =
      TensorProduct.map LinearMap.id reverse (toBaseChange A Q x) 
goal: (CliffordAlgebra.toBaseChange A Q) (CliffordAlgebra.reverse x) =
  (TensorProduct.map LinearMap.id CliffordAlgebra.reverse) ((CliffordAlgebra.toBaseChange A Q) x)

full_name: CliffordAlgebra.toBaseChange_comp_ofBaseChange
code: theorem toBaseChange_comp_ofBaseChange (Q : QuadraticForm R V) :
    (toBaseChange A Q).comp (ofBaseChange A Q) = AlgHom.id _ _ 
goal: (CliffordAlgebra.toBaseChange A Q).comp (CliffordAlgebra.ofBaseChange A Q) = AlgHom.id A (A ⊗[R] CliffordAlgebra Q)

full_name: CliffordAlgebra.toBaseChange_ofBaseChange
code: @[simp] theorem toBaseChange_ofBaseChange (Q : QuadraticForm R V) (x : A ⊗[R] CliffordAlgebra Q) :
    toBaseChange A Q (ofBaseChange A Q x) = x 
goal: (CliffordAlgebra.toBaseChange A Q) ((CliffordAlgebra.ofBaseChange A Q) x) = x

full_name: CliffordAlgebra.ofBaseChange_comp_toBaseChange
code: theorem ofBaseChange_comp_toBaseChange (Q : QuadraticForm R V) :
    (ofBaseChange A Q).comp (toBaseChange A Q) = AlgHom.id _ _ 
goal: (CliffordAlgebra.ofBaseChange A Q).comp (CliffordAlgebra.toBaseChange A Q) =
  AlgHom.id A (CliffordAlgebra (QuadraticForm.baseChange A Q))

full_name: CliffordAlgebra.ofBaseChange_toBaseChange
code: @[simp] theorem ofBaseChange_toBaseChange
    (Q : QuadraticForm R V) (x : CliffordAlgebra (Q.baseChange A)) :
    ofBaseChange A Q (toBaseChange A Q x) = x 
goal: (CliffordAlgebra.ofBaseChange A Q) ((CliffordAlgebra.toBaseChange A Q) x) = x

full_name: CliffordAlgebra.equivBaseChange_apply
code: /-- Base-changing the vector space of a clifford algebra is isomorphic as an A-algebra to
base-changing the clifford algebra itself; <|Cℓ(A ⊗_R V, Q_A) ≅ A ⊗_R Cℓ(V, Q)<|.

This is `CliffordAlgebra.toBaseChange` and `CliffordAlgebra.ofBaseChange` as an equivalence. -/
@[simps!]
-- `noncomputable` is a performance workaround for mathlib4#7103
noncomputable def equivBaseChange (Q : QuadraticForm R V) :
    CliffordAlgebra (Q.baseChange A) ≃ₐ[A] A ⊗[R] CliffordAlgebra Q 
goal: (CliffordAlgebra.equivBaseChange A Q) a = (CliffordAlgebra.toBaseChange A Q) a

full_name: CliffordAlgebra.equivBaseChange
code: /-- Base-changing the vector space of a clifford algebra is isomorphic as an A-algebra to
base-changing the clifford algebra itself; <|Cℓ(A ⊗_R V, Q_A) ≅ A ⊗_R Cℓ(V, Q)<|.

This is `CliffordAlgebra.toBaseChange` and `CliffordAlgebra.ofBaseChange` as an equivalence. -/
@[simps!]
-- `noncomputable` is a performance workaround for mathlib4#7103
noncomputable def equivBaseChange (Q : QuadraticForm R V) :
    CliffordAlgebra (Q.baseChange A) ≃ₐ[A] A ⊗[R] CliffordAlgebra Q 
goal: CliffordAlgebra (QuadraticForm.baseChange A Q) ≃ₐ[A] A ⊗[R] CliffordAlgebra Q

full_name: CliffordAlgebra.equivBaseChange_symm_apply
code: /-- Base-changing the vector space of a clifford algebra is isomorphic as an A-algebra to
base-changing the clifford algebra itself; <|Cℓ(A ⊗_R V, Q_A) ≅ A ⊗_R Cℓ(V, Q)<|.

This is `CliffordAlgebra.toBaseChange` and `CliffordAlgebra.ofBaseChange` as an equivalence. -/
@[simps!]
-- `noncomputable` is a performance workaround for mathlib4#7103
noncomputable def equivBaseChange (Q : QuadraticForm R V) :
    CliffordAlgebra (Q.baseChange A) ≃ₐ[A] A ⊗[R] CliffordAlgebra Q 
goal: (CliffordAlgebra.equivBaseChange A Q).symm a = (CliffordAlgebra.ofBaseChange A Q) a