{"id":25882076,"url":"https://github.com/groupoid/fabien","last_synced_at":"2026-02-01T02:02:00.683Z","repository":{"id":280181113,"uuid":"941201176","full_name":"groupoid/fabien","owner":"groupoid","description":"🧊 A¹ Теорія гомотопій","archived":false,"fork":false,"pushed_at":"2025-03-01T19:09:54.000Z","size":8,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-08T12:38:30.917Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://fabien.groupoid.space/","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/groupoid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-01T18:20:26.000Z","updated_at":"2025-03-08T09:51:48.000Z","dependencies_parsed_at":"2025-03-01T20:22:58.945Z","dependency_job_id":"c46cba2e-b7e8-4b03-8521-315f6700f8e2","html_url":"https://github.com/groupoid/fabien","commit_stats":null,"previous_names":["groupoid/fabien"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/groupoid/fabien","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/groupoid%2Ffabien","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/groupoid%2Ffabien/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/groupoid%2Ffabien/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/groupoid%2Ffabien/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/groupoid","download_url":"https://codeload.github.com/groupoid/fabien/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/groupoid%2Ffabien/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28964416,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-01T01:25:30.373Z","status":"online","status_checked_at":"2026-02-01T02:00:08.102Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-02T15:57:08.151Z","updated_at":"2026-02-01T02:02:00.668Z","avatar_url":"https://github.com/groupoid.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Fabien Morel: 𝔸¹ Type Theory\n\nA^1-Homotopy Fabien Morel Type Theory (FMTT) is built on top of: 1) Cubical\nType Theory (CTT), 2) Base field k, 3) A^1-indexed affine line, 4) Localization\nmodality to enforce A^1-contractibility, 5) Suspension, 6) Nisnevich\nCover, 7) K(Z,n), 8) N,Z,9) MGL (Motivic cobordism spectrum), 10) BGL (Classifying\nspace of the general linear group). It bridges type theory and motivic\nhomotopy, offering a lightweight, extensible platform for formalizing\nalgebraic geometry's homotopical landscape. Applications to motivic\ncohomology and stable homotopy categories are discussed.\n\n## Intro\n\nTargets:\n\n* Motivic Cohomology: `𝐻¹¹(ℙ,ℤ(1))=𝑘ˣ`.\n* Algebraic K-theory: `𝜋₁ᴬ(S¹¹)=𝑘ˣ`.\n* Algebraic Cobordism: `𝑀𝐺𝐿²¹(pt)≅𝑘ˣ`.\n\nType Formers:\n\n* U,V (Fibrant, Pretypes universes)\n* ΠΣ (Dependent Fibrational Types)\n* Path (Cubical de Morgan Interval)\n* 𝑘 (field)\n* 𝔸¹ (Affine Line)\n* S¹¹ (Motivic Spheres)\n* L_{𝔸¹} (Localization)\n* Suspension\n* Truncⁿ\n* NisCover (Nisnevich Descent)\n* 𝐾(𝑍,𝑛) (Eilenberg-MacLane 𝔸¹ spaces)\n* 𝐵𝐺𝐿\n* 𝑀𝐺𝐿\n* ℕ,ℤ\n\n## Setup\n\n```\n-- Base field with operations\ndef k : Type strict  -- Abstract field type\ndef 0_k : k := sorry\ndef 1_k : k := sorry\ndef add_k : k → k → k := sorry\ndef mul_k : k → k → k := sorry\ndef neg_k : k → k := sorry\ndef inv_k : k → k := sorry\n\n-- Field axioms as propositions\ndef add_comm : ∀ (x y : k), add_k x y = add_k y x := sorry\ndef add_assoc : ∀ (x y z : k), add_k (add_k x y) z = add_k x (add_k y z) := sorry\ndef add_zero : ∀ (x : k), add_k x 0_k = x := sorry\ndef add_neg : ∀ (x : k), add_k x (neg_k x) = 0_k := sorry\ndef mul_comm : ∀ (x y : k), mul_k x y = mul_k y x := sorry\ndef mul_assoc : ∀ (x y z : k), mul_k (mul_k x y) z = mul_k x (mul_k y z) := sorry\ndef mul_one : ∀ (x : k), mul_k x 1_k = x := sorry\ndef distrib : ∀ (x y z : k), mul_k x (add_k y z) = add_k (mul_k x y) (mul_k x z) := sorry\ndef one_neq_zero : 1_k ≠ 0_k := sorry\ndef mul_inv : ∀ (x : k), x ≠ 0_k → mul_k x (inv_k x) = 1_k := sorry\n\ndef k_mult : Type strict := { x : k // x ≠ 0_k }\n\ndef rec_k {A : k → Type strict} (z : A 0_k) (o : A 1_k) \n          (a : ∀ (x y : k), A x → A y → A (add_k x y)) \n          (m : ∀ (x y : k), A x → A y → A (mul_k x y)) \n          (n : ∀ (x : k), A x → A (neg_k x)) \n          (i : ∀ (x : k) (h : x ≠ 0_k), A x → A (inv_k x)) \n          (x : k) : A x := sorry  -- Implementation dependent on k\n\n-- Integers\ninductive Z : Type strict where\n  | zero : Z\n  | pos : Nat → Z\n  | neg : Nat → Z\n\n-- Affine line\ninductive A1 : Type fibrant where\n  | point : k → A1\ndef 0_A1 : A1 := A1.point 0_k\n\n-- Projective line\ninductive P1 : Type fibrant where\n  | zero : P1\n  | inf : P1\n  | point : A1 → Path P1 zero inf\n  | eq_zero : Path P1 (point 0_A1) (refl zero)\n\n-- S^{1,1}\ninductive S11 : Type fibrant where\n  | base : S11\n  | loop : A1 → Path S11 base base\n  | zero : Path S11 (loop 0_A1) (refl base)\n\n-- EM spaces\ninductive K (n : Nat) : Type fibrant where\n  | base : K n\n  | loop_n : Z → Path (Omega_n (K n) (K.base) n) → K n\n  | trunc_n : isTrunc (n - 1) (K n)\n\n-- BGL\ninductive BGL : Type fibrant where\n  | base : BGL\n  | cell : Nat → BGL → BGL\n  | path : Nat → k_mult → Path BGL (cell n base) base\n\n-- MGL\ninductive MGL : Type fibrant where\n  | base : MGL\n  | thom : S11 → MGL\n  | orient : k_mult → Path MGL (thom S11.base) base\n\n-- Localization (simplified for brevity)\ndef L_A1 (X : Type fibrant) : Type fibrant := (i : I) → X\ndef eta_A1 {X : Type fibrant} (x : X) : L_A1 X := \u003ci\u003e x\n\n-- GW\ninductive GW : Type strict where\n  | zero : GW\n  | form : (k → k → k) → (∀ (x y : k), f x y = f y x) → GW\n  | add : GW → GW → GW\n  | tensor : GW → GW → GW\n  | neg : GW → GW\n\n-- KH\ninductive KH : Type fibrant where\n  | base : KH\n  | loop : Nat → k_mult → Path KH base base\n\ndef pi_0_0_S : Type fibrant := Trunc 0 (L_A1 Unit)\n\ndef to_GW : pi_0_0_S → GW := \n  λ t =\u003e \n    match t with\n    | Trunc.tm γ =\u003e GW.form (λ x y =\u003e mul_k x y) (λ x y =\u003e mul_comm x y)\n\ndef from_GW : GW → pi_0_0_S := \n  λ g =\u003e \n    match g with\n    | GW.zero =\u003e Trunc.tm (λ i =\u003e Unit.unit)\n    | GW.form f h =\u003e Trunc.tm (λ i =\u003e Unit.unit)\n    | GW.add x y =\u003e Trunc.tm (λ i =\u003e Unit.unit)\n    | GW.tensor x y =\u003e Trunc.tm (λ i =\u003e Unit.unit)\n    | GW.neg x =\u003e Trunc.tm (λ i =\u003e Unit.unit)\n\ndef iso_pi_0_0_GW : Iso pi_0_0_S GW := {\n  to := to_GW,\n  inv := from_GW,\n  left_inv := λ t =\u003e \n    match t with\n    | Trunc.tm γ =\u003e Trunc.path (\u003ci\u003e λ j =\u003e Unit.unit),\n  right_inv := λ g =\u003e \n    match g with\n    | GW.zero =\u003e refl GW.zero\n    | GW.form f h =\u003e \u003ci\u003e GW.form f h  -- Simplified, assumes isomorphism classes\n    | GW.add x y =\u003e sorry  -- Requires GW group axioms\n    | GW.tensor x y =\u003e sorry\n    | GW.neg x =\u003e sorry\n}\n```\n\n### Motivic Cohomology\n\n```\n\ndef Hpq (X : Type fibrant) (p q n : Nat) : Type fibrant := Trunc 0 (L_A1 (Spq p q) → L_A1 (K n))\ndef motivic_H (X : Type fibrant) (p q n : Nat) : Hpq (XPlus X) p q n\n\ndef H11_P1 : Type fibrant := Trunc 0 (L_A1 S11 → L_A1 (XPlus P1) → L_A1 (K 1))\n\ndef to_k_mult : H11_P1 → k_mult := \n  λ h =\u003e \n    let f := h (λ i =\u003e S11.base) (λ i =\u003e XPlus.inl P1.zero) in\n    let p := rec_K 1 (0_k) (λ z i =\u003e mul_k (match z with \n                                            | Z.zero =\u003e 0_k \n                                            | Z.pos m =\u003e iterMul m 1_k \n                                            | Z.neg m =\u003e iterMul m (inv_k 1_k))) \n                     (λ _ =\u003e refl 0_k) f in\n    ⟨p 1, λ h0 =\u003e one_neq_zero (mul_inv (p 1) h0)⟩  -- Non-zero via axioms\n\ndef from_k_mult : k_mult → H11_P1 := \n  λ ⟨g, h⟩ =\u003e \n    Trunc.tm (λ s =\u003e λ x =\u003e λ i =\u003e \n      match s i, x i with\n      | S11.base, XPlus.inl P1.zero =\u003e K.loop_n 1 (Z.pos 1) (λ j =\u003e mul_k g (inv_k g))\n      | _, _ =\u003e K.base)\n\ndef motivic_H11 : Iso H11_P1 k_mult := {\n  to := to_k_mult,\n  inv := from_k_mult,\n  left_inv := λ h =\u003e \n    let f := h (λ i =\u003e S11.base) (λ i =\u003e XPlus.inl P1.zero) in\n    let p := rec_K 1 (0_k) (λ z i =\u003e mul_k (match z with \n                                            | Z.zero =\u003e 0_k \n                                            | Z.pos m =\u003e iterMul m 1_k \n                                            | Z.neg m =\u003e iterMul m (inv_k 1_k))) \n                     (λ _ =\u003e refl 0_k) f in\n    Trunc.path (\u003ci\u003e λ s =\u003e λ x =\u003e λ j =\u003e \n      comp (K 1) [k : I] (if s k = S11.base ∧ x k = XPlus.inl P1.zero \n                          then K.loop_n 1 (Z.pos 1) (λ m =\u003e mul_k (p m) (inv_k (p m))) \n                          else K.base) (h s x j)),\n  right_inv := λ ⟨g, h⟩ =\u003e \n    \u003cj\u003e ⟨g, h⟩  -- mul_k g (inv_k g) = 1_k by mul_inv, h preserved\n}\n```\n\n### Algebraic K-theory\n\n```\n\ndef K1_X : Type fibrant := Trunc 0 (Omega (L_A1 S11) (eta_A1 S11.base) 1)\n\ndef K_n_X (X : Type fibrant) (n : Nat) : Type fibrant\n := pi_n_A1 (K n) n (eta_A1 K.base)\n\ndef pi1_S11 : Type fibrant := pi_n_A1 S11 1 S11.base\n\n\ndef to_k_mult_pi1 : pi1_S11 → k_mult := \n  λ t =\u003e \n    match t with\n    | Trunc.tm γ =\u003e \n      ⟨rec_S11 (0_k) (λ a =\u003e mul_k (match a with | A1.point x =\u003e x)) \n              (λ _ =\u003e refl 0_k) (γ 1), λ h0 =\u003e one_neq_zero (add_zero (neg_k (γ 1)) h0)⟩\n\ndef from_k_mult_pi1 : k_mult → pi1_S11 := \n  λ ⟨g, h⟩ =\u003e Trunc.tm (λ i =\u003e S11.loop (A1.point g))\n\ndef k_theory_pi1 : Iso pi1_S11 k_mult := {\n  to := to_k_mult_pi1,\n  inv := from_k_mult_pi1,\n  left_inv := λ t =\u003e \n    match t with\n    | Trunc.tm γ =\u003e \n      let g := rec_S11 (0_k) (λ a =\u003e mul_k (match a with | A1.point x =\u003e x)) \n                      (λ _ =\u003e refl 0_k) (γ 1) in\n      Trunc.path (\u003ci\u003e λ j =\u003e S11.loop (a1contr (A1.point g) i)),\n  right_inv := λ ⟨g, h⟩ =\u003e \n    \u003ci\u003e ⟨g, h⟩\n}\n```\n\n### Algebraic Cobordism\n\n```\ndef MGL_2_1 : Type fibrant := Trunc 0 (L_A1 (Spq 2 1) → L_A1 Unit)\ndef MGL_21_pt : Type fibrant := Trunc 0 (L_A1 (Spq 2 1) → L_A1 MGL)\n\ndef to_k_mult_mgl : MGL_21_pt → k_mult := \n  λ m =\u003e \n    let f := m (λ i =\u003e S11.base) in\n    ⟨rec_MGL (0_k) (λ s =\u003e mul_k (rec_S11 (match s with | S11.base =\u003e 0_k | S11.loop a =\u003e match a with | A1.point x =\u003e x))) \n             (λ g =\u003e refl (mul_k g (inv_k g))) f, λ h0 =\u003e one_neq_zero (mul_inv f h0)⟩\n\ndef from_k_mult_mgl : k_mult → MGL_21_pt := \n  λ ⟨g, h⟩ =\u003e Trunc.tm (λ s =\u003e MGL.orient g)\n\ndef cobordism_MGL : Iso MGL_21_pt k_mult := {\n  to := to_k_mult_mgl,\n  inv := from_k_mult_mgl,\n  left_inv := λ m =\u003e \n    let f := m (λ i =\u003e S11.base) in\n    let g := rec_MGL (0_k) (λ s =\u003e mul_k (rec_S11 (match s with | S11.base =\u003e 0_k | S11.loop a =\u003e match a with | A1.point x =\u003e x))) \n                    (λ g =\u003e refl (mul_k g (inv_k g))) f in\n    Trunc.path (\u003ci\u003e λ s =\u003e MGL.orient g),\n  right_inv := λ ⟨g, h⟩ =\u003e \n    \u003ci\u003e ⟨g, h⟩\n}\n```\n\n### Homotopy Groups\n\n```\ndef pi_n_A1_BGL (n : Nat) : Type fibrant := \n  Trunc 0 (Omega_n (L_A1 BGL) (eta_A1 (sorry : BGL)) n)\n```\n\n## Bibliography\n\n* Fabien Morel. \u003ca href=\"https://web.archive.org/web/20150924032624/http://www.icm2006.org/proceedings/Vol_II/contents/ICM_Vol_2_49.pdf\"\u003e𝔸¹-algebraic topology\u003c/a\u003e\n* Vladimir Voevodksy. \u003ca href=\"https://www.math.ias.edu/vladimir/sites/math.ias.edu.vladimir/files/A1_homotopy_ICM_1998_Berlin_published.pdf\"\u003e𝔸¹-Homotopy Theory\u003c/a\u003e\n\n## Copyright\n\nNamdak Tonpa\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgroupoid%2Ffabien","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgroupoid%2Ffabien","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgroupoid%2Ffabien/lists"}