From 865ceff7d43a69c55d6a8f9e9ee92c0ac754c722 Mon Sep 17 00:00:00 2001
From: Michael Sippel <micha@fragmental.art>
Date: Sun, 8 Sep 2024 15:28:44 +0200
Subject: [PATCH] add remaining notations for expr_term

---
 coq/terms.v | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/coq/terms.v b/coq/terms.v
index 3cc59aa..a48ff29 100644
--- a/coq/terms.v
+++ b/coq/terms.v
@@ -98,11 +98,20 @@ Notation "[{ e }]" := e
   (e custom ladder_expr at level 80) : ladder_expr_scope.
 Notation "'%' x '%'" := (expr_var x%string)
   (in custom ladder_expr at level 0, x constr) : ladder_expr_scope.
-Notation "'λ' x τ '↦' e" := (expr_abs x τ e) (in custom ladder_expr at level 0, x constr, τ custom ladder_type at level 99, e custom ladder_expr at level 99).
 Notation "'Λ' t '↦' e" := (expr_ty_abs t e)
-  (in custom ladder_expr at level 0, t constr, e custom ladder_expr at level 80).
-
-
+  (in custom ladder_expr at level 10, t constr, e custom ladder_expr at level 80) : ladder_expr_scope.
+Notation "'λ' x τ '↦' e" := (expr_abs x τ e)
+  (in custom ladder_expr at level 10, x constr, τ custom ladder_type at level 99, e custom ladder_expr at level 99) :ladder_expr_scope.
+Notation "'λ' x τ '↦morph' e" := (expr_morph x τ e)
+  (in custom ladder_expr at level 10, x constr, τ custom ladder_type at level 99, e custom ladder_expr at level 99) :ladder_expr_scope.
+Notation "'let' x ':=' e 'in' t" := (expr_let x e t)
+  (in custom ladder_expr at level 20, x constr, e custom ladder_expr at level 99, t custom ladder_expr at level 99) : ladder_expr_scope.
+Notation "e 'as' τ" := (expr_ascend τ e)
+  (in custom ladder_expr at level 30, e custom ladder_expr, τ custom ladder_type at level 99) : ladder_expr_scope.
+Notation "e1 e2" := (expr_app e1 e2)
+  (in custom ladder_expr at level 50) : ladder_expr_scope.
+Notation "'(' e ')'" := e
+  (in custom ladder_expr at level 0) : ladder_expr_scope.
 
 (* EXAMPLES *)
 
@@ -111,7 +120,7 @@ Open Scope ladder_expr_scope.
 
 Check [< ∀"α", (< $"Seq"$ %"α"% > ~ < $"List"$ %"α"% >) >].
 
-Definition polymorphic_identity1 : expr_term := [{ Λ"T" ↦ λ"x"%"T"% ↦ %"x"% }].
+Definition polymorphic_identity1 : expr_term := [{ Λ"T" ↦ λ"x"%"T"% ↦ (%"x"%) }].
 Definition polymorphic_identity2 : expr_term := [{ Λ"T" ↦ λ"y"%"T"% ↦ %"y"% }].
 
 Compute polymorphic_identity1.