import Mathlib.LinearAlgebra.CliffordAlgebra.Basic import Mathlib.LinearAlgebra.CliffordAlgebra.Grading import Mathlib.LinearAlgebra.CliffordAlgebra.Equivs import Mathlib.RingTheory.FiniteType import Mathlib.Tactic -- import Mathlib.Util.Superscript -- import Mathlib.Data.Matrix.Notation open Module (finrankfinrank: (R : Type u_1) β (M : Type u_2) β [inst : Semiring R] β [inst_1 : AddCommGroup M] β [inst : Module R M] β βfinrank_eq_card_basisfinrank_eq_card_basis: β {R : Type u} {M : Type v} [inst : Ring R] [inst_1 : AddCommGroup M] [inst_2 : Module R M] [inst_3 : StrongRankCondition R] {ΞΉ : Type w} [inst_4 : Fintype ΞΉ], Basis ΞΉ R M β finrank R M = Fintype.card ΞΉfinrank_directSumfinrank_directSum: β (R : Type u) [inst : Ring R] [inst_1 : StrongRankCondition R] {ΞΉ : Type v} [inst_2 : Fintype ΞΉ] (M : ΞΉ β Type w) [inst_3 : (i : ΞΉ) β AddCommGroup (M i)] [inst_4 : (i : ΞΉ) β Module R (M i)] [inst_5 : β (i : ΞΉ), Module.Free R (M i)] [inst_6 : β (i : ΞΉ), Module.Finite R (M i)], finrank R (DirectSum ΞΉ fun i => M i) = β i : ΞΉ, finrank R (M i)rank_self) set_option quotPrecheck false variable {rank_self: β (R : Type u) [inst : Ring R] [inst_1 : StrongRankCondition R], Module.rank R R = 1RR: Type u_1M :M: Type u_2Type*} [Type*: Type (u_1 + 1)CommRingCommRing: Type u_1 β Type u_1R] [R: Type u_1AddCommGroupAddCommGroup: Type u_2 β Type u_2M] [M: Type u_2ModuleModule: (R : Type u_1) β (M : Type u_2) β [inst : Semiring R] β [inst : AddCommMonoid M] β Type (max u_1 u_2)RR: Type u_1M] variable {M: Type u_2Q :Q: QuadraticForm R MQuadraticFormQuadraticForm: (R : Type u_1) β (M : Type u_2) β [inst : CommSemiring R] β [inst_1 : AddCommMonoid M] β [inst : Module R M] β Type (max u_1 u_2)RR: Type u_1M} variable [M: Type u_2Invertible (Invertible: {Ξ± : Type u_1} β [inst : Mul Ξ±] β [inst : One Ξ±] β Ξ± β Type u_12 :2: RR)] variable [R: Type u_1Invertible (Invertible: {Ξ± : Type (max u_1 u_2)} β [inst : Mul Ξ±] β [inst : One Ξ±] β Ξ± β Type (max u_1 u_2)2 :2: ClCliffordAlgebraCliffordAlgebra: {R : Type u_1} β [inst : CommRing R] β {M : Type u_2} β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β QuadraticForm R M β Type (max u_2 u_1)Q)] variable (Q: QuadraticForm R Muu: CliffordAlgebra Qvv: Clw :w: ClCliffordAlgebraCliffordAlgebra: {R : Type u_1} β [inst : CommRing R] β {M : Type u_2} β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β QuadraticForm R M β Type (max u_2 u_1)Q) local notation "Cl" => CliffordAlgebra Q local instanceQ: QuadraticForm R MhasCoeCliffordAlgebraRing :hasCoeCliffordAlgebraRing: {R : Type u_1} β {M : Type u_2} β [inst : CommRing R] β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β {Q : QuadraticForm R M} β Coe R ClCoeCoe: semiOutParam (Type u_1) β Type (max u_2 u_1) β Type (max (max 0 u_1) u_2 u_1)RR: Type u_1Cl := β¨Cl: Type (max u_2 u_1)algebraMapalgebraMap: (R : Type u_1) β (A : Type (max u_2 u_1)) β [inst : CommSemiring R] β [inst_1 : Semiring A] β [inst_2 : Algebra R A] β R β+* AR (R: Type u_1Cl)β© local instanceCl: Type (max u_2 u_1)hasCoeCliffordAlgebraModule :hasCoeCliffordAlgebraModule: Coe M ClCoeCoe: semiOutParam (Type u_2) β Type (max u_2 u_1) β Type (max (max 0 u_2) u_2 u_1)MM: Type u_2Cl := β¨Cl: Type (max u_2 u_1)CliffordAlgebra.ΞΉCliffordAlgebra.ΞΉ: {R : Type u_1} β [inst : CommRing R] β {M : Type u_2} β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β (Q : QuadraticForm R M) β M ββ[R] ClQβ© local notation "G0" => (algebraMap R Cl).range local notation "G1" => LinearMap.range (CliffordAlgebra.ΞΉ Q)Q: QuadraticForm R MGoals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v: Clu * v = β 2 * (u * v + v * u) + β 2 * (u * v - v * u)Goals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v: Clu * v = 1 * (u * v)R: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v: Clu * v = u * vGoals accomplished! π_: ClR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v: Clu * v = β 2 * (u * v + v * u) + β 2 * (u * v - v * u)Goals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v: Cl1 * (u * v) = β 2 * 2 * (u * v)R: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v: Cl1 * (u * v) = 1 * (u * v)Goals accomplished! π_: ClR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v: Clu * v = β 2 * (u * v + v * u) + β 2 * (u * v - v * u)Goals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v: Clβ 2 * 2 * (u * v) = β 2 * (2 * (u * v))R: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v: Clβ 2 * (2 * (u * v)) = β 2 * (2 * (u * v))Goals accomplished! π_: ClR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v: Clu * v = β 2 * (u * v + v * u) + β 2 * (u * v - v * u)Goals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v: Clβ 2 * (2 * (u * v)) = β 2 * (u * v + u * v)R: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v: Clβ 2 * (2 * (u * v)) = β 2 * (2 * (u * v))Goals accomplished! π_: ClR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v: Clu * v = β 2 * (u * v + v * u) + β 2 * (u * v - v * u)Goals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v: Clβ 2 * (u * v + u * v) = β 2 * (u * v + v * u + (u * v - v * u))R: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v: Clβ 2 * (u * v + u * v) = β 2 * (u * v + u * v)Goals accomplished! π_: ClR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v: Clu * v = β 2 * (u * v + v * u) + β 2 * (u * v - v * u)Goals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v: Clβ 2 * (u * v + v * u + (u * v - v * u)) = β 2 * (u * v + v * u) + β 2 * (u * v - v * u)R: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v: Clβ 2 * (u * v + v * u) + β 2 * (u * v - v * u) = β 2 * (u * v + v * u) + β 2 * (u * v - v * u)Goals accomplished! πGoals accomplished! πmul_eq_half_add_submul_eq_half_add_sub: β {R : Type u_1} {M : Type u_2} [inst : CommRing R] [inst_1 : AddCommGroup M] [inst_2 : Module R M] {Q : QuadraticForm R M} [inst_3 : Invertible 2] [inst_4 : Invertible 2] (u v : Cl), u * v = β 2 * (u * v + v * u) + β 2 * (u * v - v * u)
Axiom 1. G is a ring with unit. The additive identity is called 0 and the multiplicative identity is called 1.
CliffordAlgebra.instRingCliffordAlgebra.instRing: {R : Type u_1} β [inst : CommRing R] β {M : Type u_2} β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β (Q : QuadraticForm R M) β Ring Clexample :example: β {R : Type u_1} {M : Type u_2} [inst : CommRing R] [inst_1 : AddCommGroup M] [inst_2 : Module R M] {Q : QuadraticForm R M} (u : Cl), 0 + u = u0 +0: Clu =u: Clu :=u: ClGoals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w: Cl0 + u = uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w: Clu = uGoals accomplished! πexample :example: β {R : Type u_1} {M : Type u_2} [inst : CommRing R] [inst_1 : AddCommGroup M] [inst_2 : Module R M] {Q : QuadraticForm R M} (u : Cl), u + 0 = uu +u: Cl0 =0: Clu :=u: ClGoals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w: Clu + 0 = uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w: Clu = uGoals accomplished! πexample :example: β {R : Type u_1} {M : Type u_2} [inst : CommRing R] [inst_1 : AddCommGroup M] [inst_2 : Module R M] {Q : QuadraticForm R M} (u : Cl), 1 * u = u1 *1: Clu =u: Clu :=u: ClGoals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w: Cl1 * u = uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w: Clu = uGoals accomplished! πexample :example: β {R : Type u_1} {M : Type u_2} [inst : CommRing R] [inst_1 : AddCommGroup M] [inst_2 : Module R M] {Q : QuadraticForm R M} (u : Cl), u * 1 = uu *u: Cl1 =1: Clu :=u: ClGoals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w: Clu * 1 = uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w: Clu = uGoals accomplished! π
Axiom 2. G contains a ~~field~~ring G0 of characteristic zero which includes 0 and 1.
-- [Field R] -- [DivisionRing R] [CharZero R]G0 local notation "π" => (0 : Cl) local notation "π" => (1 : Cl) -- local notation "π’" => algebraMap R (CliffordAlgebra Q) -- #check π’G0: Subring Clππ: Clππ: Cl
Axiom 3. G contains a subset G1 closed under addition, and Ξ» β G0, v β G1 implies Ξ»v = vΞ» β G1.
MM: Type u_2G1G1: Submodule R Clexample :example: β {R : Type u_1} {M : Type u_2} [inst : CommRing R] [inst_1 : AddCommGroup M] [inst_2 : Module R M] {Q : QuadraticForm R M} (u : Cl) {r : Cl}, r β (algebraMap R Cl).range β§ u β G1 β r β’ u β G1r βr: ClG0 β§G0: Subring Clu βu: ClG1 βG1: Submodule R Clr β’r: Clu βu: ClG1 :=G1: Submodule R ClGoals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w, r: Cl
hr: r β (algebraMap R Cl).range
hu: u β G1
intror β’ u β G1R: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w, r: Cl
hr: r β (algebraMap R Cl).range
hu: u β G1
intror β’ u β G1R: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w, r: Cl
hr: r β (algebraMap R Cl).range
hu: β y, (CliffordAlgebra.ΞΉ Q) y = u
introβ y, (CliffordAlgebra.ΞΉ Q) y = r β’ uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w, r: Cl
hr: r β (algebraMap R Cl).range
hu: β y, (CliffordAlgebra.ΞΉ Q) y = u
introβ y, (CliffordAlgebra.ΞΉ Q) y = r β’ uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w, r: Cl
hr: r β (algebraMap R Cl).range
hu: β y, (CliffordAlgebra.ΞΉ Q) y = u
introβ y, (CliffordAlgebra.ΞΉ Q) y = r β’ uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w, r: Cl
hr: r β (algebraMap R Cl).range
hu: β y, (CliffordAlgebra.ΞΉ Q) y = u
introβ y, (CliffordAlgebra.ΞΉ Q) y = r β’ uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w, r: Cl
hr: β x, (algebraMap R Cl) x = r
hu: β y, (CliffordAlgebra.ΞΉ Q) y = u
introβ y, (CliffordAlgebra.ΞΉ Q) y = r β’ uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w, r: Cl
hr: β x, (algebraMap R Cl) x = r
hu: β y, (CliffordAlgebra.ΞΉ Q) y = u
introβ y, (CliffordAlgebra.ΞΉ Q) y = r β’ uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w, r: Cl
hr: β x, (algebraMap R Cl) x = r
hu: β y, (CliffordAlgebra.ΞΉ Q) y = u
introβ y, (CliffordAlgebra.ΞΉ Q) y = r β’ uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w, r: Cl
hr: β x, (algebraMap R Cl) x = r
hu: β y, (CliffordAlgebra.ΞΉ Q) y = u
r': R
hr': (algebraMap R Cl) r' = r
introβ y, (CliffordAlgebra.ΞΉ Q) y = r β’ uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w, r: Cl
hr: β x, (algebraMap R Cl) x = r
hu: β y, (CliffordAlgebra.ΞΉ Q) y = u
r': R
hr': (algebraMap R Cl) r' = r
u': M
hu': (CliffordAlgebra.ΞΉ Q) u' = u
introβ y, (CliffordAlgebra.ΞΉ Q) y = r β’ uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w, r: Cl
hr: β x, (algebraMap R Cl) x = r
hu: β y, (CliffordAlgebra.ΞΉ Q) y = u
r': R
hr': (algebraMap R Cl) r' = r
u': M
hu': (CliffordAlgebra.ΞΉ Q) u' = u
h(CliffordAlgebra.ΞΉ Q) (r' β’ u') = r β’ uGoals accomplished! π-- local notation "ΞΉ" => CliffordAlgebra.ΞΉ Q -- #check @Mul.mul Cl _ -- local notation "β" => @Mul.mul Cl _ -- example (r : R) (u : M) : r β u = u β r := by rw [@Algebra.commutes] -- local notation "*" => fun x y => (CliffordAlgebra Q).mul βx βy -- abbrev π’ := CliffordAlgebra Q -- abbrev Cl := CliffordAlgebra Q -- def Cl := CliffordAlgebra Q /- Cl.{u_2, u_1} {R : Type u_1} {M : Type u_2} [instβ : CommRing R] [instβΒΉ : AddCommGroup M] [instβΒ² : Module R M] {Q : QuadraticForm R M} : Type (max u_2 u_1) -/ -- #check Cl -- local notation "πΆπ" => CliffordAlgebra Q -- local notation "π’" => CliffordAlgebra Q -- local notation "π" => CliffordAlgebra Q -- local notation:50 A " =[" T:50 "] " B:50 => @Eq T A B -- local notation:50 A "=β" B:50 => @Eq πΆπ A B local notation:50 A "=" B:50 ":" T:50 => @Eq T A B example (u v: M) : β w : M, w = u + v : Cl :=Goals accomplished! πGoals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w: Cl
u, v: M
h(CliffordAlgebra.ΞΉ Q) (u + v) = (CliffordAlgebra.ΞΉ Q) u + (CliffordAlgebra.ΞΉ Q) vR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w: Cl
u, v: M
h(CliffordAlgebra.ΞΉ Q) (u + v) = (CliffordAlgebra.ΞΉ Q) u + (CliffordAlgebra.ΞΉ Q) vR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w: Cl
u, v: M
h(CliffordAlgebra.ΞΉ Q) u + (CliffordAlgebra.ΞΉ Q) v = (CliffordAlgebra.ΞΉ Q) u + (CliffordAlgebra.ΞΉ Q) vGoals accomplished! πexample : βexample: β {R : Type u_1} {M : Type u_2} [inst : CommRing R] [inst_1 : AddCommGroup M] [inst_2 : Module R M] {Q : QuadraticForm R M}, β u β G1, β v β G1, u + v β G1u βu: ClG1, βG1: Submodule R Clv βv: ClG1,G1: Submodule R Clu +u: Clv βv: ClG1 :=G1: Submodule R ClGoals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: u β G1
v: Cl
hv: v β G1u + v β G1R: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: u β G1
v: Cl
hv: v β G1u + v β G1R: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: u β G1
v: Cl
hv: v β G1β y, (CliffordAlgebra.ΞΉ Q) y = u + vR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: u β G1
v: Cl
hv: v β G1β y, (CliffordAlgebra.ΞΉ Q) y = u + vR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: u β G1
v: Cl
hv: v β G1β y, (CliffordAlgebra.ΞΉ Q) y = u + vGoals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: u β G1
v: Cl
hv: v β G1β u', (CliffordAlgebra.ΞΉ Q) u' = uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: β y, (CliffordAlgebra.ΞΉ Q) y = u
v: Cl
hv: v β G1β u', (CliffordAlgebra.ΞΉ Q) u' = uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: β y, (CliffordAlgebra.ΞΉ Q) y = u
v: Cl
hv: v β G1β u', (CliffordAlgebra.ΞΉ Q) u' = uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: β y, (CliffordAlgebra.ΞΉ Q) y = u
v: Cl
hv: v β G1β u', (CliffordAlgebra.ΞΉ Q) u' = uGoals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: u β G1
v: Cl
hv: v β G1
u': M
hu': (CliffordAlgebra.ΞΉ Q) u' = u
introβ y, (CliffordAlgebra.ΞΉ Q) y = u + vGoals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: u β G1
v: Cl
hv: v β G1
u': M
hu': (CliffordAlgebra.ΞΉ Q) u' = uβ v', (CliffordAlgebra.ΞΉ Q) v' = vR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: u β G1
v: Cl
hv: β y, (CliffordAlgebra.ΞΉ Q) y = v
u': M
hu': (CliffordAlgebra.ΞΉ Q) u' = uβ v', (CliffordAlgebra.ΞΉ Q) v' = vR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: u β G1
v: Cl
hv: β y, (CliffordAlgebra.ΞΉ Q) y = v
u': M
hu': (CliffordAlgebra.ΞΉ Q) u' = uβ v', (CliffordAlgebra.ΞΉ Q) v' = vR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: u β G1
v: Cl
hv: β y, (CliffordAlgebra.ΞΉ Q) y = v
u': M
hu': (CliffordAlgebra.ΞΉ Q) u' = uβ v', (CliffordAlgebra.ΞΉ Q) v' = vGoals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: u β G1
v: Cl
hv: v β G1
u': M
hu': (CliffordAlgebra.ΞΉ Q) u' = u
v': M
hv': (CliffordAlgebra.ΞΉ Q) v' = v
h(CliffordAlgebra.ΞΉ Q) (u' + v') = u + vR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: u β G1
v: Cl
hv: v β G1
u': M
hu': (CliffordAlgebra.ΞΉ Q) u' = u
v': M
hv': (CliffordAlgebra.ΞΉ Q) v' = v
h(CliffordAlgebra.ΞΉ Q) (u' + v') = u + vR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: u β G1
v: Cl
hv: v β G1
u': M
hu': (CliffordAlgebra.ΞΉ Q) u' = u
v': M
hv': (CliffordAlgebra.ΞΉ Q) v' = v
h(CliffordAlgebra.ΞΉ Q) u' + (CliffordAlgebra.ΞΉ Q) v' = u + vR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: u β G1
v: Cl
hv: v β G1
u': M
hu': (CliffordAlgebra.ΞΉ Q) u' = u
v': M
hv': (CliffordAlgebra.ΞΉ Q) v' = v
h(CliffordAlgebra.ΞΉ Q) u' + (CliffordAlgebra.ΞΉ Q) v' = u + vR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: u β G1
v: Cl
hv: v β G1
u': M
hu': (CliffordAlgebra.ΞΉ Q) u' = u
v': M
hv': (CliffordAlgebra.ΞΉ Q) v' = v
h(CliffordAlgebra.ΞΉ Q) u' + (CliffordAlgebra.ΞΉ Q) v' = u + vR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: u β G1
v: Cl
hv: v β G1
u': M
hu': (CliffordAlgebra.ΞΉ Q) u' = u
v': M
hv': (CliffordAlgebra.ΞΉ Q) v' = v
hu + (CliffordAlgebra.ΞΉ Q) v' = u + vR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, vβ, w, u: Cl
hu: u β G1
v: Cl
hv: v β G1
u': M
hu': (CliffordAlgebra.ΞΉ Q) u' = u
v': M
hv': (CliffordAlgebra.ΞΉ Q) v' = v
hu + v = u + vGoals accomplished! πGoals accomplished! πexample (example: β {R : Type u_1} {M : Type u_2} [inst : CommRing R] [inst_1 : AddCommGroup M] [inst_2 : Module R M] {Q : QuadraticForm R M} (r : R) (u : M), (algebraMap R Cl) r * (CliffordAlgebra.ΞΉ Q) u = (CliffordAlgebra.ΞΉ Q) u * (algebraMap R Cl) rr :r: RR) (R: Type u_1u :u: MM) :M: Type u_2r *r: Ru =u: Mu *u: Mr :r: RCl :=Cl: Type (max u_2 u_1)Goals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, v, w: Cl
r: R
u: M(algebraMap R Cl) r * (CliffordAlgebra.ΞΉ Q) u = (CliffordAlgebra.ΞΉ Q) u * (algebraMap R Cl) rR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, v, w: Cl
r: R
u: M(CliffordAlgebra.ΞΉ Q) u * (algebraMap R Cl) r = (CliffordAlgebra.ΞΉ Q) u * (algebraMap R Cl) rGoals accomplished! πexample (example: β {R : Type u_1} {M : Type u_2} [inst : CommRing R] [inst_1 : AddCommGroup M] [inst_2 : Module R M] {Q : QuadraticForm R M} (r : R) (u : M), β w, (CliffordAlgebra.ΞΉ Q) w = (algebraMap R Cl) r * (CliffordAlgebra.ΞΉ Q) ur :r: RR) (R: Type u_1u :u: MM) : βM: Type u_2w :w: MM,M: Type u_2w =w: Mr *r: Ru :u: MCl :=Cl: Type (max u_2 u_1)Goals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, v, w: Cl
r: R
u: M
h(CliffordAlgebra.ΞΉ Q) (r β’ u) = (algebraMap R Cl) r * (CliffordAlgebra.ΞΉ Q) uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, v, w: Cl
r: R
u: M
h(CliffordAlgebra.ΞΉ Q) (r β’ u) = (algebraMap R Cl) r * (CliffordAlgebra.ΞΉ Q) uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, v, w: Cl
r: R
u: M
hr β’ (CliffordAlgebra.ΞΉ Q) u = (algebraMap R Cl) r * (CliffordAlgebra.ΞΉ Q) uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, v, w: Cl
r: R
u: M
h(algebraMap R Cl) r * (CliffordAlgebra.ΞΉ Q) u = (algebraMap R Cl) r * (CliffordAlgebra.ΞΉ Q) uR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
uβ, v, w: Cl
r: R
u: M
h(CliffordAlgebra.ΞΉ Q) u * (algebraMap R Cl) r = (CliffordAlgebra.ΞΉ Q) u * (algebraMap R Cl) rGoals accomplished! π
Axiom 4. The square of every vector is a scalar.
CliffordAlgebra.ΞΉ_sq_scalar -- def square {Gn G: Type*} (m : Gn) : G -- | M.mk m => (ΞΉ m)^2 local notationCliffordAlgebra.ΞΉ_sq_scalar: β {R : Type u_1} [inst : CommRing R] {M : Type u_2} [inst_1 : AddCommGroup M] [inst_2 : Module R M] (Q : QuadraticForm R M) (m : M), (CliffordAlgebra.ΞΉ Q) m * (CliffordAlgebra.ΞΉ Q) m = (algebraMap R Cl) (Q m)x "Β²" => (x: Lean.TSyntax `termx : Cl)^2x: Lean.TSyntax `termGoals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
m: M(CliffordAlgebra.ΞΉ Q) m ^ 2 = (algebraMap R Cl) (Q m)R: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
m: M(CliffordAlgebra.ΞΉ Q) m * (CliffordAlgebra.ΞΉ Q) m = (algebraMap R Cl) (Q m)R: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
m: M(algebraMap R Cl) (Q m) = (algebraMap R Cl) (Q m)Goals accomplished! π/-οΌ Axiom 5. The inner product is nondegenerate. TODO: Wait to see if this is necessary and what's the weaker condition. -/Goals accomplished! π
Axiom 6. If G0 = G1, then G = G0. TODO: Wait to see if this is necessary and what's the weaker condition.
Otherwise, G is the direct sum of all the Gr.
CliffordAlgebra.GradedAlgebra.ΞΉCliffordAlgebra.GradedAlgebra.ΞΉ: {R : Type u_1} β {M : Type u_2} β [inst : CommRing R] β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β (Q : QuadraticForm R M) β M ββ[R] DirectSum (ZMod 2) fun i => β₯(CliffordAlgebra.evenOdd Q i)CliffordAlgebra.GradedAlgebra.ΞΉ_apply -- def π’α΅£ (v : M) (i : β) := CliffordAlgebra.GradedAlgebra.ΞΉ Q v iCliffordAlgebra.GradedAlgebra.ΞΉ_apply: β {R : Type u_1} {M : Type u_2} [inst : CommRing R] [inst_1 : AddCommGroup M] [inst_2 : Module R M] (Q : QuadraticForm R M) (m : M), (CliffordAlgebra.GradedAlgebra.ΞΉ Q) m = (DirectSum.of (fun i => β₯(CliffordAlgebra.evenOdd Q i)) 1) β¨(CliffordAlgebra.ΞΉ Q) m, β―β©GradedAlgebra.proj -- #check CliffordAlgebra.proj -- invalid occurrence of universe level 'u_3' at 'π’α΅£', it does not occur at the declaration type, nor it is explicit universe level provided by the user, occurring at expression -- sorryAx.{u_3} (?m.443921 _uniq.442570 _uniq.443000 _uniq.443430 mv i) -- at declaration body -- fun {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} -- (mv : CliffordAlgebra Q) (i : β) => -- sorryAx (?m.443921 _uniq.442570 _uniq.443000 _uniq.443430 mv i) -- def π’α΅£ (mv : CliffordAlgebra Q) (i : β) := sorry -- variable {ΞΉ : Type _} [DecidableEq ΞΉ] [AddMonoid ΞΉ] -- variable (π : ΞΉ β Submodule R (CliffordAlgebra Q)) variable (GradedAlgebra.proj: {ΞΉ : Type u_1} β {R : Type u_2} β {A : Type u_3} β [inst : DecidableEq ΞΉ] β [inst_1 : AddMonoid ΞΉ] β [inst_2 : CommSemiring R] β [inst_3 : Semiring A] β [inst_4 : Algebra R A] β (π : ΞΉ β Submodule R A) β [inst : GradedAlgebra π] β ΞΉ β A ββ[R] Aπ :π: β β Submodule R Clβ ββ: TypeSubmoduleSubmodule: (R : Type u_1) β (M : Type (max u_2 u_1)) β [inst : Semiring R] β [inst_1 : AddCommMonoid M] β [inst : Module R M] β Type (max u_2 u_1)R (R: Type u_1CliffordAlgebraCliffordAlgebra: {R : Type u_1} β [inst : CommRing R] β {M : Type u_2} β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β QuadraticForm R M β Type (max u_2 u_1)Q)) defQ: QuadraticForm R Mπ’α΅£ (π’α΅£: Cl β β β Clmv :mv: ClCliffordAlgebraCliffordAlgebra: {R : Type u_1} β [inst : CommRing R] β {M : Type u_2} β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β QuadraticForm R M β Type (max u_2 u_1)Q) (Q: QuadraticForm R Mi :i: ββ) :β: TypeCliffordAlgebraCliffordAlgebra: {R : Type u_1} β [inst : CommRing R] β {M : Type u_2} β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β QuadraticForm R M β Type (max u_2 u_1)Q :=Q: QuadraticForm R MGradedAlgebra.proj (GradedAlgebra.proj: {ΞΉ : Type} β {R : Type u_1} β {A : Type (max u_1 u_2)} β [inst : DecidableEq ΞΉ] β [inst_1 : AddMonoid ΞΉ] β [inst_2 : CommSemiring R] β [inst_3 : Semiring A] β [inst_4 : Algebra R A] β (π : ΞΉ β Submodule R A) β [inst : GradedAlgebra π] β ΞΉ β A ββ[R] ACliffordAlgebra.evenOddCliffordAlgebra.evenOdd: {R : Type u_1} β {M : Type u_2} β [inst : CommRing R] β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β (Q : QuadraticForm R M) β ZMod 2 β Submodule R ClQ)Q: QuadraticForm R Mii: βmvmv: ClList -- (fun xs i => true) -- (CliffordAlgebra Q β β β Prop) instanceList: Type u β Type uinstGetElemByGradeCliffordAlgebra :instGetElemByGradeCliffordAlgebra: GetElem Cl β Cl fun _mv i => βi < Module.rank R ClGetElem (GetElem: (coll : Type (max u_2 u_1)) β (idx : Type) β outParam (Type (max u_2 u_1)) β outParam (coll β idx β Prop) β Type (max (max u_2 u_1) 0)CliffordAlgebraCliffordAlgebra: {R : Type u_1} β [inst : CommRing R] β {M : Type u_2} β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β QuadraticForm R M β Type (max u_2 u_1)Q)Q: QuadraticForm R Mβ (β: TypeCliffordAlgebraCliffordAlgebra: {R : Type u_1} β [inst : CommRing R] β {M : Type u_2} β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β QuadraticForm R M β Type (max u_2 u_1)Q) (funQ: QuadraticForm R M_mv_mv: Cli =>i: βi <i: βModule.rankModule.rank: (R : Type u_1) β (M : Type (max u_2 u_1)) β [inst : Semiring R] β [inst_1 : AddCommMonoid M] β [inst : Module R M] β Cardinal.{max u_2 u_1}R (R: Type u_1CliffordAlgebraCliffordAlgebra: {R : Type u_1} β [inst : CommRing R] β {M : Type u_2} β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β QuadraticForm R M β Type (max u_2 u_1)Q)) := { getElem := funQ: QuadraticForm R Mmvmv: Clii: β_h =>_h: βi < Module.rank R Clπ’α΅£π’α΅£: {R : Type u_1} β {M : Type u_2} β [inst : CommRing R] β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β {Q : QuadraticForm R M} β Cl β β β Clmvmv: Cli }i: βexample (example: β {R : Type u_1} {M : Type u_2} [inst : CommRing R] [inst_1 : AddCommGroup M] [inst_2 : Module R M] {Q : QuadraticForm R M} (mv : Cl) (i : β) (h : βi < Module.rank R Cl), mv[i] = mv[i]mv :mv: ClCliffordAlgebraCliffordAlgebra: {R : Type u_1} β [inst : CommRing R] β {M : Type u_2} β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β QuadraticForm R M β Type (max u_2 u_1)Q) (Q: QuadraticForm R Mi :i: ββ) (β: Typeh :h: βi < Module.rank R Cli <i: βModule.rankModule.rank: (R : Type u_1) β (M : Type (max u_2 u_1)) β [inst : Semiring R] β [inst_1 : AddCommMonoid M] β [inst : Module R M] β Cardinal.{max u_2 u_1}R (R: Type u_1CliffordAlgebraCliffordAlgebra: {R : Type u_1} β [inst : CommRing R] β {M : Type u_2} β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β QuadraticForm R M β Type (max u_2 u_1)Q)) :Q: QuadraticForm R Mmv[mv: Cli] =i: βmv[mv: Cli] :=i: βrflrfl: β {Ξ± : Type (max u_1 u_2)} {a : Ξ±}, a = aCoeFunCoeFun: (Ξ± : Sort u) β outParam (Ξ± β Sort v) β Sort (max (max 1 u) v)Module.FiniteModule.Finite: (R : Type u_1) β (M : Type u_4) β [inst : Semiring R] β [inst_1 : AddCommMonoid M] β [inst : Module R M] β PropSubmodule.spanSubmodule.span: (R : Type u_1) β {M : Type u_4} β [inst : Semiring R] β [inst_1 : AddCommMonoid M] β [inst_2 : Module R M] β Set M β Submodule R MModule.rankModule.rank: (R : Type u_1) β (M : Type u_2) β [inst : Semiring R] β [inst_1 : AddCommMonoid M] β [inst : Module R M] β Cardinal.{u_2}RR: Type u_1MM: Type u_2Module.rankModule.rank: (R : Type u_1) β (M : Type (max u_2 u_1)) β [inst : Semiring R] β [inst_1 : AddCommMonoid M] β [inst : Module R M] β Cardinal.{max u_2 u_1}R (R: Type u_1CliffordAlgebraCliffordAlgebra: {R : Type u_1} β [inst : CommRing R] β {M : Type u_2} β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β QuadraticForm R M β Type (max u_2 u_1)Q)Q: QuadraticForm R MAlgebra.adjoinAlgebra.adjoin: (R : Type u) β {A : Type v} β [inst : CommSemiring R] β [inst_1 : Semiring A] β [inst_2 : Algebra R A] β Set A β Subalgebra R ASubsemiring.closureSubsemiring.closure: {R : Type u} β [inst : NonAssocSemiring R] β Set R β Subsemiring RAlgebra.adjoin_eqAlgebra.adjoin_eq: β {R : Type uR} {A : Type uA} [inst : CommSemiring R] [inst_1 : Semiring A] [inst_2 : Algebra R A] (S : Subalgebra R A), Algebra.adjoin R βS = SAlgebra.adjoin_eq_range_freeAlgebra_liftAlgebra.adjoin_eq_range_freeAlgebra_lift: β (R : Type u_1) [inst : CommSemiring R] {A : Type u_3} [inst_1 : Semiring A] [inst_2 : Algebra R A] (s : Set A), Algebra.adjoin R s = ((FreeAlgebra.lift R) Subtype.val).rangeexample (example: β (c : β), c = cc :c: ββ) :β: Typec =c: βc :=c: βrflrfl: β {Ξ± : Type} {a : Ξ±}, a = aCliffordAlgebraComplex.ofComplexCliffordAlgebraComplex.ofComplex: β ββ[β] CliffordAlgebra CliffordAlgebraComplex.QModule.rankModule.rank: (R M : Type) β [inst : Semiring R] β [inst_1 : AddCommMonoid M] β [inst : Module R M] β Cardinal.{0}β (β: TypeCliffordAlgebraCliffordAlgebra: {R : Type} β [inst : CommRing R] β {M : Type} β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β QuadraticForm R M β TypeCliffordAlgebraComplex.Q)CliffordAlgebraComplex.Q: QuadraticForm β βexample :example: Cardinal.mk β = Cardinal.continuumCardinal.mkCardinal.mk: Type β Cardinal.{0}β =β: TypeCardinal.continuum :=Cardinal.continuum: Cardinal.{0}Goals accomplished! πGoals accomplished! πexample :example: Module.rank β β = 1Module.rankModule.rank: (R M : Type) β [inst : Semiring R] β [inst_1 : AddCommMonoid M] β [inst : Module R M] β Cardinal.{0}ββ: Typeβ =β: Type1 :=1: Cardinal.{0}Goals accomplished! πGoals accomplished! πexample :example: Module.rank β β = 2Module.rankModule.rank: (R M : Type) β [inst : Semiring R] β [inst_1 : AddCommMonoid M] β [inst : Module R M] β Cardinal.{0}ββ: Typeβ =β: Type2 :=2: Cardinal.{0}Goals accomplished! πGoals accomplished! πRingHom.Finite -- local instance : Module.Finite β β := by -- apply Complex.finite_real_complex -- instance instFiniteCliffordAlgebraComplex : Module.Finite β (CliffordAlgebra CliffordAlgebraComplex.Q) := sorry noncomputable defRingHom.Finite: {A : Type u_1} β {B : Type u_2} β [inst : CommRing A] β [inst_1 : CommRing B] β (A β+* B) β PropbasisOneI :basisOneI: Basis (Fin 2) β (CliffordAlgebra CliffordAlgebraComplex.Q)Basis (Basis: Type β (R M : Type) β [inst : Semiring R] β [inst_1 : AddCommMonoid M] β [inst : Module R M] β TypeFinFin: β β Type2)2: ββ (β: TypeCliffordAlgebraCliffordAlgebra: {R : Type} β [inst : CommRing R] β {M : Type} β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β QuadraticForm R M β TypeCliffordAlgebraComplex.Q) :=CliffordAlgebraComplex.Q: QuadraticForm β βBasis.ofEquivFun { toFun := funBasis.ofEquivFun: {ΞΉ R M : Type} β [inst : Semiring R] β [inst_1 : AddCommMonoid M] β [inst_2 : Module R M] β [inst_3 : Finite ΞΉ] β (M ββ[R] ΞΉ β R) β Basis ΞΉ R Mmv => letmv: CliffordAlgebra CliffordAlgebraComplex.Qz :=z: βCliffordAlgebraComplex.toComplexCliffordAlgebraComplex.toComplex: CliffordAlgebra CliffordAlgebraComplex.Q ββ[β] βmv ![mv: CliffordAlgebra CliffordAlgebraComplex.Qz.z: βre,re: β β βz.z: βim] invFun := funim: β β βc =>c: Fin 2 β βCliffordAlgebraComplex.ofComplex (CliffordAlgebraComplex.ofComplex: β ββ[β] CliffordAlgebra CliffordAlgebraComplex.Qcc: Fin 2 β β0 +0: Fin 2cc: Fin 2 β β1 β’1: Fin 2Complex.I) left_inv := funComplex.I: βz =>z: CliffordAlgebra CliffordAlgebraComplex.QGoals accomplished! πright_inv := funGoals accomplished! πc =>c: Fin 2 β βGoals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w: Cl
π: β β Submodule R Cl
c: Fin 2 β β
i: Fin 2
h{ toFun := fun mv => let z := CliffordAlgebraComplex.toComplex mv; ![z.re, z.im], map_add' := β―, map_smul' := β― }.toFun ((fun c => CliffordAlgebraComplex.ofComplex (β(c 0) + c 1 β’ Complex.I)) c) i = c iR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w: Cl
π: β β Submodule R Cl
c: Fin 2 β β
h.head{ toFun := fun mv => let z := CliffordAlgebraComplex.toComplex mv; ![z.re, z.im], map_add' := β―, map_smul' := β― }.toFun ((fun c => CliffordAlgebraComplex.ofComplex (β(c 0) + c 1 β’ Complex.I)) c) β¨0, β―β© = c β¨0, β―β©R: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w: Cl
π: β β Submodule R Cl
c: Fin 2 β β{ toFun := fun mv => let z := CliffordAlgebraComplex.toComplex mv; ![z.re, z.im], map_add' := β―, map_smul' := β― }.toFun ((fun c => CliffordAlgebraComplex.ofComplex (β(c 0) + c 1 β’ Complex.I)) c) β¨1, β―β© = c β¨1, β―β©R: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w: Cl
π: β β Submodule R Cl
c: Fin 2 β β
h.head{ toFun := fun mv => let z := CliffordAlgebraComplex.toComplex mv; ![z.re, z.im], map_add' := β―, map_smul' := β― }.toFun ((fun c => CliffordAlgebraComplex.ofComplex (β(c 0) + c 1 β’ Complex.I)) c) β¨0, β―β© = c β¨0, β―β©R: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w: Cl
π: β β Submodule R Cl
c: Fin 2 β β{ toFun := fun mv => let z := CliffordAlgebraComplex.toComplex mv; ![z.re, z.im], map_add' := β―, map_smul' := β― }.toFun ((fun c => CliffordAlgebraComplex.ofComplex (β(c 0) + c 1 β’ Complex.I)) c) β¨1, β―β© = c β¨1, β―β©map_add' := funGoals accomplished! πzz: CliffordAlgebra CliffordAlgebraComplex.Qz' =>z': CliffordAlgebra CliffordAlgebraComplex.QGoals accomplished! πmap_smul' := funGoals accomplished! πcc: βz =>z: CliffordAlgebra CliffordAlgebraComplex.QGoals accomplished! π}Goals accomplished! πexample :example: finrank β (CliffordAlgebra CliffordAlgebraComplex.Q) = 2finrankfinrank: (R M : Type) β [inst : Semiring R] β [inst_1 : AddCommGroup M] β [inst : Module R M] β ββ (β: TypeCliffordAlgebraCliffordAlgebra: {R : Type} β [inst : CommRing R] β {M : Type} β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β QuadraticForm R M β TypeCliffordAlgebraComplex.Q) =CliffordAlgebraComplex.Q: QuadraticForm β β2 :=2: βGoals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w: Cl
π: β β Submodule R Clfinrank β (CliffordAlgebra CliffordAlgebraComplex.Q) = 2R: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w: Cl
π: β β Submodule R ClFintype.card (Fin 2) = 2R: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w: Cl
π: β β Submodule R Cl2 = 2Goals accomplished! πGoals accomplished! πCliffordAlgebraComplex.equiv universe uACliffordAlgebraComplex.equiv: CliffordAlgebra CliffordAlgebraComplex.Q ββ[β] βAlgEquiv.toLinearEquiv_reflAlgEquiv.toLinearEquiv_refl: β {R : Type uR} {Aβ : Type uAβ} [inst : CommSemiring R] [inst_1 : Semiring Aβ] [inst_2 : Algebra R Aβ], AlgEquiv.refl.toLinearEquiv = LinearEquiv.refl R AβFiniteDimensional.nonempty_linearEquiv_iff_finrank_eq /- LinearEquiv.finrank_eq.{u_3, u_2, u_1} {R : Type u_1} {M : Type u_2} {Mβ : Type u_3} [instβ : Ring R] [instβΒΉ : AddCommGroup M] [instβΒ² : AddCommGroup Mβ] [instβΒ³ : Module R M] [instββ΄ : Module R Mβ] (f : M ββ[R] Mβ) : finrank R M = finrank R Mβ -/FiniteDimensional.nonempty_linearEquiv_iff_finrank_eq: β {R : Type u} {M : Type v} {M' : Type v'} [inst : Ring R] [inst_1 : StrongRankCondition R] [inst_2 : AddCommGroup M] [inst_3 : Module R M] [inst_4 : Module.Free R M] [inst_5 : AddCommGroup M'] [inst_6 : Module R M'] [inst_7 : Module.Free R M'] [inst_8 : Module.Finite R M] [inst_9 : Module.Finite R M'], Nonempty (M ββ[R] M') β finrank R M = finrank R M'LinearEquiv.finrank_eqLinearEquiv.finrank_eq: β {R : Type u_1} {M : Type u_2} {Mβ : Type u_3} [inst : Ring R] [inst_1 : AddCommGroup M] [inst_2 : AddCommGroup Mβ] [inst_3 : Module R M] [inst_4 : Module R Mβ], (M ββ[R] Mβ) β finrank R M = finrank R MβCommRing local notation "Clβ" => CliffordAlgebra CliffordAlgebraComplex.Q lemmaCommRing: Type u β Type ufinrank_eq (finrank_eq: β (R : Type uR) (A B : Type uA) [inst : CommRing R] [inst_1 : Ring A] [inst_2 : Ring B] [inst_3 : Algebra R A] [inst_4 : Algebra R B], (A ββ[R] B) β finrank R A = finrank R BR:R: Type uRType uR) (Type uR: Type (uR + 1)AA: Type uAB:B: Type uAType uA) [Type uA: Type (uA + 1)CommRingCommRing: Type uR β Type uRR] [R: Type uRRingRing: Type uA β Type uAA] [A: Type uARingRing: Type uA β Type uAB] [B: Type uAAlgebraAlgebra: (R : Type uR) β (A : Type uA) β [inst : CommSemiring R] β [inst : Semiring A] β Type (max uR uA)RR: Type uRA] [A: Type uAAlgebraAlgebra: (R : Type uR) β (A : Type uA) β [inst : CommSemiring R] β [inst : Semiring A] β Type (max uR uA)RR: Type uRB] : (B: Type uAA ββ[A: Type uAR]R: Type uRB) βB: Type uAfinrankfinrank: (R : Type uR) β (M : Type uA) β [inst : Semiring R] β [inst_1 : AddCommGroup M] β [inst : Module R M] β βRR: Type uRA =A: Type uAfinrankfinrank: (R : Type uR) β (M : Type uA) β [inst : Semiring R] β [inst_1 : AddCommGroup M] β [inst : Module R M] β βRR: Type uRB := funB: Type uAha =>ha: A ββ[R] BLinearEquiv.finrank_eqLinearEquiv.finrank_eq: β {R : Type uR} {M Mβ : Type uA} [inst : Ring R] [inst_1 : AddCommGroup M] [inst_2 : AddCommGroup Mβ] [inst_3 : Module R M] [inst_4 : Module R Mβ], (M ββ[R] Mβ) β finrank R M = finrank R Mβha.ha: A ββ[R] BtoLinearEquiv -- donetoLinearEquiv: {R : Type uR} β {Aβ Aβ : Type uA} β [inst : CommSemiring R] β [inst_1 : Semiring Aβ] β [inst_2 : Semiring Aβ] β [inst_3 : Algebra R Aβ] β [inst_4 : Algebra R Aβ] β (Aβ ββ[R] Aβ) β Aβ ββ[R] Aβexample :example: finrank β Clβ = finrank β βfinrankfinrank: (R M : Type) β [inst : Semiring R] β [inst_1 : AddCommGroup M] β [inst : Module R M] β βββ: TypeClβ =Clβ: Typefinrankfinrank: (R M : Type) β [inst : Semiring R] β [inst_1 : AddCommGroup M] β [inst : Module R M] β βββ: Typeβ :=β: TypeGoals accomplished! πR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w: Cl
π: β β Submodule R Clfinrank β Clβ = finrank β βR: Type u_1
M: Type u_2
instββ΄: CommRing R
instβΒ³: AddCommGroup M
instβΒ²: Module R M
Q: QuadraticForm R M
instβΒΉ: Invertible 2
instβ: Invertible 2
u, v, w: Cl
π: β β Submodule R Clfinrank β β = finrank β βGoals accomplished! πexample :example: finrank β Clβ = finrank β βfinrankfinrank: (R M : Type) β [inst : Semiring R] β [inst_1 : AddCommGroup M] β [inst : Module R M] β βββ: TypeClβ =Clβ: Typefinrankfinrank: (R M : Type) β [inst : Semiring R] β [inst_1 : AddCommGroup M] β [inst : Module R M] β βββ: Typeβ :=β: TypeLinearEquiv.finrank_eqLinearEquiv.finrank_eq: β {R M Mβ : Type} [inst : Ring R] [inst_1 : AddCommGroup M] [inst_2 : AddCommGroup Mβ] [inst_3 : Module R M] [inst_4 : Module R Mβ], (M ββ[R] Mβ) β finrank R M = finrank R MβCliffordAlgebraComplex.equiv.CliffordAlgebraComplex.equiv: Clβ ββ[β] βtoLinearEquiv -- done -- example (n : β) : Cardinal.mk (Vector β n) = n := by -- simp only [Cardinal.mk_vector] -- done -- #check Cardinal.mk_vector -- example (c : β) : (CliffordAlgebraComplex.ofComplex c)[0] = 1 := rfl -- example : Module.rank R (CliffordAlgebra Q) = 2^(Module.rank R M) := sorrytoLinearEquiv: {R Aβ Aβ : Type} β [inst : CommSemiring R] β [inst_1 : Semiring Aβ] β [inst_2 : Semiring Aβ] β [inst_3 : Algebra R Aβ] β [inst_4 : Algebra R Aβ] β (Aβ ββ[R] Aβ) β Aβ ββ[R] AβDirectSum.GradeZero.moduleDirectSum.GradeZero.module: {ΞΉ : Type u_1} β [inst : DecidableEq ΞΉ] β (A : ΞΉ β Type u_2) β [inst_1 : (i : ΞΉ) β AddCommMonoid (A i)] β [inst_2 : AddMonoid ΞΉ] β [inst_3 : DirectSum.GSemiring A] β {i : ΞΉ} β Module (A 0) (A i)DirectSum.decomposeRingEquiv (DirectSum.decomposeRingEquiv: {ΞΉ : Type} β {A Ο : Type (max u_1 u_2)} β [inst : DecidableEq ΞΉ] β [inst_1 : AddMonoid ΞΉ] β [inst_2 : Semiring A] β [inst_3 : SetLike Ο A] β [inst_4 : AddSubmonoidClass Ο A] β (π : ΞΉ β Ο) β [inst_5 : GradedRing π] β A β+* DirectSum ΞΉ fun i => β₯(π i)CliffordAlgebra.evenOddCliffordAlgebra.evenOdd: {R : Type u_1} β {M : Type u_2} β [inst : CommRing R] β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β (Q : QuadraticForm R M) β ZMod 2 β Submodule R ClQ)Q: QuadraticForm R MDirectSum.decomposeAlgEquiv (DirectSum.decomposeAlgEquiv: {ΞΉ : Type} β {R : Type u_1} β {A : Type (max u_1 u_2)} β [inst : DecidableEq ΞΉ] β [inst_1 : AddMonoid ΞΉ] β [inst_2 : CommSemiring R] β [inst_3 : Semiring A] β [inst_4 : Algebra R A] β (π : ΞΉ β Submodule R A) β [inst_5 : GradedAlgebra π] β A ββ[R] DirectSum ΞΉ fun i => β₯(π i)CliffordAlgebra.evenOddCliffordAlgebra.evenOdd: {R : Type u_1} β {M : Type u_2} β [inst : CommRing R] β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β (Q : QuadraticForm R M) β ZMod 2 β Submodule R ClQ)Q: QuadraticForm R MLinearEquiv.ofFinrankEq open DirectSum local notation "Clββ" => CliffordAlgebra.evenOdd Q -- def Clββ (i : ZMod 2) : Submodule R Cl := CliffordAlgebra.evenOdd Q iLinearEquiv.ofFinrankEq: {R : Type u} β (M : Type v) β (M' : Type v') β [inst : Ring R] β [inst_1 : StrongRankCondition R] β [inst_2 : AddCommGroup M] β [inst_3 : Module R M] β [inst_4 : Module.Free R M] β [inst_5 : AddCommGroup M'] β [inst_6 : Module R M'] β [inst_7 : Module.Free R M'] β [inst_8 : Module.Finite R M] β [inst_9 : Module.Finite R M'] β finrank R M = finrank R M' β M ββ[R] M'example :example: {R : Type u_1} β {M : Type u_2} β [inst : CommRing R] β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β {Q : QuadraticForm R M} β Cl β+* β¨ (i : ZMod 2), β₯(Clββ i)Cl β+* β¨ (Cl: Type (max u_2 u_1)i :i: ZMod 2ZModZMod: β β Type2),2: βClββClββ: ZMod 2 β Submodule R Cli :=i: ZMod 2Goals accomplished! πGoals accomplished! πGoals accomplished! πexample :example: {R : Type u_1} β {M : Type u_2} β [inst : CommRing R] β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β {Q : QuadraticForm R M} β Cl ββ[R] β¨ (i : ZMod 2), β₯(Clββ i)Cl ββ[Cl: Type (max u_2 u_1)R] β¨ (R: Type u_1i :i: ZMod 2ZModZMod: β β Type2),2: βClββClββ: ZMod 2 β Submodule R Cli :=i: ZMod 2Goals accomplished! πGoals accomplished! πvariable (Goals accomplished! πi :i: ZMod 2ZModZMod: β β Type2)2: βCliffordAlgebra.evenOddCliffordAlgebra.evenOdd: {R : Type u_1} β {M : Type u_2} β [inst : CommRing R] β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β (Q : QuadraticForm R M) β ZMod 2 β Submodule R ClQQ: QuadraticForm R Mii: ZMod 2finrank_directSum /- failed to synthesize CommRing (β¨ (i : ZMod 2), β₯CliffordAlgebra.evenOdd Q i) (deterministic) timeout at 'whnf', maximum number of heartbeats (200000) has been reached (use 'set_option maxHeartbeats <num>' to set the limit) -/ -- #check finrank_directSum (β¨ i, CliffordAlgebra.evenOdd Q i) -- example (i : ZMod 2) : finrank (β¨ i, CliffordAlgebra.evenOdd Q i) = := by -- -- rw [finrank_directSum] -- done -- example : finrank R (CliffordAlgebra Q) = 2^(finrank R M) := by -- -- conv_lhs => rw [finrank_directSum] -- rw [β Nat.sum_range_choose] -- sorry -- donefinrank_directSum: β (R : Type u) [inst : Ring R] [inst_1 : StrongRankCondition R] {ΞΉ : Type v} [inst_2 : Fintype ΞΉ] (M : ΞΉ β Type w) [inst_3 : (i : ΞΉ) β AddCommGroup (M i)] [inst_4 : (i : ΞΉ) β Module R (M i)] [inst_5 : β (i : ΞΉ), Module.Free R (M i)] [inst_6 : β (i : ΞΉ), Module.Finite R (M i)], finrank R (β¨ (i : ΞΉ), M i) = β i : ΞΉ, finrank R (M i)