Add lemSimpl
authorAnders <mortberg@chalmers.se>
Mon, 8 Jun 2015 12:26:44 +0000 (14:26 +0200)
committerAnders <mortberg@chalmers.se>
Mon, 8 Jun 2015 12:26:44 +0000 (14:26 +0200)
examples/prelude.ctt

index ecaebd579740ce6248aa41442b401a1f314c9782..986081cf68c1448edb3109210c007494b8eba88f 100644 (file)
@@ -79,12 +79,20 @@ kan (A : U) (a b c d : A) (p : Id A a b) (q : Id A a c)
                           (r : Id A b d) : Id A c d =
   <i> comp (<_>A) (p @ i) [ (i = 0) -> q, (i = 1) -> r ]
 
--- lemSimpl (A : U) (a b c : A) (p : Id A a b) (q q' : Id A b c)
---           (s : Id (Id A a c) (compId A a b c p q) (compId A a b c p q')) : Id (Id A b c) q q' =
---   <j> <k> comp A a [ (j = 0) -> <i> comp A (p @ i) [ (i=1) -> <l> q @ k /\ l],
---                      (j = 1) -> <i> comp A (p @ i) [ (i=1) -> <l> q' @ k /\ l],
---                      (k = 0)  -> p,
---                      (k = 1)  -> s @ j ]
+lemSimpl (A : U) (a b c : A) (p : Id A a b) (q q' : Id A b c)
+  (s : Id (Id A a c) (compId A a b c p q) (compId A a b c p q')) :
+  Id (Id A b c) q q' =
+   <j k> comp (<_> A) a
+           [ (j = 0) -> <i> comp (<_> A) (p @ i)
+                              [ (k = 0) -> <l> p @ i
+                              , (i = 0) -> <l> a
+                              , (i = 1) -> <l> q @ k /\ l]
+           , (j = 1) -> <i> comp (<_> A) (p @ i)
+                              [ (k = 0) -> <l> p @ i
+                              , (i = 0) -> <l> a
+                              , (i = 1) -> <l> q' @ k /\ l]
+           , (k = 0)  -> p
+           , (k = 1)  -> s @ j ]
 
 idfun (A : U) (a : A) : A = a
 
@@ -211,7 +219,7 @@ decConst (A : U) : dec A -> exConst A = split
   inl a -> (\ (x:A)  -> a, \ (x y:A) -> refl A a)
   inr h -> (\ (x:A) -> x, \ (x y:A) -> efq (Id A x y) (h x))
 
-stableConst (A : U) (sA: stable A) : exConst A = 
+stableConst (A : U) (sA: stable A) : exConst A =
  (\ (x:A) -> sA (dNeg A x),\ (x y:A) -> <i>sA (propNeg (neg A) (dNeg A x) (dNeg A y) @ i))
 
 discrete (A : U) : U = (a b : A) -> dec (Id A a b)