Paper XII · Lean source

RightAugmentation.lean

Inherited / related evidence Coverage and evidence

The edition relies on earlier or related formal evidence. That evidence is not a fresh full-edition replay.

This viewer reads the retained source; it does not run Lean or assign new claim mappings.

Local imports (1)

PaperXII/RightAugmentation.lean91 lines

Original source pathcore/publication/source/lean_guide/formal_release/lean/PaperXII/RightAugmentation.lean
Skip declarations and read code

Skip source text

1 import PaperXII.BalancedAugmentation
2 import Mathlib.Algebra.Algebra.Opposite
3 
4 set_option autoImplicit false
5 
6 /-! Right-module convention for M ⊗[A,ε] R, including noncommutative A.
7 The construction is the same full balanced quotient with its two inputs flipped.
8 The right action on M is represented by an Aᵐᵒᵖ-module structure. -/
9 namespace PaperXII.RightAugmentation
10 
11 open scoped TensorProduct
12 open MulOpposite
13 
14 variable {R A M : Type*} [CommRing R] [Ring A] [Algebra R A]
15   [AddCommGroup M] [Module R M] [Module Aᵐᵒᵖ M]
16 
17 /-- Augmentation on the opposite algebra. -/
18 def oppositeAugmentation (ε : A →ₐ[R] R) : Aᵐᵒᵖ →ₐ[R] R :=
19   ε.fromOpposite fun _ _ => Commute.all _ _
20 
21 /-- The right balanced tensor M ⊗[A,ε] R. -/
22 abbrev Tensor (ε : A →ₐ[R] R) :=
23   BalancedAugmentation.Tensor (M := M) (oppositeAugmentation ε)
24 
25 /-- The conventional order of the two tensor inputs. -/
26 def tensorMk (ε : A →ₐ[R] R) : M →ₗ[R] R →ₗ[R] Tensor (M := M) ε :=
27   (BalancedAugmentation.tensorMk (oppositeAugmentation ε)).flip
28 
29 /-- The full right-module balancing equation. -/
30 theorem tensorMk_balanced (ε : A →ₐ[R] R) (a : A) (m : M) (r : R) :
31     tensorMk ε (op a • m) r = tensorMk ε m (ε a * r) := by
32   change BalancedAugmentation.tensorMk (oppositeAugmentation ε) r (op a • m) =
33     BalancedAugmentation.tensorMk (oppositeAugmentation ε) (ε a * r) m
34   rw [BalancedAugmentation.tensorMk_balanced]
35   change BalancedAugmentation.tensorMk (oppositeAugmentation ε) (r * ε a) m = _
36   rw [mul_comm]
37 
38 /-- Right balanced bilinear maps factor uniquely through this tensor. -/
39 theorem exists_unique_lift {W : Type*} [AddCommGroup W] [Module R W]
40     (ε : A →ₐ[R] R) (f : M →ₗ[R] R →ₗ[R] W)
41     (hf : ∀ a m r, f (op a • m) r = f m (ε a * r)) :
42     ∃! F : Tensor (M := M) ε →ₗ[R] W, ∀ m r, F (tensorMk ε m r) = f m r := by
43   have h : ∀ r (a : Aᵐᵒᵖ) m,
44       f.flip r (a • m) = f.flip (r * oppositeAugmentation ε a) m := by
45     intro r a m
46     change f (a • m) r = f m (r * ε a.unop)
47     simpa only [op_unop, mul_comm] using hf a.unop m r
48   obtain ⟨F,hF,hunique⟩ := BalancedAugmentation.exists_unique_lift
49     (oppositeAugmentation ε) f.flip h
50   refine ⟨F, fun m r => hF r m, ?_⟩
51   intro Q hQ
52   exact hunique Q fun r m => hQ m r
53 
54 /-- The actual augmentation ideal acts from the right. -/
55 def augmentationSMul (ε : A →ₐ[R] R) : Submodule R M :=
56   Submodule.span R {v | ∃ a : A, ε a = 0 ∧ ∃ m : M, op a • m = v}
57 
58 /-- Opposite-algebra notation preserves exactly the right ideal-action submodule. -/
59 theorem opposite_augmentationSMul (ε : A →ₐ[R] R) :
60     AugmentationCoinvariants.augmentationSMul (M := M) (oppositeAugmentation ε) =
61       augmentationSMul ε := by
62   unfold AugmentationCoinvariants.augmentationSMul augmentationSMul
63   apply congrArg (Submodule.span R)
64   ext v
65   constructor
66   · rintro ⟨a,ha,m,hm⟩
67     exact ⟨a.unop,ha,m,by simpa only [op_unop] using hm⟩
68   · rintro ⟨a,ha,m,hm⟩
69     exact ⟨op a,ha,m,hm⟩
70 
71 /-- The right tensor is exactly M divided by its augmentation-ideal action. -/
72 def tensorEquivQuotient [IsScalarTower R Aᵐᵒᵖ M] (ε : A →ₐ[R] R) :
73     Tensor (M := M) ε ≃ₗ[R] (M ⧸ augmentationSMul (M := M) ε) :=
74   (BalancedAugmentation.tensorEquivCoinvariants (oppositeAugmentation ε)).trans
75     (Submodule.quotEquivOfEq _ _
76       ((AugmentationCoinvariants.relations_eq_augmentationSMul (M := M)
77         (oppositeAugmentation ε)).trans (opposite_augmentationSMul (M := M) ε)))
78 
79 /-- The free right-module theorem retains every basis index. -/
80 noncomputable def freeEquiv [IsScalarTower R Aᵐᵒᵖ M] {ι : Type*} [Fintype ι]
81     (ε : A →ₐ[R] R) (b : Module.Basis ι Aᵐᵒᵖ M) :
82     Tensor (M := M) ε ≃ₗ[R] (ι → R) :=
83   BalancedAugmentation.freeTensorEquiv (oppositeAugmentation ε) b
84 
85 /-- A recovered basis with the same index set as the original right basis. -/
86 noncomputable def recoveredBasis [IsScalarTower R Aᵐᵒᵖ M] {ι : Type*} [Fintype ι]
87     (ε : A →ₐ[R] R) (b : Module.Basis ι Aᵐᵒᵖ M) :
88     Module.Basis ι R (Tensor (M := M) ε) :=
89   (Pi.basisFun R ι).map (freeEquiv ε b).symm
90 
91 end PaperXII.RightAugmentation

Back to source controls

Original file and source record

This copy matches the recorded source file. Its publication here does not change the work’s review status.

SHA-256: 5fdf4abbf1666a8e03ab4cd9767d4a19ab1f3256e6a26f29739aa97406514c4d

Original source on GitHub

Back to Paper XII: Patching Support, Hecke Packets, and Conditional Automorphic Completion