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.Contraction
import Mathlib.LinearAlgebra.ExteriorAlgebra.Grading
set_option pp.proofs.withType false
variable { R M } [ CommRing : Type ?u.4 β Type ?u.4
CommRing R ] [ Invertible : {Ξ± : Type ?u.4} β [Mul Ξ±] β [One Ξ±] β Ξ± β Type ?u.4
Invertible ( 2 : R )] [ AddCommGroup : Type u_2 β Type u_2
AddCommGroup M ] [ Module : (R : Type ?u.4) β (M : Type ?u.10) β [Semiring R] β [AddCommMonoid M] β Type (max ?u.4 ?u.10)
Module R M ] ( Q : QuadraticForm : (R : Type u_1) β
(M : Type u_2) β [inst : CommSemiring R] β [inst_1 : AddCommMonoid M] β [Module R M] β Type (max u_1 u_2)
QuadraticForm R M )
abbrev ExteriorAlgebra.rMultivector : {R : Type u_1} β
{M : Type u_2} β
[inst : CommRing R] β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β β β Submodule R (ExteriorAlgebra R M)
ExteriorAlgebra.rMultivector ( r : β ) : Submodule : (R : Type u_1) β
(M : Type (max u_2 u_1)) β [inst : Semiring R] β [inst_1 : AddCommMonoid M] β [Module R M] β Type (max u_2 u_1)
Submodule R ( ExteriorAlgebra : (R : Type u_1) β [inst : CommRing R] β (M : Type u_2) β [inst_1 : AddCommGroup M] β [Module R M] β Type (max u_1 u_2)
ExteriorAlgebra R M ) :=
( LinearMap.range : {R Rβ : Type u_1} β
{M : Type u_2} β
{Mβ : Type (max u_1 u_2)} β
[inst : Semiring R] β
[inst_1 : Semiring Rβ] β
[inst_2 : AddCommMonoid M] β
[inst_3 : AddCommMonoid Mβ] β
[inst_4 : Module R M] β
[inst_5 : Module Rβ Mβ] β {Οββ : R β+* Rβ} β [RingHomSurjective Οββ] β (M βββ[Οββ] Mβ) β Submodule Rβ Mβ
LinearMap.range ( ExteriorAlgebra.ΞΉ : (R : Type u_1) β
[inst : CommRing R] β {M : Type u_2} β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β M ββ[R] ExteriorAlgebra R M
ExteriorAlgebra.ΞΉ R : M ββ [ R ] _ ) ^ r )
-- def ExteriorAlgebra.proj (mv : ExteriorAlgebra R M) (r : β) : ExteriorAlgebra R M :=
-- @GradedAlgebra.proj β R (ExteriorAlgebra R M) _ _ _ _ _ ExteriorAlgebra.rMultivector _ r mv
-- def ExteriorAlgebra.proj' (mv : ExteriorAlgebra R M) (r : β) : ExteriorAlgebra R M :=
-- GradedAlgebra.proj ExteriorAlgebra.rMultivector r mv
namespace CliffordAlgebra
abbrev rMultivector : {R : Type u_1} β
{M : Type u_2} β
[inst : CommRing R] β
[Invertible 2] β
[inst_2 : AddCommGroup M] β
[inst_3 : Module R M] β (Q : QuadraticForm R M) β β β Submodule R (CliffordAlgebra Q)
rMultivector ( r : β ) : Submodule : (R : Type u_1) β
(M : Type (max u_2 u_1)) β [inst : Semiring R] β [inst_1 : AddCommMonoid M] β [Module R M] β Type (max u_2 u_1)
Submodule 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_1 u_2)
CliffordAlgebra Q ) :=
( ExteriorAlgebra.rMultivector : {R : Type u_1} β
{M : Type u_2} β
[inst : CommRing R] β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β β β Submodule R (ExteriorAlgebra R M)
ExteriorAlgebra.rMultivector r ). comap : {R Rβ : Type u_1} β
{M Mβ : Type (max u_1 u_2)} β
[inst : Semiring R] β
[inst_1 : Semiring Rβ] β
[inst_2 : AddCommMonoid M] β
[inst_3 : AddCommMonoid Mβ] β
[inst_4 : Module R M] β
[inst_5 : Module Rβ Mβ] β {Οββ : R β+* Rβ} β (M βββ[Οββ] Mβ) β Submodule Rβ Mβ β Submodule R M
comap ( CliffordAlgebra.equivExterior : {R : Type u_1} β
[inst : CommRing R] β
{M : Type u_2} β
[inst_1 : AddCommGroup M] β
[inst_2 : Module R M] β (Q : QuadraticForm R M) β [Invertible 2] β CliffordAlgebra Q ββ[R] ExteriorAlgebra R M
CliffordAlgebra.equivExterior Q ). toLinearMap : {R S : Type u_1} β
[inst : Semiring R] β
[inst_1 : Semiring S] β
{Ο : R β+* S} β
{Ο' : S β+* R} β
[inst_2 : RingHomInvPair Ο Ο'] β
[inst_3 : RingHomInvPair Ο' Ο] β
{M Mβ : Type (max u_1 u_2)} β
[inst_4 : AddCommMonoid M] β
[inst_5 : AddCommMonoid Mβ] β
[inst_6 : Module R M] β [inst_7 : Module S Mβ] β (M βββ[Ο] Mβ) β M βββ[Ο] Mβ
toLinearMap
abbrev ofGrade : {r : β} β β₯(rMultivector Q r) β CliffordAlgebra Q
ofGrade { r : β } ( mv : β₯(rMultivector Q r)
mv : rMultivector : {R : Type u_1} β
{M : Type u_2} β
[inst : CommRing R] β
[Invertible 2] β
[inst_2 : AddCommGroup M] β
[inst_3 : Module R M] β (Q : QuadraticForm R M) β β β Submodule R (CliffordAlgebra Q)
rMultivector Q 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_1 u_2)
CliffordAlgebra Q := mv : β₯(rMultivector Q r)
mv
variable {Q} in
def wedge : CliffordAlgebra Q β CliffordAlgebra Q β CliffordAlgebra Q
wedge ( a b : 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_1 u_2)
CliffordAlgebra Q ) : 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_1 u_2)
CliffordAlgebra Q :=
( equivExterior : {R : Type u_1} β
[inst : CommRing R] β
{M : Type u_2} β
[inst_1 : AddCommGroup M] β
[inst_2 : Module R M] β (Q : QuadraticForm R M) β [Invertible 2] β CliffordAlgebra Q ββ[R] ExteriorAlgebra R M
equivExterior Q ). symm : {R S : Type u_1} β
{M Mβ : Type (max u_1 u_2)} β
[inst : Semiring R] β
[inst_1 : Semiring S] β
[inst_2 : AddCommMonoid M] β
[inst_3 : AddCommMonoid Mβ] β
{module_M : Module R M} β
{module_S_Mβ : Module S Mβ} β
{Ο : R β+* S} β
{Ο' : S β+* R} β
{reβ : RingHomInvPair Ο Ο'} β {reβ : RingHomInvPair Ο' Ο} β (M βββ[Ο] Mβ) β Mβ βββ[Ο'] M
symm ( equivExterior : {R : Type u_1} β
[inst : CommRing R] β
{M : Type u_2} β
[inst_1 : AddCommGroup M] β
[inst_2 : Module R M] β (Q : QuadraticForm R M) β [Invertible 2] β CliffordAlgebra Q ββ[R] ExteriorAlgebra R M
equivExterior Q a * equivExterior : {R : Type u_1} β
[inst : CommRing R] β
{M : Type u_2} β
[inst_1 : AddCommGroup M] β
[inst_2 : Module R M] β (Q : QuadraticForm R M) β [Invertible 2] β CliffordAlgebra Q ββ[R] ExteriorAlgebra R M
equivExterior Q b )
infix :65 " β " => wedge : {R : Type u_1} β
{M : Type u_2} β
[inst : CommRing R] β
[Invertible 2] β
[inst_2 : AddCommGroup M] β
[inst_3 : Module R M] β {Q : QuadraticForm R M} β CliffordAlgebra Q β CliffordAlgebra Q β CliffordAlgebra Q
wedge
variable ( r : β ) ( mv : CliffordAlgebra : {R : Type ?u.4} β
[inst : CommRing R] β
{M : Type ?u.10} β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β QuadraticForm R M β Type (max ?u.4 ?u.10)
CliffordAlgebra Q ) in
#check (equivExterior Q) mv : ExteriorAlgebra R M equivExterior : {R : Type u_1} β
[inst : CommRing R] β
{M : Type u_2} β
[inst_1 : AddCommGroup M] β
[inst_2 : Module R M] β (Q : QuadraticForm R M) β [Invertible 2] β CliffordAlgebra Q ββ[R] ExteriorAlgebra R M
equivExterior Q mv
-- def proj (mv : CliffordAlgebra Q) (i : β) : CliffordAlgebra Q := (equivExterior Q).symm ((equivExterior Q mv).proj i)
-- #check proj
theorem wedge_mv_mem : β {R : Type u_1} {M : Type u_2} [inst : CommRing R] [inst_1 : Invertible 2] [inst_2 : AddCommGroup M]
[inst_3 : Module R M] (Q : QuadraticForm R M) {ra rb : β} (a : β₯(rMultivector Q ra)) (b : β₯(rMultivector Q rb)),
βa β βb β rMultivector Q (ra + rb)
wedge_mv_mem { ra rb } ( a : β₯(rMultivector Q ra)
a : rMultivector : {R : Type u_1} β
{M : Type u_2} β
[inst : CommRing R] β
[Invertible 2] β
[inst_2 : AddCommGroup M] β
[inst_3 : Module R M] β (Q : QuadraticForm R M) β β β Submodule R (CliffordAlgebra Q)
rMultivector Q ra ) ( b : β₯(rMultivector Q rb)
b : rMultivector : {R : Type u_1} β
{M : Type u_2} β
[inst : CommRing R] β
[Invertible 2] β
[inst_2 : AddCommGroup M] β
[inst_3 : Module R M] β (Q : QuadraticForm R M) β β β Submodule R (CliffordAlgebra Q)
rMultivector Q rb ) :
a : β₯(rMultivector Q ra)
a β b : β₯(rMultivector Q rb)
b β rMultivector : {R : Type u_1} β
{M : Type u_2} β
[inst : CommRing R] β
[Invertible 2] β
[inst_2 : AddCommGroup M] β
[inst_3 : Module R M] β (Q : QuadraticForm R M) β β β Submodule R (CliffordAlgebra Q)
rMultivector Q ( ra + rb ) := by
obtain β¨a, haβ© : β₯(rMultivector Q ra)
β¨a β¨a, haβ© : β₯(rMultivector Q ra)
, ha : a β rMultivector Q ra
ha β¨a, haβ© : β₯(rMultivector Q ra)
β© := a : β₯(rMultivector Q ra)
a R : Type u_1M : Type u_2instβΒ³ : CommRing R instβΒ² : Invertible 2 instβΒΉ : AddCommGroup M instβ : Module R M Q : QuadraticForm R M ra, rb : β b : β₯ (rMultivector Q rb)a : CliffordAlgebra Q ha : a β rMultivector Q ra
β β¨a, haβ© β β b β rMultivector Q (ra + rb)
obtain β¨b, hbβ© : β₯(rMultivector Q rb)
β¨b β¨b, hbβ© : β₯(rMultivector Q rb)
, hb : b β rMultivector Q rb
hb β¨b, hbβ© : β₯(rMultivector Q rb)
β© := b : β₯(rMultivector Q rb)
b R : Type u_1M : Type u_2instβΒ³ : CommRing R instβΒ² : Invertible 2 instβΒΉ : AddCommGroup M instβ : Module R M Q : QuadraticForm R M ra, rb : β a : CliffordAlgebra Q ha : a β rMultivector Q ra b : CliffordAlgebra Q hb : b β rMultivector Q rb
β β¨a, haβ© β β β¨b, hbβ© β rMultivector Q (ra + rb)
simp only [ wedge : {R : Type ?u.40} β
{M : Type ?u.39} β
[inst : CommRing R] β
[Invertible 2] β
[inst_2 : AddCommGroup M] β
[inst_3 : Module R M] β {Q : QuadraticForm R M} β CliffordAlgebra Q β CliffordAlgebra Q β CliffordAlgebra Q
wedge, rMultivector : {R : Type ?u.50} β
{M : Type ?u.49} β
[inst : CommRing R] β
[Invertible 2] β
[inst_2 : AddCommGroup M] β
[inst_3 : Module R M] β (Q : QuadraticForm R M) β β β Submodule R (CliffordAlgebra Q)
rMultivector, Submodule.mem_comap : β {R : Type ?u.54} {Rβ : Type ?u.53} {M : Type ?u.52} {Mβ : Type ?u.51} [inst : Semiring R] [inst_1 : Semiring Rβ]
[inst_2 : AddCommMonoid M] [inst_3 : AddCommMonoid Mβ] [inst_4 : Module R M] [inst_5 : Module Rβ Mβ] {Οββ : R β+* Rβ}
{x : M} {f : M βββ[Οββ] Mβ} {p : Submodule Rβ Mβ}, x β Submodule.comap f p β f x β p
Submodule.mem_comap] at * R : Type u_1M : Type u_2instβΒ³ : CommRing R instβΒ² : Invertible 2 instβΒΉ : AddCommGroup M instβ : Module R M Q : QuadraticForm R M ra, rb : β a : CliffordAlgebra Q ha : a β rMultivector Q ra b : CliffordAlgebra Q hb : b β rMultivector Q rb
β (equivExterior Q) ((equivExterior Q). symm ((equivExterior Q) a * (equivExterior Q) b)) β
ExteriorAlgebra.rMultivector (ra + rb)
-- v4.32: the semilinear `LinearEquiv` coercion needs an explicit `change` before
-- `apply_symm_apply` can fire
change ( equivExterior : {R : Type u_1} β
[inst : CommRing R] β
{M : Type u_2} β
[inst_1 : AddCommGroup M] β
[inst_2 : Module R M] β (Q : QuadraticForm R M) β [Invertible 2] β CliffordAlgebra Q ββ[R] ExteriorAlgebra R M
equivExterior Q ) (( equivExterior : {R : Type u_1} β
[inst : CommRing R] β
{M : Type u_2} β
[inst_1 : AddCommGroup M] β
[inst_2 : Module R M] β (Q : QuadraticForm R M) β [Invertible 2] β CliffordAlgebra Q ββ[R] ExteriorAlgebra R M
equivExterior Q ). symm : {R S : Type u_1} β
{M Mβ : Type (max u_1 u_2)} β
[inst : Semiring R] β
[inst_1 : Semiring S] β
[inst_2 : AddCommMonoid M] β
[inst_3 : AddCommMonoid Mβ] β
{module_M : Module R M} β
{module_S_Mβ : Module S Mβ} β
{Ο : R β+* S} β
{Ο' : S β+* R} β
{reβ : RingHomInvPair Ο Ο'} β {reβ : RingHomInvPair Ο' Ο} β (M βββ[Ο] Mβ) β Mβ βββ[Ο'] M
symm (( equivExterior : {R : Type u_1} β
[inst : CommRing R] β
{M : Type u_2} β
[inst_1 : AddCommGroup M] β
[inst_2 : Module R M] β (Q : QuadraticForm R M) β [Invertible 2] β CliffordAlgebra Q ββ[R] ExteriorAlgebra R M
equivExterior Q ) a * ( equivExterior : {R : Type u_1} β
[inst : CommRing R] β
{M : Type u_2} β
[inst_1 : AddCommGroup M] β
[inst_2 : Module R M] β (Q : QuadraticForm R M) β [Invertible 2] β CliffordAlgebra Q ββ[R] ExteriorAlgebra R M
equivExterior Q ) b )) β
ExteriorAlgebra.rMultivector : {R : Type u_1} β
{M : Type u_2} β
[inst : CommRing R] β [inst_1 : AddCommGroup M] β [inst_2 : Module R M] β β β Submodule R (ExteriorAlgebra R M)
ExteriorAlgebra.rMultivector ( ra + rb ) R : Type u_1M : Type u_2instβΒ³ : CommRing R instβΒ² : Invertible 2 instβΒΉ : AddCommGroup M instβ : Module R M Q : QuadraticForm R M ra, rb : β a : CliffordAlgebra Q ha : a β rMultivector Q ra b : CliffordAlgebra Q hb : b β rMultivector Q rb
(equivExterior Q) ((equivExterior Q). symm ((equivExterior Q) a * (equivExterior Q) b)) β
ExteriorAlgebra.rMultivector (ra + rb)
rw [ R : Type u_1M : Type u_2instβΒ³ : CommRing R instβΒ² : Invertible 2 instβΒΉ : AddCommGroup M instβ : Module R M Q : QuadraticForm R M ra, rb : β a : CliffordAlgebra Q ha : a β rMultivector Q ra b : CliffordAlgebra Q hb : b β rMultivector Q rb
(equivExterior Q) ((equivExterior Q). symm ((equivExterior Q) a * (equivExterior Q) b)) β
ExteriorAlgebra.rMultivector (ra + rb)
LinearEquiv.apply_symm_apply : β {R S : Type u_1} {M Mβ : Type (max u_1 u_2)} [inst : Semiring R] [inst_1 : Semiring S] [inst_2 : AddCommMonoid M]
[inst_3 : AddCommMonoid Mβ] {module_M : Module R M} {module_S_Mβ : Module S Mβ} {Ο : R β+* S} {Ο' : S β+* R}
{reβ : RingHomInvPair Ο Ο'} {reβ : RingHomInvPair Ο' Ο} (e : M βββ[Ο] Mβ) (c : Mβ), e (e.symm c) = c
LinearEquiv.apply_symm_applyR : Type u_1M : Type u_2instβΒ³ : CommRing R instβΒ² : Invertible 2 instβΒΉ : AddCommGroup M instβ : Module R M Q : QuadraticForm R M ra, rb : β a : CliffordAlgebra Q ha : a β rMultivector Q ra b : CliffordAlgebra Q hb : b β rMultivector Q rb
(equivExterior Q) a * (equivExterior Q) b β ExteriorAlgebra.rMultivector (ra + rb)
] R : Type u_1M : Type u_2instβΒ³ : CommRing R instβΒ² : Invertible 2 instβΒΉ : AddCommGroup M instβ : Module R M Q : QuadraticForm R M ra, rb : β a : CliffordAlgebra Q ha : a β rMultivector Q ra b : CliffordAlgebra Q hb : b β rMultivector Q rb
(equivExterior Q) a * (equivExterior Q) b β ExteriorAlgebra.rMultivector (ra + rb)
exact SetLike.mul_mem_graded : β {ΞΉ : Type} {R S : Type (max u_1 u_2)} [inst : SetLike S R] [inst_1 : Mul R] [inst_2 : Add ΞΉ] {A : ΞΉ β S}
[SetLike.GradedMul A] β¦i j : ΞΉβ¦ {gi gj : R}, gi β A i β gj β A j β gi * gj β A (i + j)
SetLike.mul_mem_graded ha : a β rMultivector Q ra
ha hb : b β rMultivector Q rb
hb
-- lemma outer_homo {i j} (u : rMultivector Q i) (v : rMultivector Q j) :
-- u β v = proj Q (u * v) (i + j) := sorry
end CliffordAlgebra