-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 2642321
Showing
2 changed files
with
286 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
fabien.groupoid.space |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,285 @@ | ||
# Fabien Morel: 𝔸¹ Type Theory | ||
|
||
A^1-Homotopy Fabien Morel Type Theory (FMTT) is built on top of: | ||
1) Cubical Type Theory (CTT), | ||
2) Base field k, | ||
3) A^1-indexed affine line, | ||
4) Localization modality to enforce A^1-contractibility, | ||
5) Suspension, | ||
6) Nisnevich Cover | ||
7) K(Z,n) | ||
8) | ||
|
||
## Intro | ||
|
||
Targets: | ||
|
||
* Motivic Cohomology: `𝐻¹¹(ℙ,ℤ(1))=𝑘ˣ`. | ||
* Algebraic K-theory: `𝜋₁ᴬ(S¹¹)=𝑘ˣ`. | ||
* Algebraic Cobordism: `𝑀𝐺𝐿²¹(pt)≅𝑘ˣ`. | ||
|
||
Type Formers: | ||
|
||
* U,V (Fibrant, Pretypes universes) | ||
* ΠΣ (Dependent Fibrational Types) | ||
* Path (Cubical de Morgan Interval) | ||
* 𝑘 (field) | ||
* 𝔸¹ (Affine Line) | ||
* S¹¹ (Motivic Spheres) | ||
* L_{𝔸¹} (Localization) | ||
* Suspension | ||
* Truncⁿ | ||
* NisCover (Nisnevich Descent) | ||
* 𝐾(𝑍,𝑛) (Eilenberg-MacLane 𝔸¹ spaces) | ||
* 𝐵𝐺𝐿 | ||
* 𝑀𝐺𝐿 | ||
* ℕ,ℤ | ||
|
||
## Setup | ||
|
||
``` | ||
-- Base field with operations | ||
def k : Type strict -- Abstract field type | ||
def 0_k : k := sorry | ||
def 1_k : k := sorry | ||
def add_k : k → k → k := sorry | ||
def mul_k : k → k → k := sorry | ||
def neg_k : k → k := sorry | ||
def inv_k : k → k := sorry | ||
-- Field axioms as propositions | ||
def add_comm : ∀ (x y : k), add_k x y = add_k y x := sorry | ||
def add_assoc : ∀ (x y z : k), add_k (add_k x y) z = add_k x (add_k y z) := sorry | ||
def add_zero : ∀ (x : k), add_k x 0_k = x := sorry | ||
def add_neg : ∀ (x : k), add_k x (neg_k x) = 0_k := sorry | ||
def mul_comm : ∀ (x y : k), mul_k x y = mul_k y x := sorry | ||
def mul_assoc : ∀ (x y z : k), mul_k (mul_k x y) z = mul_k x (mul_k y z) := sorry | ||
def mul_one : ∀ (x : k), mul_k x 1_k = x := sorry | ||
def distrib : ∀ (x y z : k), mul_k x (add_k y z) = add_k (mul_k x y) (mul_k x z) := sorry | ||
def one_neq_zero : 1_k ≠ 0_k := sorry | ||
def mul_inv : ∀ (x : k), x ≠ 0_k → mul_k x (inv_k x) = 1_k := sorry | ||
def k_mult : Type strict := { x : k // x ≠ 0_k } | ||
def rec_k {A : k → Type strict} (z : A 0_k) (o : A 1_k) | ||
(a : ∀ (x y : k), A x → A y → A (add_k x y)) | ||
(m : ∀ (x y : k), A x → A y → A (mul_k x y)) | ||
(n : ∀ (x : k), A x → A (neg_k x)) | ||
(i : ∀ (x : k) (h : x ≠ 0_k), A x → A (inv_k x)) | ||
(x : k) : A x := sorry -- Implementation dependent on k | ||
-- Integers | ||
inductive Z : Type strict where | ||
| zero : Z | ||
| pos : Nat → Z | ||
| neg : Nat → Z | ||
-- Affine line | ||
inductive A1 : Type fibrant where | ||
| point : k → A1 | ||
def 0_A1 : A1 := A1.point 0_k | ||
-- Projective line | ||
inductive P1 : Type fibrant where | ||
| zero : P1 | ||
| inf : P1 | ||
| point : A1 → Path P1 zero inf | ||
| eq_zero : Path P1 (point 0_A1) (refl zero) | ||
-- S^{1,1} | ||
inductive S11 : Type fibrant where | ||
| base : S11 | ||
| loop : A1 → Path S11 base base | ||
| zero : Path S11 (loop 0_A1) (refl base) | ||
-- EM spaces | ||
inductive K (n : Nat) : Type fibrant where | ||
| base : K n | ||
| loop_n : Z → Path (Omega_n (K n) (K.base) n) → K n | ||
| trunc_n : isTrunc (n - 1) (K n) | ||
-- BGL | ||
inductive BGL : Type fibrant where | ||
| base : BGL | ||
| cell : Nat → BGL → BGL | ||
| path : Nat → k_mult → Path BGL (cell n base) base | ||
-- MGL | ||
inductive MGL : Type fibrant where | ||
| base : MGL | ||
| thom : S11 → MGL | ||
| orient : k_mult → Path MGL (thom S11.base) base | ||
-- Localization (simplified for brevity) | ||
def L_A1 (X : Type fibrant) : Type fibrant := (i : I) → X | ||
def eta_A1 {X : Type fibrant} (x : X) : L_A1 X := <i> x | ||
-- GW | ||
inductive GW : Type strict where | ||
| zero : GW | ||
| form : (k → k → k) → (∀ (x y : k), f x y = f y x) → GW | ||
| add : GW → GW → GW | ||
| tensor : GW → GW → GW | ||
| neg : GW → GW | ||
-- KH | ||
inductive KH : Type fibrant where | ||
| base : KH | ||
| loop : Nat → k_mult → Path KH base base | ||
def pi_0_0_S : Type fibrant := Trunc 0 (L_A1 Unit) | ||
def to_GW : pi_0_0_S → GW := | ||
λ t => | ||
match t with | ||
| Trunc.tm γ => GW.form (λ x y => mul_k x y) (λ x y => mul_comm x y) | ||
def from_GW : GW → pi_0_0_S := | ||
λ g => | ||
match g with | ||
| GW.zero => Trunc.tm (λ i => Unit.unit) | ||
| GW.form f h => Trunc.tm (λ i => Unit.unit) | ||
| GW.add x y => Trunc.tm (λ i => Unit.unit) | ||
| GW.tensor x y => Trunc.tm (λ i => Unit.unit) | ||
| GW.neg x => Trunc.tm (λ i => Unit.unit) | ||
def iso_pi_0_0_GW : Iso pi_0_0_S GW := { | ||
to := to_GW, | ||
inv := from_GW, | ||
left_inv := λ t => | ||
match t with | ||
| Trunc.tm γ => Trunc.path (<i> λ j => Unit.unit), | ||
right_inv := λ g => | ||
match g with | ||
| GW.zero => refl GW.zero | ||
| GW.form f h => <i> GW.form f h -- Simplified, assumes isomorphism classes | ||
| GW.add x y => sorry -- Requires GW group axioms | ||
| GW.tensor x y => sorry | ||
| GW.neg x => sorry | ||
} | ||
``` | ||
|
||
### Motivic Cohomology | ||
|
||
``` | ||
def Hpq (X : Type fibrant) (p q n : Nat) : Type fibrant := Trunc 0 (L_A1 (Spq p q) → L_A1 (K n)) | ||
def motivic_H (X : Type fibrant) (p q n : Nat) : Hpq (XPlus X) p q n | ||
def H11_P1 : Type fibrant := Trunc 0 (L_A1 S11 → L_A1 (XPlus P1) → L_A1 (K 1)) | ||
def to_k_mult : H11_P1 → k_mult := | ||
λ h => | ||
let f := h (λ i => S11.base) (λ i => XPlus.inl P1.zero) in | ||
let p := rec_K 1 (0_k) (λ z i => mul_k (match z with | ||
| Z.zero => 0_k | ||
| Z.pos m => iterMul m 1_k | ||
| Z.neg m => iterMul m (inv_k 1_k))) | ||
(λ _ => refl 0_k) f in | ||
⟨p 1, λ h0 => one_neq_zero (mul_inv (p 1) h0)⟩ -- Non-zero via axioms | ||
def from_k_mult : k_mult → H11_P1 := | ||
λ ⟨g, h⟩ => | ||
Trunc.tm (λ s => λ x => λ i => | ||
match s i, x i with | ||
| S11.base, XPlus.inl P1.zero => K.loop_n 1 (Z.pos 1) (λ j => mul_k g (inv_k g)) | ||
| _, _ => K.base) | ||
def motivic_H11 : Iso H11_P1 k_mult := { | ||
to := to_k_mult, | ||
inv := from_k_mult, | ||
left_inv := λ h => | ||
let f := h (λ i => S11.base) (λ i => XPlus.inl P1.zero) in | ||
let p := rec_K 1 (0_k) (λ z i => mul_k (match z with | ||
| Z.zero => 0_k | ||
| Z.pos m => iterMul m 1_k | ||
| Z.neg m => iterMul m (inv_k 1_k))) | ||
(λ _ => refl 0_k) f in | ||
Trunc.path (<i> λ s => λ x => λ j => | ||
comp (K 1) [k : I] (if s k = S11.base ∧ x k = XPlus.inl P1.zero | ||
then K.loop_n 1 (Z.pos 1) (λ m => mul_k (p m) (inv_k (p m))) | ||
else K.base) (h s x j)), | ||
right_inv := λ ⟨g, h⟩ => | ||
<j> ⟨g, h⟩ -- mul_k g (inv_k g) = 1_k by mul_inv, h preserved | ||
} | ||
``` | ||
|
||
### Algebraic K-theory | ||
|
||
``` | ||
def K1_X : Type fibrant := Trunc 0 (Omega (L_A1 S11) (eta_A1 S11.base) 1) | ||
def K_n_X (X : Type fibrant) (n : Nat) : Type fibrant | ||
:= pi_n_A1 (K n) n (eta_A1 K.base) | ||
def pi1_S11 : Type fibrant := pi_n_A1 S11 1 S11.base | ||
def to_k_mult_pi1 : pi1_S11 → k_mult := | ||
λ t => | ||
match t with | ||
| Trunc.tm γ => | ||
⟨rec_S11 (0_k) (λ a => mul_k (match a with | A1.point x => x)) | ||
(λ _ => refl 0_k) (γ 1), λ h0 => one_neq_zero (add_zero (neg_k (γ 1)) h0)⟩ | ||
def from_k_mult_pi1 : k_mult → pi1_S11 := | ||
λ ⟨g, h⟩ => Trunc.tm (λ i => S11.loop (A1.point g)) | ||
def k_theory_pi1 : Iso pi1_S11 k_mult := { | ||
to := to_k_mult_pi1, | ||
inv := from_k_mult_pi1, | ||
left_inv := λ t => | ||
match t with | ||
| Trunc.tm γ => | ||
let g := rec_S11 (0_k) (λ a => mul_k (match a with | A1.point x => x)) | ||
(λ _ => refl 0_k) (γ 1) in | ||
Trunc.path (<i> λ j => S11.loop (a1contr (A1.point g) i)), | ||
right_inv := λ ⟨g, h⟩ => | ||
<i> ⟨g, h⟩ | ||
} | ||
``` | ||
|
||
### Algebraic Cobordism | ||
|
||
``` | ||
def MGL_2_1 : Type fibrant := Trunc 0 (L_A1 (Spq 2 1) → L_A1 Unit) | ||
def MGL_21_pt : Type fibrant := Trunc 0 (L_A1 (Spq 2 1) → L_A1 MGL) | ||
def to_k_mult_mgl : MGL_21_pt → k_mult := | ||
λ m => | ||
let f := m (λ i => S11.base) in | ||
⟨rec_MGL (0_k) (λ s => mul_k (rec_S11 (match s with | S11.base => 0_k | S11.loop a => match a with | A1.point x => x))) | ||
(λ g => refl (mul_k g (inv_k g))) f, λ h0 => one_neq_zero (mul_inv f h0)⟩ | ||
def from_k_mult_mgl : k_mult → MGL_21_pt := | ||
λ ⟨g, h⟩ => Trunc.tm (λ s => MGL.orient g) | ||
def cobordism_MGL : Iso MGL_21_pt k_mult := { | ||
to := to_k_mult_mgl, | ||
inv := from_k_mult_mgl, | ||
left_inv := λ m => | ||
let f := m (λ i => S11.base) in | ||
let g := rec_MGL (0_k) (λ s => mul_k (rec_S11 (match s with | S11.base => 0_k | S11.loop a => match a with | A1.point x => x))) | ||
(λ g => refl (mul_k g (inv_k g))) f in | ||
Trunc.path (<i> λ s => MGL.orient g), | ||
right_inv := λ ⟨g, h⟩ => | ||
<i> ⟨g, h⟩ | ||
} | ||
``` | ||
|
||
### Homotopy Groups | ||
|
||
``` | ||
def pi_n_A1_BGL (n : Nat) : Type fibrant := | ||
Trunc 0 (Omega_n (L_A1 BGL) (eta_A1 (sorry : BGL)) n) | ||
``` | ||
|
||
## Bibliography | ||
|
||
* Fabien Morel. <a href="https://web.archive.org/web/20150924032624/http://www.icm2006.org/proceedings/Vol_II/contents/ICM_Vol_2_49.pdf">𝔸¹-algebraic topology</a> | ||
* Vladimir Voevodksy. <a href="https://www.math.ias.edu/vladimir/sites/math.ias.edu.vladimir/files/A1_homotopy_ICM_1998_Berlin_published.pdf">𝔸¹-Homotopy Theory</a> | ||
|
||
## Copyright | ||
|
||
Namdak Tonpa |