comments
authorAnders Mörtberg <andersmortberg@gmail.com>
Fri, 21 Oct 2016 18:04:31 +0000 (14:04 -0400)
committerAnders Mörtberg <andersmortberg@gmail.com>
Fri, 21 Oct 2016 18:04:31 +0000 (14:04 -0400)
20 files changed:
examples/helix.ctt
examples/injective.ctt
examples/int.ctt
examples/integer.ctt
examples/interval.ctt
examples/list.ctt
examples/nat.ctt
examples/ordinal.ctt
examples/pi.ctt
examples/prelude.ctt
examples/propTrunc.ctt
examples/retract.ctt
examples/sigma.ctt
examples/subset.ctt
examples/susp.ctt
examples/torsor.ctt
examples/univalence.ctt
experiments/multS1.ctt [moved from examples/multS1.ctt with 92% similarity]
experiments/prop.ctt [moved from examples/prop.ctt with 100% similarity]
experiments/quotient.ctt [moved from examples/quotient.ctt with 96% similarity]

index 31b387511ba17bc7957da700b5c9cf84a15c605f..d7e75c1b6f9cb81639fd1f82221c3a263b2d2dc8 100644 (file)
@@ -306,7 +306,8 @@ invMult (x y:S1) : S1 = (multIsEquiv x y).1.1
 
 invS1 (x:S1) : S1 = invMult x base
 
-lemInvS1 : Path S1 (invS1 base) base = <i> comp (<_>S1) (comp (<_>S1) base [(i=1) -> refl S1 base]) [(i=1) -> refl S1 base]
+lemInvS1 : Path S1 (invS1 base) base = 
+  <i> comp (<_>S1) (comp (<_>S1) base [(i=1) -> refl S1 base]) [(i=1) -> refl S1 base]
 
 loopInvS1 : U = Path S1 (invS1 base) (invS1 base)
 
index bd339d45372658e24a3d764193d1eb047237619f..f6be07ff278d7817c390f491162fd0d26ad0b12a 100644 (file)
@@ -1,6 +1,8 @@
+-- Two definitions of injectivity and proof that they can be
+-- identified
 module injective where
 
-import prop
+import equiv
 
 -- First definition of injectivity, informally: if two elements f a0, f a1 are
 -- equal in B, then a0, a1 must be equal in A.
@@ -99,4 +101,4 @@ injPath (A B : U) (f : A -> B) (sA : set A) (sB : set B) :
     Path U (inj0 A B f sA sB) (inj1 A B f sA sB)
   = propPath (inj0 A B f sA sB) (inj1 A B f sA sB)
       (inj01 A B f sA sB) (inj10 A B f sA sB)
-      (prop_inj0 A B f sA sB) (prop_inj1 A B f sA sB)
\ No newline at end of file
+      (prop_inj0 A B f sA sB) (prop_inj1 A B f sA sB)
index 391db88982b9915152bf6e9889395c60d83a8e82..0f4611741ad90695beb6211f47840ee729b7484b 100644 (file)
@@ -1,3 +1,5 @@
+-- The integers as nat + nat with proof that suc is an iso giving a\r
+-- non-trivial path from Z to Z\r
 module int where\r
 \r
 import equiv\r
index 4886fa5f20741df29509e5f374b3f884d4be2765..88923779bcb182baf269da8edba8a8a687eda540 100644 (file)
@@ -1,3 +1,5 @@
+-- The integers as a HIT (identifying +0 with -0). Proof that this
+-- representation is isomorphic to the one in int.ctt
 module integer where
 
 import int
index a0d364542bec7f03321298fba2615049d045f960..29f25498d0d4ba7d84414644e78e121cedd63d41 100644 (file)
@@ -1,10 +1,12 @@
+-- The interval as a HIT. Proof of funtion extensionality from it.
 module interval where
 
-import gradLemma
 import equiv
 
-
-data I = zero | one | seg <i> [(i = 0) -> zero, (i = 1) -> one]
+data I = zero 
+       | one
+       | seg <i> [ (i = 0) -> zero
+                 , (i = 1) -> one ]
 
 -- Proof of funext from the interval
 fext (A B : U) (f g : A -> B) (p : (x : A) -> Path B (f x) (g x)) :
index 83fdac878acbcbccfceced72932023964e15b194..6ad651cda808b97a917d11b5da0bb10c179fbd3d 100644 (file)
@@ -1,8 +1,10 @@
+-- Lists
 module list where
 
 import prelude
 
-data list (A : U) = nil | cons (a : A) (as : list A)
+data list (A : U) = nil 
+                  | cons (a : A) (as : list A)
 
 append (A : U) : list A -> list A -> list A = split
   nil -> idfun (list A)
index 10baab4d0486193bd479f3e328bde55b86d7ce37..47eee38126b9b70e61d5373b623a3218fd2a671c 100644 (file)
@@ -1,3 +1,4 @@
+-- Natural numbers
 module nat where
 
 import bool
index a5fe8638fe27067d31798de53dd5a003f089a2a4..f1fb72d5d3b25bfec77a3637177a18d231ee49ca 100644 (file)
@@ -1,3 +1,4 @@
+-- Ordinals
 module ordinal where
 
 import prelude
index 99aa68eb26f9d74b68bde741353b60390462078b..3f180ce2fd37a344829fc8ca184ee452f9ebd229 100644 (file)
@@ -1,3 +1,4 @@
+-- Characterization of equality in pi types.
 module pi where
 
 import equiv
index ce9a07bb00cc8efbe2c0e8da98f9bb8e0c196ce4..0c8a77de2de8c441b8b4003b9f4db0cfb3a5d1de 100644 (file)
@@ -1,3 +1,6 @@
+-- The prelude. Definition of Path types and basic operations on them
+-- (refl, mapOnPath, funExt...). Definition of prop, set and
+-- groupoid. Some basic data types (empty, unit, or, and).
 module prelude where
 
 -- Identity types
index 146c1655d76be3092f872094a39d98ce246ae070..a4b33fe3191ccbc091dc31c69a64dab3e0731819 100644 (file)
@@ -1,3 +1,4 @@
+-- Propositional truncation as a HIT. (WARNING: not working correctly)
 module propTrunc where
 
 import prelude
index 72a11f034e75614fa4546814c129671f5119a99f..84783b13ef1197544f2b9315f6b2b4f173b0a723 100644 (file)
@@ -1,3 +1,4 @@
+-- Definition of retract and section\r
 module retract where\r
 \r
 import prelude\r
index 949486603bb8203157b079fd45aa5e28ea4fa98d..f3894394c757ea6a255fa93d2b383a22486e3313 100644 (file)
@@ -1,3 +1,4 @@
+-- Various results about sigma types.
 module sigma where
 
 import equiv
index 1e279f0f12ef7ea34b88167afdee32ad7c5df1e5..0df6500f54b45a8632319080b54847bbf9ccc0b4 100644 (file)
@@ -1,3 +1,4 @@
+-- Two definitions of a subset and a proof that they are equal.
 module subset where
 
 import injective
@@ -181,4 +182,4 @@ subsetIso1 (A : U) (sA : set A) : (s1 : subset1 A sA) ->
 -- Show that we can identify the two definitions of subsets with each other
 subsetPath (A : U) (sA : set A) : Path U (subset0 A sA) (subset1 A sA)
   = isoPath (subset0 A sA) (subset1 A sA) (subset01 A sA) (subset10 A sA)
-      (subsetIso1 A sA) (subsetIso0 A sA)
\ No newline at end of file
+      (subsetIso1 A sA) (subsetIso0 A sA)
index b051f5b512218f9c0e53984312b339ea690f952d..8a5394a292fcf0688f8df9faf6d4aca790954eec 100644 (file)
@@ -1,10 +1,14 @@
+-- Suspension. Definition of the circle as the suspension of bool and\r
+-- a proof that this is equal to the standard HIT representation of\r
+-- the circle.\r
 module susp where\r
 \r
 import circle\r
 \r
 data susp (A : U) = north\r
                   | south\r
-                  | merid (a:A) <i> [(i=0) -> north, (i=1) -> south]\r
+                  | merid (a : A) <i> [ (i=0) -> north\r
+                                      , (i=1) -> south ]\r
 \r
 -- n-spheres\r
 sphere : nat -> U = split\r
index 85b5b0a6527db775849f9fa7c1b0c78833e437cb..c9faa9e67e63d4ce9d6d9cb6641c09a0571009cc 100644 (file)
@@ -1,9 +1,8 @@
+-- Torsors. Proof that S1 is equal to BZ, the classifying space of Z.\r
 module torsor where\r
-import prelude\r
+\r
 import int\r
-import circle\r
 import helix\r
-import univalence\r
 \r
 --\r
 \r
index 6619df2054d53e1f4296003470b7aaee9b1b4dbe..104665755b353fae5cff753c206dfd2dd64c8e92 100644 (file)
@@ -1,8 +1,8 @@
 -- This file contains two proofs of the univalence axiom. One using
 -- unglue (section 7.2) and a direct one (appendix B of the cubicaltt
 -- paper). The normal form of the first proof can be computed (and
--- typecheck, see nthmUniv) while the second one uses very much memory
--- and don't terminate in reasonable time.
+-- typechecked) while the second one uses very much memory and don't
+-- terminate in reasonable time.
 module univalence where
 
 import retract
similarity index 92%
rename from examples/multS1.ctt
rename to experiments/multS1.ctt
index c6bf3ef9e26408317bb262766ea1d8b876eb75d6..761cc840004c115e8b875d0b7bf65b799f615501 100644 (file)
@@ -1,30 +1,6 @@
 module multS1 where
 
-import circle
-
--- another inverse function
-
--- the multiplication is invertible
-
-lemPropFib (P:S1 -> U) (pP:(x:S1) -> prop (P x)) (bP: P base) : (x:S1) -> P x = split
- base -> bP
- loop @ i -> (lemPropF S1 P pP base base loop1 bP bP) @ i
-
-idL : (x : S1) -> Path S1 (mult base x) x = split
-       base -> refl S1 base
-       loop @ i -> <j> loop1 @ i
-
-multIsEquiv : (x:S1) -> isEquiv S1 S1 (mult x) =  lemPropFib P pP bP 
- where P (x:S1) : U            = isEquiv S1 S1 (mult x)
-       pP (x:S1) : prop (P x)  = propIsEquiv S1 S1 (mult x)
-       rem : Path (S1 -> S1) (idfun S1) (mult base) = <i>\ (x:S1) -> idL x @ -i
-       bP : P base = subst (S1->S1) (isEquiv S1 S1)  (idfun S1) (mult base) rem (idIsEquiv S1)
-
--- inverse of multiplication by x
-
-invMult (x y:S1) : S1 = (multIsEquiv x y).1.1
-
-invS1 (x:S1) : S1 = invMult x base
+import helix
 
 pt0 : S1 = mapOnPath S1 S1 invS1 base base loop2@0
 test1 : S1 = mapOnPath S1 S1 invS1 base base loop2@1
similarity index 100%
rename from examples/prop.ctt
rename to experiments/prop.ctt
similarity index 96%
rename from examples/quotient.ctt
rename to experiments/quotient.ctt
index 7669e2d9be245532c4a77b63f21c7cfd2d917baa..7b88dae772ba1fe9c69d9b3713479f1d93de4d11 100644 (file)
@@ -1,6 +1,6 @@
+-- Experimental implementation of quotient HIT (not finished)
 module quotient where
 
-import prelude
 import circle
 
 -- Quotient A by R