package anders
CCHM homotopy system type checker with strict equality
Install
Dune Dependency
Authors
Maintainers
Sources
0.7.2.tar.gz
md5=e9f12921b951fa2529481390c6fb3864
sha512=afc27c83c4bdcb5fb93e1b58bdcc9b08a28f002f15d0e27a7e509666ca3f6bad47fc7296a72cd68aeee7d24175d2c64ee4688edeedc79adedab7cb1f5bb19760
Description
Published: 14 Jul 2021
README
Anders
Homotopy Type System with Strict Equality.
Features
- Homepage: https://groupoid.space/homotopy
- Fibrant MLTT-style ΠΣ primitives with strict equality in 500 LOC
- Cofibrant CHM-style I primitives with pretypes hierarchy Vₙ in 500 LOC
- Generalized Transport and Homogeneous Composition core Kan operations
- Partial Elements
- Cubical Subtypes
- Strict Equality on pretypes
- Parser in 80 LOC
- Lexer in 80 LOC
- UTF-8 support including universe levels
- Lean syntax for ΠΣ
- 1D syntax with top-level declarations
- Groupoid Infinity CCHM base library: https://groupoid.space/math
- Best suited for academic papers and fast type checking
Setup
$ opam install anders
Samples
You can find some examples in the share
directory of the Anders package.
def comp-Path⁻¹ (A : U) (a b : A) (p : Path A a b)
: Path (Path A a a) (comp-Path A a b a p (<i> p @ -i)) (<_> a)
:= <k j> hcomp A (-j ∨ j ∨ k)
(λ (i : I), [(j = 0) → a,
(j = 1) → p @ -i ∧ -k,
(k = 1) → a])
(inc (p @ j ∧ -k))
def 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
:= <i> hcomp A (i ∨ -i) (λ (j : I), [(i = 0) → p @ j, (i = 1) → q @ j]) (inc (r @ i))
def comp (A : I → U) (r : I) (u : Π (i : I), Partial (A i) r) (u₀ : (A 0)[r ↦ u 0]) : A 1
:= hcomp (A 1) r (λ (i : I), [(φ : r = 1) → transp (<j> A (i ∨ j)) i (u i φ)])
(inc (transp (<i> A i) 0 (ouc u₀)))
$ anders check path.anders
CCHM
Anders was built by strictly following these publications:
- Cubical Type Theory: a constructive interpretation of the univalence axiom [Cohen, Coquand, Huber, Mörtberg]
- On Higher Inductive Types in Cubical Type Theory [Coquand, Huber, Mörtberg]
- Canonicity for Cubical Type Theory [Huber]
- Canonicity and homotopy canonicity for cubical type theory [Coquand, Huber, Sattler]
- Cubical Synthetic Homotopy Theory [Mörtberg, Pujet]
- Unifying Cubical Models of Univalent Type Theory [Cavallo, Mörtberg, Swan]
- Cubical Agda: A Dependently Typed PL with Univalence and HITs [Vezzosi, Mörtberg, Abel]
- A Cubical Type Theory for Higher Inductive Types [Huber]
- Gluing for type theory [Kaposi, Huber, Sattler]
- Cubical Methods in HoTT/UF [Mörtberg]
We tried to bring in as little of ourselves as possible.
HTS
Type system with two identities.
- A simple type system with two identity types [Voevodsky]
- Two-level type theory and applications [Annenkov, Capriotti, Kraus, Sattler]
- Syntax for two-level type theory [Bonacina, Ahrens]
Benchmarks
$ time make
real 0m1.254s
user 0m0.981s
sys 0m0.183s
$ time for i in lib/* ; do ./anders.native check $i ; done
real 0m0.083s
user 0m0.080s
sys 0m0.004s
Acknowledgements
- Univalent People
Authors
- Siegmentation Fault
- 5HT
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
On This Page