summaryrefslogtreecommitdiff
path: root/program/syst-to-primrose.pty
diff options
context:
space:
mode:
authorGreg Brown <greg.brown01@ed.ac.uk>2024-10-09 16:57:47 +0100
committerGreg Brown <greg.brown01@ed.ac.uk>2024-10-09 16:57:47 +0100
commitd926ce9f2d1144f329598a30b3ed2e48899519b2 (patch)
treeb6eaa7ba40437b902e3ca9c8343ee44270a46d2e /program/syst-to-primrose.pty
parent8b326bb4a879be72cb6382519350cbb5231f7a6e (diff)
Write a System T to Primrose program.
Diffstat (limited to 'program/syst-to-primrose.pty')
-rw-r--r--program/syst-to-primrose.pty41
1 files changed, 41 insertions, 0 deletions
diff --git a/program/syst-to-primrose.pty b/program/syst-to-primrose.pty
new file mode 100644
index 0000000..4030642
--- /dev/null
+++ b/program/syst-to-primrose.pty
@@ -0,0 +1,41 @@
+(\X =>
+ [ Var: Nat
+ , Zero: <>
+ , Suc: X
+ , Rec: <Target: X, Zero: X, Suc: X>
+ , Abs: X
+ , App: <Fun: X, Arg: X>
+ ])
+->
+(\X =>
+ [ Var: Nat
+ , Lit: Nat
+ , Suc: X
+ , Abs: X
+ , App: <Fun: X, Arg: X>
+ , Unit: <>
+ , Pair: <Fst: X, Snd: X>
+ , Fst: X
+ , Snd: X
+ , Absurd: <Target: X>
+ , Inl: X
+ , Inr: X
+ , Case: <Target: X, Left: X, Right: X>
+ , Expand: X
+ , Contract: X
+ , Fold: <Target: X, Body: X>
+ , Let: <Bound: X, Body: X>
+ , Annot:
+ < Term: X
+ , Type: (\Y =>
+ [ Var: Nat
+ , N: <>
+ , Arrow: <Dom: Y, Cod: Y>
+ , Unit: <>
+ , Pair: <Fst: Y, Snd: Y>
+ , Bottom: <>
+ , Sum: <Left: Y, Right: Y>
+ , Fix: Y
+ ])
+ >
+ ])