Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
192 commits
Select commit Hold shift + click to select a range
d3e9748
feat: Create LeftHanded.lean
jstoobysmith Jul 9, 2026
9323e93
feat: Create DualLeftHanded.lean
jstoobysmith Jul 9, 2026
21e4c48
feat: Create RightHanded.lean
jstoobysmith Jul 9, 2026
d15f09d
feat: Create DualRightHanded.lean
jstoobysmith Jul 9, 2026
6557ded
fix: Documentation
jstoobysmith Jul 9, 2026
cb9e25f
docs: Add reference
jstoobysmith Jul 9, 2026
1e17593
feat: Create Duals.lean
jstoobysmith Jul 9, 2026
852e420
feat: Delete now empty files
jstoobysmith Jul 9, 2026
6a299a8
feat: Move auxillary files
jstoobysmith Jul 9, 2026
c9c1002
feat: Update imports
jstoobysmith Jul 9, 2026
102686d
refactor: Sort Physlib.lean
jstoobysmith Jul 9, 2026
1feb79c
Add import for Duals in Physlib.lean
jstoobysmith Jul 9, 2026
4341146
feat: Claudes first attempt (I gave it some starters)
jstoobysmith Jul 10, 2026
5fa0d6c
attempt2 : not much better
jstoobysmith Jul 10, 2026
9d7f6ec
More additions
jstoobysmith Jul 10, 2026
2c20b5d
feat: Major rewrite of the file (human driven)
jstoobysmith Jul 13, 2026
2fd9558
refactor: Rename
jstoobysmith Jul 13, 2026
98d74b6
refactor: Lint
jstoobysmith Jul 13, 2026
e7561cf
refactor: Add lemma about duals.
jstoobysmith Jul 13, 2026
c9ca497
feat: Improve doc-strings
jstoobysmith Jul 14, 2026
79d72af
feat: Add termOfList, and update types
jstoobysmith Jul 14, 2026
e67ba27
refactor: Move file
jstoobysmith Jul 14, 2026
df7bd33
refactor: Clean up
jstoobysmith Jul 14, 2026
75fa226
feat: Add reality condition,
jstoobysmith Jul 14, 2026
7d47252
Merge remote-tracking branch 'upstream/master' into AddPotentialAlgebra
jstoobysmith Jul 14, 2026
7e0c4af
lemma: Add some small results
jstoobysmith Jul 14, 2026
b30f909
Update EffectivePotential.lean
jstoobysmith Jul 15, 2026
294cbf0
feat: Updated, but not complete
jstoobysmith Jul 15, 2026
3826db6
feat: Add coeff
jstoobysmith Jul 16, 2026
ad55f01
feat: UPdate with projections
jstoobysmith Jul 16, 2026
e17d0be
feat: Add parts
jstoobysmith Jul 16, 2026
7020d6b
feat: Add results
jstoobysmith Jul 17, 2026
664a923
feat: More selection rules
jstoobysmith Jul 17, 2026
4f77c49
refactor: update name
jstoobysmith Jul 17, 2026
73f9282
fix: build
jstoobysmith Jul 17, 2026
5517c2d
feat: fill in sorry
jstoobysmith Jul 17, 2026
c3c8178
Update EFTLagrangianExclDeriv.lean
jstoobysmith Jul 17, 2026
44432f8
refactor: Add results about irreps
jstoobysmith Jul 17, 2026
44142a8
feat: complete sorries and mass-dimension section of the fermionic EF…
Jul 20, 2026
bff3f1c
Merge remote-tracking branch 'upstream/master' into AddPotentialAlgebra
jstoobysmith Jul 24, 2026
6b612a2
feat: Golf and add lema
jstoobysmith Jul 24, 2026
abdc129
Update EFTLagrangianExclDeriv.lean
jstoobysmith Jul 24, 2026
23b7da7
feat: Fill in proof
jstoobysmith Jul 27, 2026
3cafa97
feat: Start conjugate
jstoobysmith Jul 27, 2026
f86757d
feat: Add conjugation
jstoobysmith Jul 27, 2026
21f1e50
refactor: Golf
jstoobysmith Jul 27, 2026
d1a69e5
refactor: More golf
jstoobysmith Jul 27, 2026
ec4df03
feat: Add HasMassDimLE lemmas
jstoobysmith Jul 27, 2026
0c174b3
refactor: Golf
jstoobysmith Jul 27, 2026
a754535
refactor: Golf
jstoobysmith Jul 27, 2026
ba8686f
feat: Add Wess-Zumino
jstoobysmith Jul 28, 2026
c967400
feat: Breaking PR, but add new results
jstoobysmith Jul 29, 2026
36604e5
refactor: fix build
jstoobysmith Jul 29, 2026
46343be
feat: seperate Coeff
jstoobysmith Jul 29, 2026
d904ad6
Update Coeff.lean
jstoobysmith Jul 29, 2026
d47f581
Merge remote-tracking branch 'upstream/master' into AddPotentialAlgebra
jstoobysmith Jul 29, 2026
ea37a17
feat: Define EFTLagrangian for SM
jstoobysmith Jul 29, 2026
8121959
feat: Add Invariance condition
jstoobysmith Jul 29, 2026
5a1b5a7
Yukawa term test
jstoobysmith Jul 29, 2026
02a8e0c
feat: Claude Fable (High) Yukawa term
jstoobysmith Jul 29, 2026
c4c5e95
feat: Set up exclusivity lemma
jstoobysmith Jul 29, 2026
8a6e832
feat: Add exclusivity of the Yukawa for L e and H.
jstoobysmith Jul 29, 2026
f1e68c7
feat: Add Lagrangian THeory
jstoobysmith Jul 29, 2026
0766a44
feat: Add some things to Lagrangian Theory
jstoobysmith Jul 29, 2026
32c69cf
feat: IsInvariant lemmas
jstoobysmith Jul 29, 2026
65703e0
feat: Add reps
jstoobysmith Jul 30, 2026
bfce72a
refactor: Start adding derivatives
jstoobysmith Jul 30, 2026
d73aea3
feat: Update with derivatives
jstoobysmith Jul 30, 2026
df3c0ac
feat: Add derivatives for bososns
jstoobysmith Jul 30, 2026
ffb32ce
fix: Lagrangian theory
jstoobysmith Jul 30, 2026
4c20a57
feat: Start gluon field strength (as test)
jstoobysmith Jul 30, 2026
1b71959
feat: Add Real bosons
jstoobysmith Jul 30, 2026
5e93a27
feat: Start liftLinear
jstoobysmith Jul 30, 2026
a9a770f
Add the Lorentz algebra action on free-derivative Lagrangians
nateabr Jul 31, 2026
65c3f5c
Add the gauge algebra action on free-derivative Lagrangians
nateabr Jul 31, 2026
a9b5f9f
refactor: define free-derivative symmetries by algebra automorphisms
nateabr Jul 31, 2026
53be384
Apply suggestion from @nateabr
nateabr Aug 1, 2026
0cc7c78
refactor: Higgs GaugeGroupI action to a Representation
Aug 1, 2026
8cff32a
Update Coeff.lean
jstoobysmith Aug 3, 2026
2e8dd27
feat: Update to Jet bundles
jstoobysmith Aug 3, 2026
f0b1167
Merge latest #1415 (Jet bundles rework) into Higgs rep refactor
Aug 3, 2026
01048df
feat: Jet gauge group
jstoobysmith Aug 3, 2026
900c6dc
Merge #1415 head (Jet gauge group)
Aug 3, 2026
a1dca05
feat: Added jetAlgebra commits
jstoobysmith Aug 3, 2026
937f293
Merge branch 'AddPotentialAlgebra' of https://github.com/jstoobysmith…
jstoobysmith Aug 3, 2026
4ca5b7f
docs: Jet
jstoobysmith Aug 4, 2026
bdd36e7
feat: jet actions
jstoobysmith Aug 4, 2026
c640ed0
feat: Add QED
jstoobysmith Aug 4, 2026
7f37476
feat: Prove action on fieldstrengths
jstoobysmith Aug 4, 2026
510c64a
feat: Add proof of repJetGaugeGroupI_apply_eq_self_iff_mem
jstoobysmith Aug 4, 2026
c3affb8
feat: Add derivatives to algebras!!
jstoobysmith Aug 4, 2026
218c7de
fix: build
jstoobysmith Aug 4, 2026
190ebf4
feat: Cleanup
jstoobysmith Aug 4, 2026
8693715
refactor: Fix build
jstoobysmith Aug 4, 2026
7cd2ca6
feat: Clean up
jstoobysmith Aug 5, 2026
c09152e
Update BBoson.lean
jstoobysmith Aug 5, 2026
dcdfdcb
refactor: Clean up
jstoobysmith Aug 5, 2026
55690d6
feat: Clean up
jstoobysmith Aug 5, 2026
02fa27d
Prove of: 'Theorem A' for QED
jstoobysmith Aug 5, 2026
f8564e6
feat: Statement of final theorem for QED
jstoobysmith Aug 5, 2026
4cdc228
feat: Claude push at proving theorem with guideance
jstoobysmith Aug 5, 2026
d4a75fd
feat: Proof of 2nd theorem for QED
jstoobysmith Aug 6, 2026
720c827
refactor: Start clean up
jstoobysmith Aug 6, 2026
ff83946
feat: More clean up
jstoobysmith Aug 6, 2026
aacf052
feat: More clean up
jstoobysmith Aug 6, 2026
2bec746
bit of clean up
jstoobysmith Aug 6, 2026
e79c947
claude clean up
jstoobysmith Aug 6, 2026
f11f5e5
feat: Some fixes and clean up
jstoobysmith Aug 6, 2026
7ca0e1d
feat: Clean up
jstoobysmith Aug 6, 2026
99d9a1e
feat: Some docs + clean up
jstoobysmith Aug 6, 2026
ba4f6eb
feat: Comment about mass weight
jstoobysmith Aug 7, 2026
a3aa5ef
feat: Proof of the 1st theorem for gluons
nateabr Aug 7, 2026
8bd23ff
feat: Add mass dim
jstoobysmith Aug 7, 2026
50fbbf9
feat: Add mass dim grading
jstoobysmith Aug 7, 2026
ab4608b
feat: More mass dim
jstoobysmith Aug 7, 2026
4923eae
refactor: add jets result
jstoobysmith Aug 7, 2026
881d68f
feat: Add jetDerivM result
jstoobysmith Aug 7, 2026
e37bdfc
feat: Sort leptonsinglets
jstoobysmith Aug 7, 2026
e1aaa6a
feat: Self-contained photon jet algebra and its evaluation on potentials
Aug 7, 2026
e3b7c16
feat: modify LeptonGaugeSector
jstoobysmith Aug 10, 2026
7e9f8ba
feat: Mass dimension
jstoobysmith Aug 10, 2026
e00d93c
feat: Some clean up/reagranging
jstoobysmith Aug 10, 2026
256e7c8
feat: Fermionic parity
jstoobysmith Aug 10, 2026
c5414c7
feat: Add hypercharge grading
jstoobysmith Aug 10, 2026
684ba75
feat: Add irrep stub
jstoobysmith Aug 10, 2026
4fee897
feat: Simplify
jstoobysmith Aug 10, 2026
cc98fe8
feat: Add boost weight grading
jstoobysmith Aug 10, 2026
0961f50
feat: Show BoostWeight is a graded algebra
jstoobysmith Aug 10, 2026
da935a4
feat(tensor): add fixed-submodule extension lemmas
nateabr Aug 10, 2026
3dee07b
Create BoostWeightSubMod.lean
jstoobysmith Aug 11, 2026
9daa3c2
feat: Improve BoostWeightSubMod
jstoobysmith Aug 11, 2026
6867c00
feat: Boost weights -> Invariants
jstoobysmith Aug 11, 2026
1337bc1
feat: Add Boost weight for gauge kinetic term.
jstoobysmith Aug 11, 2026
12551c2
feat: Add bar kinetic term results.
jstoobysmith Aug 11, 2026
442a292
feat: Clean up invariants proof
jstoobysmith Aug 11, 2026
bbfba16
feat: Partial clean up
jstoobysmith Aug 12, 2026
20e5441
feat: Add lepton singlet covariantization compatibility
nateabr Aug 12, 2026
75d2c5f
feat: Clean up boost proof
jstoobysmith Aug 12, 2026
52cd823
feat: Clean up boost weight
jstoobysmith Aug 12, 2026
abd01b3
feat: Add QED formalization
doxtor6 Aug 12, 2026
0338fae
feat: Clean up boost weights
jstoobysmith Aug 13, 2026
a345d49
feat: add IsLorentzDeriv
jstoobysmith Aug 13, 2026
ff4c9fb
feat: IsLorentzDeriv more results
jstoobysmith Aug 13, 2026
dff096d
generalize some lemmas around IsLorentzDeriv
jstoobysmith Aug 14, 2026
9232179
feat: Add WeightDecomposition
jstoobysmith Aug 14, 2026
12315da
feat: Add start to JetGaugeALgebra
jstoobysmith Aug 14, 2026
1e9e027
feat: Add TODOs to MaurerCartan
jstoobysmith Aug 14, 2026
4e2a4d0
docs: Maurer Cartan
jstoobysmith Aug 14, 2026
9651450
docs: Jet Gauge Algebra
jstoobysmith Aug 14, 2026
bd9a23d
feat: Add script tracking the TODOs this branch introduces
nateabr Aug 15, 2026
4390daa
docs: Note the expected TODO format in todos.md
nateabr Aug 15, 2026
5c4cb45
feat: Convert the basis TODO in JetGaugeAlgebra to the TODO command
nateabr Aug 15, 2026
54f740d
refactor: Drop the commit SHA from the todos.md header
nateabr Aug 15, 2026
e53ddf9
feat: Improve docs around JetGaugeAlgebra
jstoobysmith Aug 17, 2026
41fbe74
feat: Add PureJet
jstoobysmith Aug 17, 2026
3c08e08
docs: Add file for the normal Gauge algebra
jstoobysmith Aug 17, 2026
53a1e51
docs: Add outline
jstoobysmith Aug 17, 2026
e5bcc61
Update Outline.md
jstoobysmith Aug 17, 2026
f96aa0a
feat: Update JetComponentSpace
jstoobysmith Aug 17, 2026
f75b17a
docs: Update outline.
jstoobysmith Aug 17, 2026
e4ca5ca
feat: Add pure subgroup
jstoobysmith Aug 17, 2026
3d4a3c3
feat: Starts on Jet Gauge Algebra
jstoobysmith Aug 17, 2026
7556727
Update MaurerCartan.lean
jstoobysmith Aug 17, 2026
5901955
feat: Improve API
jstoobysmith Aug 17, 2026
1ed0c46
feat: API around Gauge group and Gauge Algebra
jstoobysmith Aug 18, 2026
9a05b57
feat: Add Maurer Cartan Lemma
jstoobysmith Aug 18, 2026
c03949b
feat: More API
jstoobysmith Aug 18, 2026
dfd2e72
feat: More API
jstoobysmith Aug 18, 2026
c0d519a
feat: More API
jstoobysmith Aug 18, 2026
7b6f251
feat: Some long proofs, but more API
jstoobysmith Aug 18, 2026
3fe9c2e
feat: Add surjectivty proof
jstoobysmith Aug 18, 2026
6fbcf0f
feat: Bit of a clean up
jstoobysmith Aug 19, 2026
d8bc48b
feat: Start ALgebra valued gauge bosons
jstoobysmith Aug 19, 2026
2c3d26f
refactor: Commutator
jstoobysmith Aug 19, 2026
0d7f908
feat: Covariant derivatives
jstoobysmith Aug 19, 2026
fabf839
feat: Add covariant derivative span theorem.
jstoobysmith Aug 19, 2026
597f06f
feat: Start on symmeterized derivative argument
jstoobysmith Aug 20, 2026
2ae6b72
update: Symmeterized
jstoobysmith Aug 20, 2026
042e29e
fefat: Add finial step of convariantization
jstoobysmith Aug 20, 2026
8eeacda
update outline with JetRing
nateabr Aug 20, 2026
82444d9
feat: Start general Jet Component Space
jstoobysmith Aug 20, 2026
83f8aad
feat: Fermionic Algebra
jstoobysmith Aug 20, 2026
d5fcbf8
feat: Add Fermionic algebra
jstoobysmith Aug 20, 2026
522da8f
feat: AI filling other algebras
jstoobysmith Aug 21, 2026
56d3fab
refactor: Move results
jstoobysmith Aug 21, 2026
984a959
feat: Add Hypercharge Grading
jstoobysmith Aug 21, 2026
d514bfe
feat: Add algebra valued Higgs
jstoobysmith Aug 21, 2026
0fdee18
feat: Add infinitissmal action
jstoobysmith Aug 21, 2026
a500ea9
update JetRing outline with Borel's theorem
nateabr Aug 21, 2026
7ca05ca
update todo.md
nateabr Aug 21, 2026
68eba1d
feat: Decompositions
jstoobysmith Aug 21, 2026
2cdd72f
feat: Add Higgs decomp
jstoobysmith Aug 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
566 changes: 566 additions & 0 deletions Outline.md

Large diffs are not rendered by default.

64 changes: 63 additions & 1 deletion Physlib.lean
Original file line number Diff line number Diff line change
Expand Up @@ -121,13 +121,18 @@ public import Physlib.Mathematics.LinearPMap
public import Physlib.Mathematics.List
public import Physlib.Mathematics.List.InsertIdx
public import Physlib.Mathematics.List.InsertionSort
public import Physlib.Mathematics.MvPolynomialTranslation
public import Physlib.Mathematics.MvPowerSeriesDerivative
public import Physlib.Mathematics.OrthogonalMatrix
public import Physlib.Mathematics.PiTensorProduct
public import Physlib.Mathematics.PolynomialEval
public import Physlib.Mathematics.RatComplexNum
public import Physlib.Mathematics.Resolvent
public import Physlib.Mathematics.SO3.Basic
public import Physlib.Mathematics.SchurTriangulation
public import Physlib.Mathematics.SpecialFunctions.PhysHermite
public import Physlib.Mathematics.SymmetricAlgebra
public import Physlib.Mathematics.TensorProduct
public import Physlib.Mathematics.Trigonometry.Tanh
public import Physlib.Mathematics.VariationalCalculus.Basic
public import Physlib.Mathematics.VariationalCalculus.HasVarAdjDeriv
Expand Down Expand Up @@ -181,7 +186,21 @@ public import Physlib.Particles.FlavorPhysics.CKMMatrix.Relations
public import Physlib.Particles.FlavorPhysics.CKMMatrix.Rows
public import Physlib.Particles.FlavorPhysics.CKMMatrix.StandardParameterization.Basic
public import Physlib.Particles.FlavorPhysics.CKMMatrix.StandardParameterization.StandardParameters
public import Physlib.Particles.LeptonGaugeSector.JetAlgebra.Boosts.FieldStrength
public import Physlib.Particles.LeptonGaugeSector.JetAlgebra.Covariantization
public import Physlib.Particles.NeutrinoPhysics.Basic
public import Physlib.Particles.QED.Basic
public import Physlib.Particles.QED.CurrentCoupling
public import Physlib.Particles.QED.Evaluation
public import Physlib.Particles.QED.FermionStatistics
public import Physlib.Particles.QED.FieldStrength
public import Physlib.Particles.QED.Fields
public import Physlib.Particles.QED.GammaMatrices
public import Physlib.Particles.QED.GaugeInvariance
public import Physlib.Particles.QED.JetCompleteness
public import Physlib.Particles.QED.Lagrangian
public import Physlib.Particles.QED.LorentzInvariance
public import Physlib.Particles.QED.MassDimension
public import Physlib.Particles.StandardModel.AnomalyCancellation.Basic
public import Physlib.Particles.StandardModel.AnomalyCancellation.FamilyMaps
public import Physlib.Particles.StandardModel.AnomalyCancellation.NoGrav.Basic
Expand All @@ -190,13 +209,53 @@ public import Physlib.Particles.StandardModel.AnomalyCancellation.NoGrav.One.Lin
public import Physlib.Particles.StandardModel.AnomalyCancellation.Permutations
public import Physlib.Particles.StandardModel.Basic
public import Physlib.Particles.StandardModel.Fermions.DownSinglet
public import Physlib.Particles.StandardModel.Fermions.JetAlgebra.Basic
public import Physlib.Particles.StandardModel.Fermions.LeptonDoublet
public import Physlib.Particles.StandardModel.Fermions.LeptonSinglet
public import Physlib.Particles.StandardModel.Fermions.LeptonSinglet.Basic
public import Physlib.Particles.StandardModel.Fermions.LeptonSinglet.JetAlgebra.Basic
public import Physlib.Particles.StandardModel.Fermions.LeptonSinglet.JetAlgebra.GaugeAction
public import Physlib.Particles.StandardModel.Fermions.LeptonSinglet.JetAlgebra.JetDeriv
public import Physlib.Particles.StandardModel.Fermions.LeptonSinglet.JetAlgebra.LorentzAction
public import Physlib.Particles.StandardModel.Fermions.LeptonSinglet.JetAlgebra.MassDim
public import Physlib.Particles.StandardModel.Fermions.LeptonSinglet.JetComponentSpace
public import Physlib.Particles.StandardModel.Fermions.QuarkDoublet
public import Physlib.Particles.StandardModel.Fermions.UpSinglet
public import Physlib.Particles.StandardModel.GaugeBosons.GaugeJetAlgebra.Basic
public import Physlib.Particles.StandardModel.GaugeBosons.GaugeJetAlgebra.GaugeAction
public import Physlib.Particles.StandardModel.GaugeBosons.GaugeJetAlgebra.Invariants
public import Physlib.Particles.StandardModel.GaugeBosons.GaugeJetAlgebra.JetDeriv
public import Physlib.Particles.StandardModel.GaugeBosons.GaugeJetAlgebra.LorentzAction
public import Physlib.Particles.StandardModel.GaugeBosons.GaugeJetAlgebra.MassDim
public import Physlib.Particles.StandardModel.GaugeBosons.Gluons.JetCompleteness
public import Physlib.Particles.StandardModel.GaugeGroup.GaugeWeightDecomposition
public import Physlib.Particles.StandardModel.GaugeGroup.HyperchargeDecomposition
public import Physlib.Particles.StandardModel.GaugeGroup.IsospinDecomposition
public import Physlib.Particles.StandardModel.GaugeGroup.SU2PermDecomposition
public import Physlib.Particles.StandardModel.HiggsBoson.Basic
public import Physlib.Particles.StandardModel.HiggsBoson.EffectivePotential
public import Physlib.Particles.StandardModel.HiggsBoson.JetAlgebra.Basic
public import Physlib.Particles.StandardModel.HiggsBoson.Potential
public import Physlib.Particles.StandardModel.JetAlgebra.Basic
public import Physlib.Particles.StandardModel.JetAlgebra.GaugeAction
public import Physlib.Particles.StandardModel.JetAlgebra.Invariants
public import Physlib.Particles.StandardModel.JetAlgebra.JetDeriv
public import Physlib.Particles.StandardModel.JetAlgebra.LorentzAction
public import Physlib.Particles.StandardModel.JetAlgebra.MassDim
public import Physlib.Particles.StandardModel.Matter.BosonicAlgebra.Basic
public import Physlib.Particles.StandardModel.Matter.BosonicAlgebra.GaugeAction
public import Physlib.Particles.StandardModel.Matter.BosonicAlgebra.JetDeriv
public import Physlib.Particles.StandardModel.Matter.BosonicAlgebra.LorentzAction
public import Physlib.Particles.StandardModel.Matter.BosonicAlgebra.MassDim
public import Physlib.Particles.StandardModel.Matter.BosonicAlgebra.Prod
public import Physlib.Particles.StandardModel.Matter.FermionicAlgebra.Basic
public import Physlib.Particles.StandardModel.Matter.FermionicAlgebra.GaugeAction
public import Physlib.Particles.StandardModel.Matter.FermionicAlgebra.JetDeriv
public import Physlib.Particles.StandardModel.Matter.FermionicAlgebra.LorentzAction
public import Physlib.Particles.StandardModel.Matter.FermionicAlgebra.MassDim
public import Physlib.Particles.StandardModel.Matter.FermionicAlgebra.Prod
public import Physlib.Particles.StandardModel.Matter.JetComponentSpace.Basic
public import Physlib.Particles.StandardModel.Matter.JetComponentSpace.CovariantDeriv
public import Physlib.Particles.StandardModel.Matter.JetComponentSpace.InfinitesimalAction
public import Physlib.Particles.StandardModel.Representations
public import Physlib.Particles.SuperSymmetry.MSSMNu.AnomalyCancellation.B3
public import Physlib.Particles.SuperSymmetry.MSSMNu.AnomalyCancellation.Basic
Expand Down Expand Up @@ -363,8 +422,11 @@ public import Physlib.Relativity.LorentzAlgebra.Basis
public import Physlib.Relativity.LorentzAlgebra.ExponentialMap
public import Physlib.Relativity.LorentzGroup.Basic
public import Physlib.Relativity.LorentzGroup.Boosts.Apply
public import Physlib.Relativity.LorentzGroup.Boosts.Axis
public import Physlib.Relativity.LorentzGroup.Boosts.WeightGrading
public import Physlib.Relativity.LorentzGroup.Boosts.Basic
public import Physlib.Relativity.LorentzGroup.Boosts.Generalized
public import Physlib.Relativity.LorentzGroup.FermionicParity
public import Physlib.Relativity.LorentzGroup.Orthochronous.Basic
public import Physlib.Relativity.LorentzGroup.Proper
public import Physlib.Relativity.LorentzGroup.Restricted.Basic
Expand Down
217 changes: 213 additions & 4 deletions Physlib/Mathematics/ConjModule.lean
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ public import Mathlib.Algebra.Module.Equiv.Defs
public import Mathlib.Algebra.Star.Module
public import Mathlib.LinearAlgebra.Basis.Defs
public import Mathlib.Tactic.Ring

public import Mathlib.RepresentationTheory.Basic
public import Mathlib.LinearAlgebra.TensorProduct.Basic
/-!

# The conjugate module
Expand All @@ -36,6 +37,7 @@ conjugate-linear identity `conjEquiv : M ≃ₛₗ[starRingEnd k] ConjModule M`,
@[expose] public section

open Module
open scoped TensorProduct

variable {k : Type*} [CommRing k] [StarRing k]
variable {M : Type*} [AddCommGroup M] [Module k M]
Expand All @@ -53,6 +55,19 @@ conjugation ring endomorphism `starRingEnd k`. -/
instance instModule : Module k (ConjModule M) :=
Module.compHom M (starRingEnd k)

variable {A : Type*} [Ring A]

instance : Ring (ConjModule A) :=
let i1 : AddCommGroup (ConjModule A) := inferInstanceAs (AddCommGroup (ConjModule A))
let i2 : Ring A := inferInstanceAs (Ring A)
{ i1, i2 with }

/-- The conjugate module of a `k`-algebra is a `k`-algebra: the same ring, with scalars
acting through `star`. -/
instance instAlgebra [Algebra k A] : Algebra k (ConjModule A) :=
Algebra.ofModule (fun r x y => smul_mul_assoc (β := A) (star r) x y)
(fun r x y => mul_smul_comm (β := A) (star r) x y)

end ConjModule

/-- The canonical conjugate-linear equivalence `M ≃ₛₗ[starRingEnd k] ConjModule M`, the identity on
Expand All @@ -65,6 +80,26 @@ def conjEquiv : M ≃ₛₗ[starRingEnd k] ConjModule M where
left_inv _ := rfl
right_inv _ := rfl

/-- The canonical conjugate-linear equivalence between the dual of a module `M` and
the dual of its conjugate. -/
def conjDualEquiv : Module.Dual k M ≃ₛₗ[starRingEnd k] Module.Dual k (ConjModule M) where
toFun f := (starRingEnd k).toSemilinearMap.comp
(f.comp (conjEquiv (k := k) (M := M)).symm.toLinearMap)
invFun f := (starRingEnd k).toSemilinearMap.comp
(f.comp (conjEquiv (k := k) (M := M)).toLinearMap)
map_add' f g := by
ext x
simp
map_smul' r f := by
ext x
simp
left_inv f := by
ext x
simp
right_inv f := by
ext x
simp

namespace ConjModule

/-- Conjugating twice returns the original module: the `k`-linear isomorphism
Expand All @@ -89,23 +124,197 @@ noncomputable def starFinsupp : (ι →₀ k) ≃ₛₗ[starRingEnd k] (ι →

/-- A basis of `M` transported to a basis of `ConjModule M`: the same basis vectors, with
coordinates conjugated (`(Basis.conj b).repr v = star ∘ b.repr v`). -/
noncomputable def _root_.Basis.conj (b : Basis ι k M) : Basis ι k (ConjModule M) :=
noncomputable def _root_.Module.Basis.conj (b : Basis ι k M) : Basis ι k (ConjModule M) :=
Basis.ofRepr
(((conjEquiv (k := k) (M := M)).symm.trans b.repr).trans starFinsupp)

/-- Coordinates in `Basis.conj b` are the `star` of the coordinates in `b`. -/
@[simp] lemma _root_.Basis.conj_repr_apply (b : Basis ι k M) (v : ConjModule M) (i : ι) :
@[simp] lemma _root_.Module.Basis.conj_repr_apply (b : Basis ι k M) (v : ConjModule M) (i : ι) :
(Basis.conj b).repr v i = star (b.repr ((conjEquiv (k := k) (M := M)).symm v) i) := rfl

/-- The basis vectors of `Basis.conj b` are those of `b`, viewed through `conjEquiv`. -/
@[simp] lemma _root_.Basis.conj_apply (b : Basis ι k M) (i : ι) :
@[simp] lemma _root_.Module.Basis.conj_apply (b : Basis ι k M) (i : ι) :
Basis.conj b i = conjEquiv (k := k) (M := M) (b i) := by
apply (Basis.conj b).repr.injective
ext j
rcases eq_or_ne j i with h | h
· subst h; simp [Basis.conj_repr_apply]
· simp [Basis.conj_repr_apply, Finsupp.single_eq_of_ne, h]

/-!

## The conjugate of a representation

-/

/-- The conjugate of a representation `ρ` of `G` on `M`: the same maps `ρ g`, acting on
`ConjModule M` through `conjEquiv`. -/
def _root_.Representation.conj {G} [Group G] (ρ : Representation k G M) :
Representation k G (ConjModule M) where
toFun g := {
toFun := conjEquiv (k := k) (M := M) ∘ ρ g ∘ (conjEquiv (k := k) (M := M)).symm
map_add' x y := (ρ g).map_add x y
map_smul' a m := (ρ g).map_smul (star a) m }
map_one' := LinearMap.ext fun _ =>
congrArg (conjEquiv (k := k)) (LinearMap.congr_fun (map_one ρ) _)
map_mul' g h := LinearMap.ext fun _ =>
congrArg (conjEquiv (k := k)) (LinearMap.congr_fun (map_mul ρ g h) _)

lemma _root_.Representation.conj_apply {G} [Group G] (ρ : Representation k G M) (g : G)
(m : ConjModule M) :
ρ.conj g m = conjEquiv (k := k) (M := M) (ρ g ((conjEquiv (k := k) (M := M)).symm m)) := rfl

/-!

## Functoriality, and conjugation of tensor products

Conjugation is monoidal: `ConjModule M ⊗ ConjModule N ≃ ConjModule (M ⊗ N)`, the identity
on pure tensors. The map is honestly `k`-linear because the twist on each factor cancels
against the twist on the target.

Everything below routes through `conjEquiv` rather than relying on definitional unfolding
of the `ConjModule` synonym. Writing `m ⊗ₜ n` for `m : ConjModule M` makes elaboration
pick the *twisted* module instances, landing in the wrong tensor product; converting
explicitly with `conjEquiv` fixes every instance by construction.

-/

variable {N : Type*} [AddCommGroup N] [Module k N]

/-- Functoriality of conjugation: a `k`-linear map induces a `k`-linear map of the
conjugate modules, given by the same underlying function. -/
def map (f : M →ₗ[k] N) : ConjModule M →ₗ[k] ConjModule N where
toFun := f
map_add' := f.map_add
map_smul' c x := f.map_smul (star c) x

@[simp]
lemma map_apply (f : M →ₗ[k] N) (x : ConjModule M) : map f x = f x := rfl

/-- **Conjugation commutes with finite products.** The conjugate of a product is the product
of the conjugates, by the identity underlying function: the twisted scalar action is applied
componentwise. -/
def prodEquiv : ConjModule (M × N) ≃ₗ[k] ConjModule M × ConjModule N where
toFun x := (map (LinearMap.fst k M N) x, map (LinearMap.snd k M N) x)
map_add' _ _ := rfl
map_smul' _ _ := rfl
invFun x := (x.1, x.2)
left_inv _ := rfl
right_inv _ := rfl

@[simp]
lemma prodEquiv_apply (x : ConjModule (M × N)) :
prodEquiv (k := k) x = (map (LinearMap.fst k M N) x, map (LinearMap.snd k M N) x) := rfl

/-- The conjugate module of a finite free module is finite: the conjugated basis
`Module.Basis.conj` is indexed by the same type. -/
instance instFinite [Module.Free k M] [Module.Finite k M] :
Module.Finite k (ConjModule M) :=
Module.Finite.of_basis (Module.Basis.conj (Module.Free.chooseBasis k M))

/-- The canonical `k`-linear map `ConjModule M ⊗ ConjModule N → ConjModule (M ⊗ N)`,
the identity on pure tensors. -/
noncomputable def tensorHom : ConjModule M ⊗[k] ConjModule N →ₗ[k] ConjModule (M ⊗[k] N) :=
TensorProduct.lift
{ toFun := fun m =>
{ toFun := fun n => conjEquiv (k := k) (M := M ⊗[k] N)
((conjEquiv (k := k) (M := M)).symm m ⊗ₜ[k] (conjEquiv (k := k) (M := N)).symm n)
map_add' := by
intro n₁ n₂
rw [map_add, TensorProduct.tmul_add, map_add]
map_smul' := by
intro c n
rw [map_smulₛₗ, TensorProduct.tmul_smul, map_smulₛₗ]
simp }
map_add' := by
intro m₁ m₂
ext n
simp only [LinearMap.coe_mk, AddHom.coe_mk, LinearMap.add_apply]
rw [map_add, TensorProduct.add_tmul, map_add]
map_smul' := by
intro c m
ext n
simp only [LinearMap.coe_mk, AddHom.coe_mk, LinearMap.smul_apply, RingHom.id_apply]
rw [map_smulₛₗ, ← TensorProduct.smul_tmul', map_smulₛₗ]
simp }

@[simp]
lemma tensorHom_tmul (m : ConjModule M) (n : ConjModule N) :
tensorHom (k := k) (m ⊗ₜ[k] n)
= conjEquiv (k := k) (M := M ⊗[k] N)
((conjEquiv (k := k) (M := M)).symm m ⊗ₜ[k] (conjEquiv (k := k) (M := N)).symm n) :=
rfl

/-- The inverse map `ConjModule (M ⊗ N) → ConjModule M ⊗ ConjModule N`, again the identity
on pure tensors. A `k`-linear map out of `ConjModule X` is the same data as a `k`-linear
map into `ConjModule` of the target, which is what `map` and `involution` package here. -/
noncomputable def tensorInv : ConjModule (M ⊗[k] N) →ₗ[k] ConjModule M ⊗[k] ConjModule N :=
(involution (k := k) (M := ConjModule M ⊗[k] ConjModule N)).toLinearMap ∘ₗ
map (TensorProduct.lift
{ toFun := fun m =>
{ toFun := fun n => conjEquiv (k := k) (M := ConjModule M ⊗[k] ConjModule N)
(conjEquiv (k := k) (M := M) m ⊗ₜ[k] conjEquiv (k := k) (M := N) n)
map_add' := by
intro n₁ n₂
rw [map_add, TensorProduct.tmul_add, map_add]
map_smul' := by
intro c n
rw [map_smulₛₗ, TensorProduct.tmul_smul, map_smulₛₗ]
simp }
map_add' := by
intro m₁ m₂
ext n
simp only [LinearMap.coe_mk, AddHom.coe_mk, LinearMap.add_apply]
rw [map_add, TensorProduct.add_tmul, map_add]
map_smul' := by
intro c m
ext n
simp only [LinearMap.coe_mk, AddHom.coe_mk, LinearMap.smul_apply, RingHom.id_apply]
rw [map_smulₛₗ, ← TensorProduct.smul_tmul', map_smulₛₗ]
simp })

/-- **Conjugation is monoidal.** `ConjModule M ⊗ ConjModule N ≃ₗ[k] ConjModule (M ⊗ N)`,
the identity on pure tensors. Injectivity comes from `tensorInv` being a left inverse;
surjectivity from every element of `M ⊗ N` being a sum of pure tensors. -/
noncomputable def tensorEquiv :
ConjModule M ⊗[k] ConjModule N ≃ₗ[k] ConjModule (M ⊗[k] N) :=
LinearEquiv.ofBijective tensorHom
⟨by
have h : ∀ w : ConjModule M ⊗[k] ConjModule N, tensorInv (tensorHom w) = w := by
intro w
induction w using TensorProduct.induction_on with
| zero => simp
| tmul m n => rfl
| add x y hx hy => rw [map_add, map_add, hx, hy]
exact Function.LeftInverse.injective h,
by
intro z
induction z using TensorProduct.induction_on with
| zero => exact ⟨0, map_zero _⟩
| tmul m n =>
exact ⟨conjEquiv (k := k) (M := M) m ⊗ₜ[k] conjEquiv (k := k) (M := N) n, rfl⟩
| add x y hx hy =>
obtain ⟨w₁, h₁⟩ := hx
obtain ⟨w₂, h₂⟩ := hy
refine ⟨w₁ + w₂, ?_⟩
rw [map_add, h₁, h₂]
rfl⟩

@[simp]
lemma tensorEquiv_tmul (m : ConjModule M) (n : ConjModule N) :
tensorEquiv (k := k) (m ⊗ₜ[k] n)
= conjEquiv (k := k) (M := M ⊗[k] N)
((conjEquiv (k := k) (M := M)).symm m ⊗ₜ[k] (conjEquiv (k := k) (M := N)).symm n) :=
rfl

@[simp]
lemma tensorEquiv_symm_conjEquiv_tmul (m : M) (n : N) :
(tensorEquiv (k := k) (M := M) (N := N)).symm
(conjEquiv (k := k) (M := M ⊗[k] N) (m ⊗ₜ[k] n))
= conjEquiv (k := k) (M := M) m ⊗ₜ[k] conjEquiv (k := k) (M := N) n := by
rw [LinearEquiv.symm_apply_eq, tensorEquiv_tmul]
simp

end ConjModule

end
Loading
Loading