diff options
Diffstat (limited to 'lib/ur/top.ur')
-rw-r--r-- | lib/ur/top.ur | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/ur/top.ur b/lib/ur/top.ur index 21522310..01dd4479 100644 --- a/lib/ur/top.ur +++ b/lib/ur/top.ur @@ -61,13 +61,15 @@ con thd3 = K1 ==> K2 ==> K3 ==> fn t :: (K1 * K2 * K3) => t.3 con mapU = K ==> fn f :: K => map (fn _ :: Unit => f) -con ex = fn tf :: (Type -> Type) => - res ::: Type -> (choice :: Type -> tf choice -> res) -> res +con ex = K ==> fn tf :: (K -> Type) => + res ::: Type -> (choice :: K -> tf choice -> res) -> res -fun ex [tf :: (Type -> Type)] [choice :: Type] (body : tf choice) : ex tf = - fn [res] (f : choice :: Type -> tf choice -> res) => +fun ex_intro [K] [tf :: K -> Type] [choice :: K] (body : tf choice) : ex tf = + fn [res] (f : choice :: K -> tf choice -> res) => f [choice] body +fun ex_elim [K] [tf ::: K -> Type] (v : ex tf) [res ::: Type] = @@v [res] + fun compose [t1 ::: Type] [t2 ::: Type] [t3 ::: Type] (f1 : t2 -> t3) (f2 : t1 -> t2) (x : t1) = f1 (f2 x) |