{"id":19387362,"url":"https://github.com/forked-from-1kasper/anders","last_synced_at":"2025-04-23T23:31:11.316Z","repository":{"id":39602087,"uuid":"464472576","full_name":"forked-from-1kasper/anders","owner":"forked-from-1kasper","description":"Anders: Cubical Type Checker","archived":false,"fork":false,"pushed_at":"2023-10-23T16:26:40.000Z","size":4218,"stargazers_count":24,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-02T21:51:25.005Z","etag":null,"topics":["ctt","cubical-type-theory","dependent-type-theory","dependent-types","homotopy-type-theory","hott","mltt","proof-assistant","theorem-prover","type-checker","type-system"],"latest_commit_sha":null,"homepage":"","language":"OCaml","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/forked-from-1kasper.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2022-02-28T12:25:34.000Z","updated_at":"2025-03-14T08:57:35.000Z","dependencies_parsed_at":"2022-06-26T19:31:57.472Z","dependency_job_id":"274f0bc1-93c0-4876-bc11-b980c7bae7a4","html_url":"https://github.com/forked-from-1kasper/anders","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forked-from-1kasper%2Fanders","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forked-from-1kasper%2Fanders/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forked-from-1kasper%2Fanders/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/forked-from-1kasper%2Fanders/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/forked-from-1kasper","download_url":"https://codeload.github.com/forked-from-1kasper/anders/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250531915,"owners_count":21446081,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["ctt","cubical-type-theory","dependent-type-theory","dependent-types","homotopy-type-theory","hott","mltt","proof-assistant","theorem-prover","type-checker","type-system"],"created_at":"2024-11-10T10:09:00.646Z","updated_at":"2025-04-23T23:31:10.964Z","avatar_url":"https://github.com/forked-from-1kasper.png","language":"OCaml","funding_links":[],"categories":[],"sub_categories":[],"readme":"Anders\n======\n\n```OCaml\ntype exp =\n  | EPre of Z.t | EKan of Z.t                                                          (* cosmos *)\n  | EVar of ident | EHole                                                           (* variables *)\n  | EPi of exp * (ident * exp) | ELam of exp * (ident * exp) | EApp of exp * exp           (* pi *)\n  | ESig of exp * (ident * exp) | EPair of tag * exp * exp                              (* sigma *)\n  | EFst of exp | ESnd of exp | EField of exp * string                    (* simga elims/records *)\n  | EId of exp | ERef of exp | EJ of exp                                      (* strict equality *)\n  | EPathP of exp | EPLam of exp | EAppFormula of exp * exp                     (* path equality *)\n  | EI | EDir of dir | EAnd of exp * exp | EOr of exp * exp | ENeg of exp       (* CCHM interval *)\n  | ETransp of exp * exp | EHComp of exp * exp * exp * exp                     (* Kan operations *)\n  | EPartial of exp | EPartialP of exp * exp | ESystem of exp System.t      (* partial functions *)\n  | ESub of exp * exp * exp | EInc of exp * exp | EOuc of exp                (* cubical subtypes *)\n  | EGlue of exp | EGlueElem of exp * exp * exp | EUnglue of exp * exp * exp          (* glueing *)\n  | EEmpty | EIndEmpty of exp                                                               (* 𝟎 *)\n  | EUnit | EStar | EIndUnit of exp                                                         (* 𝟏 *)\n  | EBool | EFalse | ETrue | EIndBool of exp                                                (* 𝟐 *)\n  | EW of exp * (ident * exp) | ESup of exp * exp | EIndW of exp * exp * exp                (* W *)\n  | EIm of exp | EInf of exp | EIndIm of exp * exp | EJoin of exp      (* Infinitesimal Modality *)\n```\n\nAnders is a HoTT proof assistant based on [CCHM](https://arxiv.org/pdf/1611.02108.pdf)\nin flavour of [Cubical Agda](https://agda.readthedocs.io/en/v2.6.2.1/language/cubical.html)\nplus strict equality for 2LTT and ℑ modality for synthetic differential geometry.\n\nFeatures\n--------\n\n* 𝟎, 𝟏, 𝟐, W.\n* Pretypes \u0026 strict equality.\n* Generalized Transport and Homogeneous Composition as primitive Kan operations.\n* Cubical subtypes.\n* Glue types.\n* Coequalizer.\n* ℑ modality.\n* UTF-8 support including universe levels (i.e. `U₁₂₃`).\n* Lean syntax for ΠΣW.\n* Poor man’s records as Σ with named accessors to telescope variables.\n* 1D syntax with top-level declarations.\n\nSetup\n-----\n\n```shell\n$ make\n$ dune exec anders help\n```\n\nSamples\n-------\n\nYou can find some examples in [`library/`](https://github.com/forked-from-1kasper/anders/tree/master/library).\n\n```Lean\ndef inv′ (A : U) (a b : A) (p : Path A a b) : Path A b a :=\n\u003ci\u003e hcomp A (∂ i) (λ (j : I), [(i = 0) → p @ j, (i = 1) → a]) a\n\ndef kan (A : U) (a b c d : A) (p : Path A a c) (q : Path A b d) (r : Path A a b) : Path A c d :=\n\u003ci\u003e hcomp A (∂ i) (λ (j : I), [(i = 0) → p @ j, (i = 1) → q @ j]) (r @ i)\n\ndef comp (A : I → U) (r : I) (u : Π (i : I), Partial (A i) r) (u₀ : (A 0)[r ↦ u 0]) : A 1 :=\nhcomp (A 1) r (λ (i : I), [(r = 1) → transp (\u003cj\u003e A (i ∨ j)) i (u i 1=1)]) (transp (\u003ci\u003e A i) 0 (ouc u₀))\n\ndef ghcomp (A : U) (r : I) (u : I → Partial A r) (u₀ : A[r ↦ u 0]) : A :=\nhcomp A (∂ r) (λ (j : I), [(r = 1) → u j 1=1, (r = 0) → ouc u₀]) (ouc u₀)\n```\n\n```shell\n$ anders check library/everything.anders\n```\n\n## Related publications\n\n### MLTT\n\nType Checker is based on classical MLTT-80 with 0, 1, 2 and W-types.\n\n* \u003ca href=\"https://raw.githubusercontent.com/michaelt/martin-lof/master/pdfs/Bibliopolis-Book-retypeset-1984.pdf\"\u003eIntuitionistic Type Theory\u003c/a\u003e [Martin-Löf]\n\n### CCHM\n\n* \u003ca href=\"http://www.cse.chalmers.se/~simonhu/papers/cubicaltt.pdf\"\u003eCTT: a constructive interpretation of the univalence axiom\u003c/a\u003e [Cohen, Coquand, Huber, Mörtberg]\n* \u003ca href=\"https://staff.math.su.se/anders.mortberg/papers/cubicalhits.pdf\"\u003eOn Higher Inductive Types in Cubical Type Theory\u003c/a\u003e [Coquand, Huber, Mörtberg]\n* \u003ca href=\"https://arxiv.org/pdf/1607.04156.pdf\"\u003eCanonicity for Cubical Type Theory\u003c/a\u003e [Huber]\n* \u003ca href=\"http://www.cse.chalmers.se/~simonhu/papers/can.pdf\"\u003eCanonicity and homotopy canonicity for cubical type theory\u003c/a\u003e [Coquand, Huber, Sattler]\n* \u003ca href=\"https://staff.math.su.se/anders.mortberg/papers/cubicalsynthetic.pdf\"\u003eCubical Synthetic Homotopy Theory\u003c/a\u003e [Mörtberg, Pujet]\n* \u003ca href=\"https://staff.math.su.se/anders.mortberg/papers/unifying.pdf\"\u003eUnifying Cubical Models of Univalent Type Theory\u003c/a\u003e [Cavallo, Mörtberg, Swan]\n* \u003ca href=\"https://staff.math.su.se/anders.mortberg/papers/cubicalagda.pdf\"\u003eCubical Agda: A Dependently Typed PL with Univalence and HITs\u003c/a\u003e [Vezzosi, Mörtberg, Abel]\n* \u003ca href=\"https://simhu.github.io/misc/hcomp.pdf\"\u003eA Cubical Type Theory for Higher Inductive Types\u003c/a\u003e [Huber]\n* \u003ca href=\"http://www.cse.chalmers.se/~simonhu/papers/p.pdf\"\u003eGluing for type theory\u003c/a\u003e [Kaposi, Huber, Sattler]\n* \u003ca href=\"https://doi.org/10.1017/S0960129521000311\"\u003eCubical Methods in HoTT/UF\u003c/a\u003e [Mörtberg]\n\n### HTS\n\n* \u003ca href=\"https://www.math.ias.edu/vladimir/sites/math.ias.edu.vladimir/files/HTS.pdf\"\u003eA simple type system with two identity types\u003c/a\u003e [Voevodsky]\n* \u003ca href=\"https://arxiv.org/pdf/1705.03307.pdf\"\u003eTwo-level type theory and applications\u003c/a\u003e [Annenkov, Capriotti, Kraus, Sattler]\n* \u003ca href=\"https://types21.liacs.nl/download/syntax-for-two-level-type-theory/\"\u003eSyntax for two-level type theory\u003c/a\u003e [Bonacina, Ahrens]\n\n### Modalities\n\nInfinitesimal Modality was added for direct support of Synthetic Differential Geometry.\n\n* \u003ca href=\"https://arxiv.org/pdf/1310.7930v1.pdf\"\u003eDifferential cohomology in a cohesive ∞-topos\u003c/a\u003e [Schreiber]\n* \u003ca href=\"https://arxiv.org/pdf/1806.05966.pdf\"\u003eCartan Geometry in Modal Homotopy Type Theory\u003c/a\u003e [Cherubini]\n* \u003ca href=\"https://hott-uf.github.io/2017/abstracts/cohesivett.pdf\"\u003eDifferential Cohesive Type Theory\u003c/a\u003e [Gross, Licata, New, Paykin, Riley, Shulman, Cherubini]\n* \u003ca href=\"https://arxiv.org/abs/1509.07584\"\u003eBrouwer's fixed-point theorem in real-cohesive homotopy type theory\u003c/a\u003e [Shulman]\n\nAcknowledgements\n----------------\n\n* Univalent People\n\nAuthors\n-------\n\n* \u003ca href=\"https://twitter.com/siegment\"\u003e@siegment\u003c/a\u003e\n* \u003ca href=\"https://twitter.com/tonpaguru\"\u003e@tonpaguru\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fforked-from-1kasper%2Fanders","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fforked-from-1kasper%2Fanders","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fforked-from-1kasper%2Fanders/lists"}