diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..98ec2e9 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +fabien.groupoid.space diff --git a/README.md b/README.md new file mode 100644 index 0000000..9432fd5 --- /dev/null +++ b/README.md @@ -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 := 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 ( λ j => Unit.unit), + right_inv := λ g => + match g with + | GW.zero => refl GW.zero + | GW.form f h => 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 ( λ 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⟩ => + ⟨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 ( λ j => S11.loop (a1contr (A1.point g) i)), + right_inv := λ ⟨g, h⟩ => + ⟨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 ( λ s => MGL.orient g), + right_inv := λ ⟨g, h⟩ => + ⟨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. 𝔸¹-algebraic topology +* Vladimir Voevodksy. 𝔸¹-Homotopy Theory + +## Copyright + +Namdak Tonpa