From 8791efda0cf7392144117cf780bfb6d687d2da5e Mon Sep 17 00:00:00 2001 From: Chloe Brown Date: Tue, 4 Jul 2023 12:29:30 +0100 Subject: Add more built-in functions. --- src/Encoded/Arith.idr | 55 +---------------------------------------------- src/Encoded/Bool.idr | 4 ++-- src/Encoded/Container.idr | 21 ++++++++---------- src/Encoded/Fin.idr | 2 +- 4 files changed, 13 insertions(+), 69 deletions(-) (limited to 'src/Encoded') diff --git a/src/Encoded/Arith.idr b/src/Encoded/Arith.idr index fe9bc68..4dd3e10 100644 --- a/src/Encoded/Arith.idr +++ b/src/Encoded/Arith.idr @@ -21,48 +21,9 @@ rec = Abs $ Abs $ Abs $ in App snd [ N ~> N) ctx -plus = Abs' (\n => Rec n Id (Abs' (Abs' Suc .))) - -export -pred : Term (N ~> N) ctx --- pred = Abs' (\n => App rec [ App - (Rec n - (Const Zero) - (Abs $ Abs $ - let f = Var (There Here) in - let k = Var Here in - Rec k - (Lit 1) - (Const $ - Rec (App f [ N ~> N) ctx -minus = Abs $ Abs $ - let m = Var $ There Here in - let n = Var Here in - Rec n m pred - -export -mult : Term (N ~> N ~> N) ctx -mult = Abs' (\n => - Rec n - (Const Zero) - (Abs $ Abs $ - let f = Var $ There Here in - let m = Var Here in - App plus [ N ~> B) ctx -lte = Abs' (\m => isZero . App minus [ isZero . App (Op Minus) [ N ~> B) ctx @@ -70,17 +31,3 @@ equal = Abs $ Abs $ let m = Var $ There Here in let n = Var Here in App and [ N ~> N * N) ctx -divmod = Abs $ Abs $ - let n = Var (There Here) in - let d = Var Here in - Rec - n - (App pair [ - App if' - [ ty ~> ty ~> ty) ctx diff --git a/src/Encoded/Container.idr b/src/Encoded/Container.idr index 1334bc2..800623a 100644 --- a/src/Encoded/Container.idr +++ b/src/Encoded/Container.idr @@ -83,31 +83,28 @@ getFuel : {cont : Container} -> {c : Case} -> Term (semCase c (W cont) ~> N) ctx -getFuel {c = (tag, k)} = App foldr [ Term (Fin k ~> (N ~> N * N) ~> (N ~> N * N)) ctx -stepOffset = Abs $ Abs $ Abs $ - let i = Var (There $ There Here) in - let f = Var (There Here) in - let x = Var Here in +stepOffset = AbsAll [<_,_,_] (\[ App bimap -- Suc is for the initial tag - [ Suc $ App forget [ Op (Lit k) * n) , App f [ {c : Case} -> Term (semCase c (W cont) ~> N ~> N * N) ctx -getOffset {c = (tag, 0)} = Const $ Const $ App pair [ - App cons - [ let dm = App (divmod' k) [ N ~> N) ctx -calcIndex = Abs' (\bs => App (plus . fst) [ App fst [ diff --git a/src/Encoded/Fin.idr b/src/Encoded/Fin.idr index 0029760..3f369cf 100644 --- a/src/Encoded/Fin.idr +++ b/src/Encoded/Fin.idr @@ -40,4 +40,4 @@ forget = Id export divmod' : (k : Nat) -> {auto 0 ok : NonZero k} -> Term (N ~> N * Fin k) ctx -divmod' k = Abs' (\n => App divmod [ App pair [