From 82783476f330801b54402bdcc4723add44a963dc Mon Sep 17 00:00:00 2001 From: Greg Brown Date: Tue, 29 Oct 2024 18:58:45 +0000 Subject: Write a fuelled reducer for System T. --- program/syst-to-primrose.prim | 77 ------------------------------------------- 1 file changed, 77 deletions(-) delete mode 100644 program/syst-to-primrose.prim (limited to 'program/syst-to-primrose.prim') diff --git a/program/syst-to-primrose.prim b/program/syst-to-primrose.prim deleted file mode 100644 index 8ba1e6a..0000000 --- a/program/syst-to-primrose.prim +++ /dev/null @@ -1,77 +0,0 @@ -let Prim = -(\X => - [ Var: Nat - , Lit: Nat - , Suc: X - , Abs: X - , App: - , Unit: <> - , Pair: - , Fst: X - , Snd: X - , Absurd: - , Inl: X - , Inr: X - , Case: - , Expand: X - , Contract: X - , Fold: - , Let: - , Annot: - < Term: X - , Type: (\Y => - [ Var: Nat - , N: <> - , Arrow: - , Unit: <> - , Pair: - , Bottom: <> - , Sum: - , Fix: Y - ]) - > - ]) -in -let lift (f : Nat -> Nat) (x : Nat) : Nat = - case !x of - { Z u => 0 - ; S n => suc (f n) - } -in -let rename (t : Prim) : (Nat -> Nat) -> Prim = - foldcase t by - { Var n => \f => ~(Var (f n)) - ; Lit n => \f => ~(Lit n) - ; Suc t => \f => ~(Suc (t f)) - ; Abs t => \f => ~(Abs (t (lift f))) - ; App p => \f => ~(App ) - ; Unit u => \f => ~(Unit u) - ; Pair p => \f => ~(Pair ) - ; Fst t => \f => ~(Fst (t f)) - ; Snd t => \f => ~(Snd (t f)) - ; Absurd p => \f => ~(Absurd ) - ; Inl t => \f => ~(Inl (t f)) - ; Inr t => \f => ~(Inr (t f)) - ; Case p => \f => ~(Case ) - ; Expand t => \f => ~(Expand (t f)) - ; Contract t => \f => ~(Contract (t f)) - ; Fold p => \f => ~(Fold ) - ; Let p => \f => ~(Let ) - ; Annot p => \f => ~(Annot ) - } -in -\p => foldcase p by - { Var n => ~(Var n) - ; Zero u => ~(Lit 0) - ; Suc e => ~(Suc e) - ; Abs e => ~(Abs e) - ; App p => ~(App p) - ; Rec p => ~(Fold - < Target: p.Target - , Body: ~(Case - < Target: ~(Var 0) - , Left: rename p.Zero (\x => suc (suc x)) - , Right: rename p.Suc (lift suc) - >) - >) - } -- cgit v1.2.3