Built with Alectryon. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑ Ctrl+↓ to navigate, Ctrl+πŸ–±οΈ to focus. On Mac, use ⌘ instead of Ctrl.
Hover-Settings: Show types: Show goals:
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 FiniteDimensional (
finrank: (R : Type u_1) β†’ (M : Type u_2) β†’ [inst : Semiring R] β†’ [inst_1 : AddCommGroup M] β†’ [inst : Module R M] β†’ β„•
finrank
finrank_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_eq_card_basis
finrank_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) = Finset.univ.sum fun i => finrank R (M i)
finrank_directSum
) set_option quotPrecheck false variable {
R: Type u_1
R
M: Type u_2
M
:
Type*: Type (u_1 + 1)
Type*
} [
CommRing: Type u_1 β†’ Type u_1
CommRing
R: Type u_1
R
] [
AddCommGroup: Type u_2 β†’ Type u_2
AddCommGroup
M: Type u_2
M
] [
Module: (R : Type u_1) β†’ (M : Type u_2) β†’ [inst : Semiring R] β†’ [inst : AddCommMonoid M] β†’ Type (max u_1 u_2)
Module
R: Type u_1
R
M: Type u_2
M
] variable {
Q: QuadraticForm R M
Q
:
QuadraticForm: (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)
QuadraticForm
R: Type u_1
R
M: Type u_2
M
} variable [
Invertible: {Ξ± : Type u_1} β†’ [inst : Mul Ξ±] β†’ [inst : One Ξ±] β†’ Ξ± β†’ Type u_1
Invertible
(
2: R
2
:
R: Type u_1
R
)] variable [
Invertible: {Ξ± : Type (max u_1 u_2)} β†’ [inst : Mul Ξ±] β†’ [inst : One Ξ±] β†’ Ξ± β†’ Type (max u_1 u_2)
Invertible
(
2: Cl
2
:
CliffordAlgebra: {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)
CliffordAlgebra
Q: QuadraticForm R M
Q
)] variable (
u: Cl
u
v: Cl
v
w: Cl
w
:
CliffordAlgebra: {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)
CliffordAlgebra
Q: QuadraticForm R M
Q
) local notation "Cl" => CliffordAlgebra Q local instance
hasCoeCliffordAlgebraRing: Coe R Cl
hasCoeCliffordAlgebraRing
:
Coe: semiOutParam (Type u_1) β†’ Type (max u_1 u_2) β†’ Type (max u_1 u_2)
Coe
R: Type u_1
R
Cl: Type (max u_2 u_1)
Cl
:= ⟨
algebraMap: (R : Type u_1) β†’ (A : Type (max u_1 u_2)) β†’ [inst : CommSemiring R] β†’ [inst_1 : Semiring A] β†’ [inst_2 : Algebra R A] β†’ R β†’+* A
algebraMap
R: Type u_1
R
(
Cl: Type (max u_2 u_1)
Cl
)⟩ local instance
hasCoeCliffordAlgebraModule: Coe M Cl
hasCoeCliffordAlgebraModule
:
Coe: semiOutParam (Type u_2) β†’ Type (max u_1 u_2) β†’ Type (max u_1 u_2)
Coe
M: Type u_2
M
Cl: Type (max u_2 u_1)
Cl
:= ⟨
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] Cl
CliffordAlgebra.ΞΉ
Q: QuadraticForm R M
Q
⟩ local notation "G0" => (algebraMap R Cl).range local notation "G1" => LinearMap.range (CliffordAlgebra.ι Q) lemma
mul_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] (u v : Cl), u * v = β…Ÿ2 * (u * v + v * u) + β…Ÿ2 * (u * v - v * u)
mul_eq_half_add_sub
:
u: Cl
u
*
v: Cl
v
= β…Ÿ
2: Cl
2
* (
u: Cl
u
*
v: Cl
v
+
v: Cl
v
*
u: Cl
u
) + β…Ÿ
2: Cl
2
* (
u: Cl
u
*
v: Cl
v
-
v: Cl
v
*
u: Cl
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, w: Cl

u * 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, w: Cl

u * 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, w: Cl

u * v = u * v

Goals accomplished! πŸ™
_: Cl
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 = β…Ÿ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, w: Cl

1 * (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, w: Cl

1 * (u * v) = 1 * (u * v)

Goals accomplished! πŸ™
_: Cl
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 = β…Ÿ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, w: 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, w: Cl

β…Ÿ2 * (2 * (u * v)) = β…Ÿ2 * (2 * (u * v))

Goals accomplished! πŸ™
_: Cl
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 = β…Ÿ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, w: 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, w: Cl

β…Ÿ2 * (2 * (u * v)) = β…Ÿ2 * (2 * (u * v))

Goals accomplished! πŸ™
_: Cl
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 = β…Ÿ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, w: 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, w: Cl

β…Ÿ2 * (u * v + u * v) = β…Ÿ2 * (u * v + u * v)

Goals accomplished! πŸ™
_: Cl
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 = β…Ÿ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, w: 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, w: 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_sub.{u_2, u_1} {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] {Q : QuadraticForm R M} [Invertible 2] (u v : Cl) : u * v = β…Ÿ2 * (u * v + v * u) + β…Ÿ2 * (u * v - v * u)
mul_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] (u v : Cl), u * v = β…Ÿ2 * (u * v + v * u) + β…Ÿ2 * (u * v - v * u)
mul_eq_half_add_sub

Axiom 1. G is a ring with unit. The additive identity is called 0 and the multiplicative identity is called 1.

CliffordAlgebra.instRing.{u_2, u_1} {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) : Ring Cl
CliffordAlgebra.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 Cl
CliffordAlgebra.instRing
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 = u
example
:
0: Cl
0
+
u: Cl
u
=
u: Cl
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, w: Cl

0 + u = 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, w: Cl

u = u

Goals accomplished! πŸ™
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 = u
example
:
u: Cl
u
+
0: Cl
0
=
u: Cl
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, w: Cl

u + 0 = 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, w: Cl

u = u

Goals accomplished! πŸ™
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 = u
example
:
1: Cl
1
*
u: Cl
u
=
u: Cl
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, w: Cl

1 * u = 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, w: Cl

u = u

Goals accomplished! πŸ™
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 = u
example
:
u: Cl
u
*
1: Cl
1
=
u: Cl
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, w: Cl

u * 1 = 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, w: Cl

u = u

Goals accomplished! πŸ™

Axiom 2. G contains a ~~field~~ring G0 of characteristic zero which includes 0 and 1.

-- [Field R]
-- [DivisionRing R] [CharZero R]

(algebraMap R Cl).range : Subring Cl
G0: Subring Cl
G0
local notation "𝟘" => (0 : Cl) local notation "πŸ™" => (1 : Cl) -- local notation "𝒒" => algebraMap R (CliffordAlgebra Q) -- #check 𝒒
0 : Cl
𝟘: Cl
𝟘
1 : Cl
πŸ™: Cl
πŸ™

Axiom 3. G contains a subset G1 closed under addition, and λ ∈ G0, v ∈ G1 implies λv = vλ ∈ G1.

M : Type u_2
M: Type u_2
M
G1 : Submodule R Cl
G1: Submodule R Cl
G1
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 ∈ G1
example
:
r: Cl
r
∈
G0: Subring Cl
G0
∧
u: Cl
u
∈
G1: Submodule R Cl
G1
β†’
r: Cl
r
β€’
u: Cl
u
∈
G1: Submodule R Cl
G1
:=

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, r: Cl
hr: r ∈ (algebraMap R Cl).range
hu: u ∈ G1

intro
r β€’ u ∈ G1
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

intro
r β€’ u ∈ G1
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: βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = u

intro
βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = r β€’ 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, w, r: Cl
hr: r ∈ (algebraMap R Cl).range
hu: βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = u

intro
βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = r β€’ 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, w, r: Cl
hr: r ∈ (algebraMap R Cl).range
hu: βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = u

intro
βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = r β€’ 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, w, r: Cl
hr: r ∈ (algebraMap R Cl).range
hu: βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = u

intro
βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = r β€’ 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, w, r: Cl
hr: βˆƒ x, (algebraMap R Cl) x = r
hu: βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = u

intro
βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = r β€’ 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, w, r: Cl
hr: βˆƒ x, (algebraMap R Cl) x = r
hu: βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = u

intro
βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = r β€’ 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, w, r: Cl
hr: βˆƒ x, (algebraMap R Cl) x = r
hu: βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = u

intro
βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = r β€’ 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, 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 β€’ 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, 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 β€’ 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, 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 β€’ u

Goals accomplished! πŸ™

Goals 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! πŸ™
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) 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✝, w: Cl
u, v: M

h
(CliffordAlgebra.ΞΉ Q) (u + v) = (CliffordAlgebra.ΞΉ Q) u + (CliffordAlgebra.ΞΉ Q) 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✝, w: Cl
u, v: M

h
(CliffordAlgebra.ΞΉ Q) u + (CliffordAlgebra.ΞΉ Q) v = (CliffordAlgebra.ΞΉ Q) u + (CliffordAlgebra.ΞΉ Q) v

Goals accomplished! πŸ™
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 ∈ G1
example
: βˆ€
u: Cl
u
∈
G1: Submodule R Cl
G1
, βˆ€
v: Cl
v
∈
G1: Submodule R Cl
G1
,
u: Cl
u
+
v: Cl
v
∈
G1: Submodule R Cl
G1
:=

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, u: Cl
hu: u ∈ G1
v: Cl
hv: v ∈ G1

u + v ∈ G1
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 + v ∈ G1
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

βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = 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✝, w, u: Cl
hu: u ∈ G1
v: Cl
hv: v ∈ G1

βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = 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✝, w, u: Cl
hu: u ∈ G1
v: Cl
hv: v ∈ G1

βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = u + v

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, u: Cl
hu: u ∈ G1
v: Cl
hv: v ∈ G1

βˆƒ u', (CliffordAlgebra.ΞΉ Q) u' = 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✝, w, u: Cl
hu: βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = u
v: Cl
hv: v ∈ G1

βˆƒ u', (CliffordAlgebra.ΞΉ Q) u' = 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✝, w, u: Cl
hu: βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = u
v: Cl
hv: v ∈ G1

βˆƒ u', (CliffordAlgebra.ΞΉ Q) u' = 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✝, w, u: Cl
hu: βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = u
v: Cl
hv: v ∈ G1

βˆƒ u', (CliffordAlgebra.ΞΉ Q) u' = 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✝, w, u: Cl
hu: u ∈ G1
v: Cl
hv: v ∈ G1
u': M
hu': (CliffordAlgebra.ΞΉ Q) u' = u

intro
βˆƒ y, (CliffordAlgebra.ΞΉ Q) y = u + v

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, u: Cl
hu: u ∈ G1
v: Cl
hv: v ∈ G1
u': M
hu': (CliffordAlgebra.ΞΉ Q) u' = u

βˆƒ v', (CliffordAlgebra.ΞΉ Q) v' = 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✝, 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' = 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✝, 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' = 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✝, 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' = v

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, 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 + 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✝, 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 + 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✝, 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 + 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✝, 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 + 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✝, 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 + 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✝, 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
u + (CliffordAlgebra.ΞΉ Q) 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✝, 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
u + v = u + v

Goals accomplished! πŸ™

Goals accomplished! πŸ™
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) r
example
(
r: R
r
:
R: Type u_1
R
) (
u: M
u
:
M: Type u_2
M
) :
r: R
r
*
u: M
u
=
u: M
u
*
r: R
r
:
Cl: Type (max u_2 u_1)
Cl
:=

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) r
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

(CliffordAlgebra.ΞΉ Q) u * (algebraMap R Cl) r = (CliffordAlgebra.ΞΉ Q) u * (algebraMap R Cl) r

Goals accomplished! πŸ™
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) u
example
(
r: R
r
:
R: Type u_1
R
) (
u: M
u
:
M: Type u_2
M
) : βˆƒ
w: M
w
:
M: Type u_2
M
,
w: M
w
=
r: R
r
*
u: M
u
:
Cl: Type (max u_2 u_1)
Cl
:=

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) 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, w: Cl
r: R
u: M

h
(CliffordAlgebra.ΞΉ Q) (r β€’ u) = (algebraMap R Cl) r * (CliffordAlgebra.ΞΉ Q) 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, w: Cl
r: R
u: M

h
r β€’ (CliffordAlgebra.ΞΉ Q) u = (algebraMap R Cl) r * (CliffordAlgebra.ΞΉ Q) 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, w: Cl
r: R
u: M

h
(algebraMap R Cl) r * (CliffordAlgebra.ΞΉ Q) u = (algebraMap R Cl) r * (CliffordAlgebra.ΞΉ Q) 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, w: Cl
r: R
u: M

h
(CliffordAlgebra.ΞΉ Q) u * (algebraMap R Cl) r = (CliffordAlgebra.ΞΉ Q) u * (algebraMap R Cl) r

Goals accomplished! πŸ™

Axiom 4. The square of every vector is a scalar.

CliffordAlgebra.ΞΉ_sq_scalar.{u_2, u_1} {R : Type u_1} [CommRing R] {M : Type u_2} [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) (m : M) : (CliffordAlgebra.ΞΉ Q) m * (CliffordAlgebra.ΞΉ Q) m = (algebraMap R Cl) (Q m)
CliffordAlgebra.ΞΉ_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)
CliffordAlgebra.ΞΉ_sq_scalar
-- def square {Gn G: Type*} (m : Gn) : G -- | M.mk m => (ΞΉ m)^2 local notation
x: Lean.TSyntax `term
x
"Β²" => (
x: Lean.TSyntax `term
x
: Cl)^2 theorem
ΞΉ_sq_scalar: βˆ€ (m : M), (CliffordAlgebra.ΞΉ Q) m ^ 2 = (algebraMap R Cl) (Q m)
ΞΉ_sq_scalar
(
m: M
m
:
M: Type u_2
M
) :
m: M
m
Β² =
Q: QuadraticForm R M
Q
m: M
m
:
Cl: Type (max u_2 u_1)
Cl
:=

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
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
u, v, w: Cl
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
u, v, w: Cl
m: M

(algebraMap R Cl) (Q m) = (algebraMap R Cl) (Q m)

Goals accomplished! πŸ™

Goals accomplished! πŸ™
/-! Axiom 5. The inner product is nondegenerate. TODO: Wait to see if this is necessary and what's the weaker condition. -/

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.ΞΉ.{u_2, u_1} {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [Module R M] (Q : QuadraticForm R M) : M β†’β‚—[R] DirectSum (ZMod 2) fun i => β†₯(CliffordAlgebra.evenOdd Q i)
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.ΞΉ
CliffordAlgebra.GradedAlgebra.ΞΉ_apply.{u_2, u_1} {R : Type u_1} {M : Type u_2} [CommRing R] [AddCommGroup M] [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, β‹―βŸ©
CliffordAlgebra.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, β‹―βŸ©
CliffordAlgebra.GradedAlgebra.ΞΉ_apply
-- def 𝒒ᡣ (v : M) (i : β„•) := CliffordAlgebra.GradedAlgebra.ΞΉ Q v i
GradedAlgebra.proj.{u_3, u_2, u_1} {ΞΉ : Type u_1} {R : Type u_2} {A : Type u_3} [DecidableEq ΞΉ] [AddMonoid ΞΉ] [CommSemiring R] [Semiring A] [Algebra R A] (π’œ : ΞΉ β†’ Submodule R A) [GradedAlgebra π’œ] (i : ΞΉ) : A β†’β‚—[R] A
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
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 (
π’œ: β„• β†’ Submodule R Cl
π’œ
:
β„•: Type
β„•
β†’
Submodule: (R : Type u_1) β†’ (M : Type (max u_1 u_2)) β†’ [inst : Semiring R] β†’ [inst_1 : AddCommMonoid M] β†’ [inst : Module R M] β†’ Type (max u_1 u_2)
Submodule
R: Type u_1
R
(
CliffordAlgebra: {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)
CliffordAlgebra
Q: QuadraticForm R M
Q
)) def
𝒒ᡣ: {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 β†’ β„• β†’ Cl
𝒒ᡣ
(
mv: Cl
mv
:
CliffordAlgebra: {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)
CliffordAlgebra
Q: QuadraticForm R M
Q
) (
i: β„•
i
:
β„•: Type
β„•
) :
CliffordAlgebra: {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)
CliffordAlgebra
Q: QuadraticForm R M
Q
:=
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] A
GradedAlgebra.proj
(
CliffordAlgebra.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 Cl
CliffordAlgebra.evenOdd
Q: QuadraticForm R M
Q
)
i: β„•
i
mv: Cl
mv
List.{u} (Ξ± : Type u) : Type u
List: Type u β†’ Type u
List
-- (fun xs i => true) -- (CliffordAlgebra Q β†’ β„• β†’ Prop) instance
instGetElemByGradeCliffordAlgebra: GetElem Cl β„• Cl fun _mv i => ↑i < Module.rank R Cl
instGetElemByGradeCliffordAlgebra
:
GetElem: (coll : Type (max u_1 u_2)) β†’ (idx : Type) β†’ outParam (Type (max u_1 u_2)) β†’ outParam (coll β†’ idx β†’ Prop) β†’ Type (max u_1 u_2)
GetElem
(
CliffordAlgebra: {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)
CliffordAlgebra
Q: QuadraticForm R M
Q
)
β„•: Type
β„•
(
CliffordAlgebra: {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)
CliffordAlgebra
Q: QuadraticForm R M
Q
) (fun
_mv: Cl
_mv
i: β„•
i
=>
i: β„•
i
<
Module.rank: (R : Type u_1) β†’ (M : Type (max u_1 u_2)) β†’ [inst : Semiring R] β†’ [inst_1 : AddCommMonoid M] β†’ [inst : Module R M] β†’ Cardinal.{max u_1 u_2}
Module.rank
R: Type u_1
R
(
CliffordAlgebra: {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)
CliffordAlgebra
Q: QuadraticForm R M
Q
)) := { getElem := fun
mv: Cl
mv
i: β„•
i
_h: ↑i < Module.rank R Cl
_h
=>
𝒒ᡣ: {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 β†’ β„• β†’ Cl
𝒒ᡣ
mv: Cl
mv
i: β„•
i
}
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]
example
(
mv: Cl
mv
:
CliffordAlgebra: {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)
CliffordAlgebra
Q: QuadraticForm R M
Q
) (
i: β„•
i
:
β„•: Type
β„•
) (
h: ↑i < Module.rank R Cl
h
:
i: β„•
i
<
Module.rank: (R : Type u_1) β†’ (M : Type (max u_1 u_2)) β†’ [inst : Semiring R] β†’ [inst_1 : AddCommMonoid M] β†’ [inst : Module R M] β†’ Cardinal.{max u_1 u_2}
Module.rank
R: Type u_1
R
(
CliffordAlgebra: {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)
CliffordAlgebra
Q: QuadraticForm R M
Q
)) :
mv: Cl
mv
[
i: β„•
i
] =
mv: Cl
mv
[
i: β„•
i
] :=
rfl: βˆ€ {Ξ± : Type (max u_1 u_2)} {a : Ξ±}, a = a
rfl
CoeFun.{u, v} (Ξ± : Sort u) (Ξ³ : outParam (Ξ± β†’ Sort v)) : Sort (max (max 1 u) v)
CoeFun: (Ξ± : Sort u) β†’ outParam (Ξ± β†’ Sort v) β†’ Sort (max (max 1 u) v)
CoeFun
Module.Finite.{u_4, u_1} (R : Type u_1) (M : Type u_4) [Semiring R] [AddCommMonoid M] [Module R M] : Prop
Module.Finite: (R : Type u_1) β†’ (M : Type u_4) β†’ [inst : Semiring R] β†’ [inst_1 : AddCommMonoid M] β†’ [inst : Module R M] β†’ Prop
Module.Finite
Submodule.span.{u_4, u_1} (R : Type u_1) {M : Type u_4} [Semiring R] [AddCommMonoid M] [Module R M] (s : Set M) : Submodule R M
Submodule.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 M
Submodule.span
Module.rank R M : Cardinal.{u_2}
Module.rank: (R : Type u_1) β†’ (M : Type u_2) β†’ [inst : Semiring R] β†’ [inst_1 : AddCommMonoid M] β†’ [inst : Module R M] β†’ Cardinal.{u_2}
Module.rank
R: Type u_1
R
M: Type u_2
M
Module.rank R Cl : Cardinal.{max u_1 u_2}
Module.rank: (R : Type u_1) β†’ (M : Type (max u_1 u_2)) β†’ [inst : Semiring R] β†’ [inst_1 : AddCommMonoid M] β†’ [inst : Module R M] β†’ Cardinal.{max u_1 u_2}
Module.rank
R: Type u_1
R
(
CliffordAlgebra: {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)
CliffordAlgebra
Q: QuadraticForm R M
Q
)
Algebra.adjoin.{u, v} (R : Type u) {A : Type v} [CommSemiring R] [Semiring A] [Algebra R A] (s : Set A) : Subalgebra R A
Algebra.adjoin: (R : Type u) β†’ {A : Type v} β†’ [inst : CommSemiring R] β†’ [inst_1 : Semiring A] β†’ [inst_2 : Algebra R A] β†’ Set A β†’ Subalgebra R A
Algebra.adjoin
Subsemiring.closure.{u} {R : Type u} [NonAssocSemiring R] (s : Set R) : Subsemiring R
Subsemiring.closure: {R : Type u} β†’ [inst : NonAssocSemiring R] β†’ Set R β†’ Subsemiring R
Subsemiring.closure
Algebra.adjoin_eq.{uR, uA} {R : Type uR} {A : Type uA} [CommSemiring R] [Semiring A] [Algebra R A] (S : Subalgebra R A) : Algebra.adjoin R ↑S = S
Algebra.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 = S
Algebra.adjoin_eq
Algebra.adjoin_eq_range_freeAlgebra_lift.{u_3, u_1} (R : Type u_1) [CommSemiring R] {A : Type u_3} [Semiring A] [Algebra R A] (s : Set A) : Algebra.adjoin R s = ((FreeAlgebra.lift R) Subtype.val).range
Algebra.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).range
Algebra.adjoin_eq_range_freeAlgebra_lift
example: βˆ€ (c : β„‚), c = c
example
(
c: β„‚
c
:
β„‚: Type
β„‚
) :
c: β„‚
c
=
c: β„‚
c
:=
rfl: βˆ€ {Ξ± : Type} {a : Ξ±}, a = a
rfl
CliffordAlgebraComplex.ofComplex : β„‚ →ₐ[ℝ] CliffordAlgebra CliffordAlgebraComplex.Q
CliffordAlgebraComplex.ofComplex: β„‚ →ₐ[ℝ] CliffordAlgebra CliffordAlgebraComplex.Q
CliffordAlgebraComplex.ofComplex
Module.rank ℝ (CliffordAlgebra CliffordAlgebraComplex.Q) : Cardinal.{0}
Module.rank: (R M : Type) β†’ [inst : Semiring R] β†’ [inst_1 : AddCommMonoid M] β†’ [inst : Module R M] β†’ Cardinal.{0}
Module.rank
ℝ: Type
ℝ
(
CliffordAlgebra: {R : Type} β†’ [inst : CommRing R] β†’ {M : Type} β†’ [inst_1 : AddCommGroup M] β†’ [inst_2 : Module R M] β†’ QuadraticForm R M β†’ Type
CliffordAlgebra
CliffordAlgebraComplex.Q: QuadraticForm ℝ ℝ
CliffordAlgebraComplex.Q
)
example: Cardinal.mk ℝ = Cardinal.continuum
example
:
Cardinal.mk: Type β†’ Cardinal.{0}
Cardinal.mk
ℝ: Type
ℝ
=
Cardinal.continuum: Cardinal.{0}
Cardinal.continuum
:=

Goals accomplished! πŸ™

Goals accomplished! πŸ™
example: Module.rank ℝ ℝ = 1
example
:
Module.rank: (R M : Type) β†’ [inst : Semiring R] β†’ [inst_1 : AddCommMonoid M] β†’ [inst : Module R M] β†’ Cardinal.{0}
Module.rank
ℝ: Type
ℝ
ℝ: Type
ℝ
=
1: Cardinal.{0}
1
:=

Goals accomplished! πŸ™

Goals accomplished! πŸ™
example: Module.rank ℝ β„‚ = 2
example
:
Module.rank: (R M : Type) β†’ [inst : Semiring R] β†’ [inst_1 : AddCommMonoid M] β†’ [inst : Module R M] β†’ Cardinal.{0}
Module.rank
ℝ: Type
ℝ
β„‚: Type
β„‚
=
2: Cardinal.{0}
2
:=

Goals accomplished! πŸ™

Goals accomplished! πŸ™
RingHom.Finite.{u_2, u_1} {A : Type u_1} {B : Type u_2} [CommRing A] [CommRing B] (f : A β†’+* B) : Prop
RingHom.Finite: {A : Type u_1} β†’ {B : Type u_2} β†’ [inst : CommRing A] β†’ [inst_1 : CommRing B] β†’ (A β†’+* B) β†’ Prop
RingHom.Finite
-- local instance : Module.Finite ℝ β„‚ := by -- apply Complex.finite_real_complex -- instance instFiniteCliffordAlgebraComplex : Module.Finite ℝ (CliffordAlgebra CliffordAlgebraComplex.Q) := sorry noncomputable def
basisOneI: Basis (Fin 2) ℝ (CliffordAlgebra CliffordAlgebraComplex.Q)
basisOneI
:
Basis: Type β†’ (R M : Type) β†’ [inst : Semiring R] β†’ [inst_1 : AddCommMonoid M] β†’ [inst : Module R M] β†’ Type
Basis
(
Fin: β„• β†’ Type
Fin
2: β„•
2
)
ℝ: Type
ℝ
(
CliffordAlgebra: {R : Type} β†’ [inst : CommRing R] β†’ {M : Type} β†’ [inst_1 : AddCommGroup M] β†’ [inst_2 : Module R M] β†’ QuadraticForm R M β†’ Type
CliffordAlgebra
CliffordAlgebraComplex.Q: QuadraticForm ℝ ℝ
CliffordAlgebraComplex.Q
) :=
Basis.ofEquivFun: {ΞΉ R M : Type} β†’ [inst : Semiring R] β†’ [inst_1 : AddCommMonoid M] β†’ [inst_2 : Module R M] β†’ [inst_3 : Finite ΞΉ] β†’ (M ≃ₗ[R] ΞΉ β†’ R) β†’ Basis ΞΉ R M
Basis.ofEquivFun
{ toFun := fun
mv: CliffordAlgebra CliffordAlgebraComplex.Q
mv
=> let
z: β„‚
z
:=
CliffordAlgebraComplex.toComplex: CliffordAlgebra CliffordAlgebraComplex.Q →ₐ[ℝ] β„‚
CliffordAlgebraComplex.toComplex
mv: CliffordAlgebra CliffordAlgebraComplex.Q
mv
![
z: β„‚
z
.
re: β„‚ β†’ ℝ
re
,
z: β„‚
z
.
im: β„‚ β†’ ℝ
im
] invFun := fun
c: Fin 2 β†’ ℝ
c
=>
CliffordAlgebraComplex.ofComplex: β„‚ →ₐ[ℝ] CliffordAlgebra CliffordAlgebraComplex.Q
CliffordAlgebraComplex.ofComplex
(
c: Fin 2 β†’ ℝ
c
0: Fin 2
0
+
c: Fin 2 β†’ ℝ
c
1: Fin 2
1
β€’
Complex.I: β„‚
Complex.I
) left_inv := fun
z: CliffordAlgebra CliffordAlgebraComplex.Q
z
=>

Goals accomplished! πŸ™

Goals accomplished! πŸ™
right_inv := fun
c: Fin 2 β†’ ℝ
c
=>

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 i
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, β‹―βŸ©
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, β‹―βŸ©

Goals accomplished! πŸ™
map_add' := fun
z: CliffordAlgebra CliffordAlgebraComplex.Q
z
z': CliffordAlgebra CliffordAlgebraComplex.Q
z'
=>

Goals accomplished! πŸ™

Goals accomplished! πŸ™
map_smul' := fun
c: ℝ
c
z: CliffordAlgebra CliffordAlgebraComplex.Q
z
=>

Goals accomplished! πŸ™

Goals accomplished! πŸ™
}
example: finrank ℝ (CliffordAlgebra CliffordAlgebraComplex.Q) = 2
example
:
finrank: (R M : Type) β†’ [inst : Semiring R] β†’ [inst_1 : AddCommGroup M] β†’ [inst : Module R M] β†’ β„•
finrank
ℝ: Type
ℝ
(
CliffordAlgebra: {R : Type} β†’ [inst : CommRing R] β†’ {M : Type} β†’ [inst_1 : AddCommGroup M] β†’ [inst_2 : Module R M] β†’ QuadraticForm R M β†’ Type
CliffordAlgebra
CliffordAlgebraComplex.Q: QuadraticForm ℝ ℝ
CliffordAlgebraComplex.Q
) =
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 Cl

finrank ℝ (CliffordAlgebra CliffordAlgebraComplex.Q) = 2
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

Fintype.card (Fin 2) = 2
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

2 = 2

Goals accomplished! πŸ™

Goals accomplished! πŸ™
CliffordAlgebraComplex.equiv : CliffordAlgebra CliffordAlgebraComplex.Q ≃ₐ[ℝ] β„‚
CliffordAlgebraComplex.equiv: CliffordAlgebra CliffordAlgebraComplex.Q ≃ₐ[ℝ] β„‚
CliffordAlgebraComplex.equiv
universe uA
AlgEquiv.toLinearEquiv_refl.{uR, uA₁} {R : Type uR} {A₁ : Type uA₁} [CommSemiring R] [Semiring A₁] [Algebra R A₁] : AlgEquiv.refl.toLinearEquiv = LinearEquiv.refl R A₁
AlgEquiv.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₁
AlgEquiv.toLinearEquiv_refl
FiniteDimensional.nonempty_linearEquiv_iff_finrank_eq.{u, v, v'} {R : Type u} {M : Type v} {M' : Type v'} [Ring R] [StrongRankCondition R] [AddCommGroup M] [Module R M] [Module.Free R M] [AddCommGroup M'] [Module R M'] [Module.Free R M'] [Module.Finite R M] [Module.Finite R M'] : Nonempty (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'
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β‚‚ -/
LinearEquiv.finrank_eq.{u_3, u_2, u_1} {R : Type u_1} {M : Type u_2} {Mβ‚‚ : Type u_3} [Ring R] [AddCommGroup M] [AddCommGroup Mβ‚‚] [Module R M] [Module R Mβ‚‚] (f : M ≃ₗ[R] Mβ‚‚) : finrank R M = finrank R Mβ‚‚
LinearEquiv.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β‚‚
LinearEquiv.finrank_eq
CommRing.{u} (Ξ± : Type u) : Type u
CommRing: Type u β†’ Type u
CommRing
local notation "Clβ„‚" => CliffordAlgebra CliffordAlgebraComplex.Q lemma
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 B
finrank_eq
(
R: Type uR
R
:
Type uR: Type (uR + 1)
Type uR
) (
A: Type uA
A
B: Type uA
B
:
Type uA: Type (uA + 1)
Type uA
) [
CommRing: Type uR β†’ Type uR
CommRing
R: Type uR
R
] [
Ring: Type uA β†’ Type uA
Ring
A: Type uA
A
] [
Ring: Type uA β†’ Type uA
Ring
B: Type uA
B
] [
Algebra: (R : Type uR) β†’ (A : Type uA) β†’ [inst : CommSemiring R] β†’ [inst : Semiring A] β†’ Type (max uR uA)
Algebra
R: Type uR
R
A: Type uA
A
] [
Algebra: (R : Type uR) β†’ (A : Type uA) β†’ [inst : CommSemiring R] β†’ [inst : Semiring A] β†’ Type (max uR uA)
Algebra
R: Type uR
R
B: Type uA
B
] : (
A: Type uA
A
≃ₐ[
R: Type uR
R
]
B: Type uA
B
) β†’
finrank: (R : Type uR) β†’ (M : Type uA) β†’ [inst : Semiring R] β†’ [inst_1 : AddCommGroup M] β†’ [inst : Module R M] β†’ β„•
finrank
R: Type uR
R
A: Type uA
A
=
finrank: (R : Type uR) β†’ (M : Type uA) β†’ [inst : Semiring R] β†’ [inst_1 : AddCommGroup M] β†’ [inst : Module R M] β†’ β„•
finrank
R: Type uR
R
B: Type uA
B
:= fun
ha: A ≃ₐ[R] B
ha
=>
LinearEquiv.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β‚‚
LinearEquiv.finrank_eq
ha: A ≃ₐ[R] B
ha
.
toLinearEquiv: {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β‚‚
toLinearEquiv
-- done
example: finrank ℝ Clβ„‚ = finrank ℝ β„‚
example
:
finrank: (R M : Type) β†’ [inst : Semiring R] β†’ [inst_1 : AddCommGroup M] β†’ [inst : Module R M] β†’ β„•
finrank
ℝ: Type
ℝ
Clβ„‚: Type
Clβ„‚
=
finrank: (R M : Type) β†’ [inst : Semiring R] β†’ [inst_1 : AddCommGroup M] β†’ [inst : Module R M] β†’ β„•
finrank
ℝ: Type
ℝ
β„‚: Type
β„‚
:=

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

finrank ℝ 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 Cl

finrank ℝ β„‚ = finrank ℝ β„‚

Goals accomplished! πŸ™
example: finrank ℝ Clβ„‚ = finrank ℝ β„‚
example
:
finrank: (R M : Type) β†’ [inst : Semiring R] β†’ [inst_1 : AddCommGroup M] β†’ [inst : Module R M] β†’ β„•
finrank
ℝ: Type
ℝ
Clβ„‚: Type
Clβ„‚
=
finrank: (R M : Type) β†’ [inst : Semiring R] β†’ [inst_1 : AddCommGroup M] β†’ [inst : Module R M] β†’ β„•
finrank
ℝ: Type
ℝ
β„‚: Type
β„‚
:=
LinearEquiv.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β‚‚
LinearEquiv.finrank_eq
CliffordAlgebraComplex.equiv: Clβ„‚ ≃ₐ[ℝ] β„‚
CliffordAlgebraComplex.equiv
.
toLinearEquiv: {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β‚‚
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) := sorry
DirectSum.GradeZero.module.{u_2, u_1} {ΞΉ : Type u_1} [DecidableEq ΞΉ] (A : ΞΉ β†’ Type u_2) [(i : ΞΉ) β†’ AddCommMonoid (A i)] [AddMonoid ΞΉ] [DirectSum.GSemiring A] {i : ΞΉ} : Module (A 0) (A i)
DirectSum.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.GradeZero.module
DirectSum.decomposeRingEquiv (CliffordAlgebra.evenOdd Q) : Cl ≃+* DirectSum (ZMod 2) fun i => β†₯(CliffordAlgebra.evenOdd Q i)
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)
DirectSum.decomposeRingEquiv
(
CliffordAlgebra.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 Cl
CliffordAlgebra.evenOdd
Q: QuadraticForm R M
Q
)
DirectSum.decomposeAlgEquiv (CliffordAlgebra.evenOdd Q) : Cl ≃ₐ[R] DirectSum (ZMod 2) fun i => β†₯(CliffordAlgebra.evenOdd Q i)
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)
DirectSum.decomposeAlgEquiv
(
CliffordAlgebra.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 Cl
CliffordAlgebra.evenOdd
Q: QuadraticForm R M
Q
)
LinearEquiv.ofFinrankEq.{u, v, v'} {R : Type u} (M : Type v) (M' : Type v') [Ring R] [StrongRankCondition R] [AddCommGroup M] [Module R M] [Module.Free R M] [AddCommGroup M'] [Module R M'] [Module.Free R M'] [Module.Finite R M] [Module.Finite R M'] (cond : finrank R M = finrank R M') : M ≃ₗ[R] M'
LinearEquiv.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'
LinearEquiv.ofFinrankEq
open DirectSum local notation "Cl₀₁" => CliffordAlgebra.evenOdd Q -- def Cl₀₁ (i : ZMod 2) : Submodule R Cl := CliffordAlgebra.evenOdd Q i
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)
example
:
Cl: Type (max u_2 u_1)
Cl
≃+* ⨁ (
i: ZMod 2
i
:
ZMod: β„• β†’ Type
ZMod
2: β„•
2
),
Cl₀₁: ZMod 2 β†’ Submodule R Cl
Cl₀₁
i: ZMod 2
i
:=

Goals accomplished! πŸ™

Goals accomplished! πŸ™

Goals accomplished! πŸ™
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)
example
:
Cl: Type (max u_2 u_1)
Cl
≃ₐ[
R: Type u_1
R
] ⨁ (
i: ZMod 2
i
:
ZMod: β„• β†’ Type
ZMod
2: β„•
2
),
Cl₀₁: ZMod 2 β†’ Submodule R Cl
Cl₀₁
i: ZMod 2
i
:=

Goals accomplished! πŸ™

Goals accomplished! πŸ™

Goals accomplished! πŸ™
variable (
i: ZMod 2
i
:
ZMod: β„• β†’ Type
ZMod
2: β„•
2
)
Cl₀₁ i : Submodule R Cl
CliffordAlgebra.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 Cl
CliffordAlgebra.evenOdd
Q: QuadraticForm R M
Q
i: ZMod 2
i
FiniteDimensional.finrank_directSum.{u, v, w} (R : Type u) [Ring R] [StrongRankCondition R] {ΞΉ : Type v} [Fintype ΞΉ] (M : ΞΉ β†’ Type w) [(i : ΞΉ) β†’ AddCommGroup (M i)] [(i : ΞΉ) β†’ Module R (M i)] [βˆ€ (i : ΞΉ), Module.Free R (M i)] [βˆ€ (i : ΞΉ), Module.Finite R (M i)] : finrank R (⨁ (i : ΞΉ), M i) = Finset.univ.sum fun i => finrank R (M i)
finrank_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) = Finset.univ.sum fun i => finrank R (M i)
finrank_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 -- done