From fe17c6af7fee63d0e3b783cb5d965d288d811777 Mon Sep 17 00:00:00 2001
From: Robbert Krebbers <mail@robbertkrebbers.nl>
Date: Thu, 26 Oct 2017 17:10:45 +0200
Subject: [PATCH] Put heap_lang's let/lambda/rec at level 200.

Coq also uses level 200 for these constructs.
Besides, heap_lang's match and if were also already at this level.
---
 theories/heap_lang/notation.v | 23 +++++++++++------------
 1 file changed, 11 insertions(+), 12 deletions(-)

diff --git a/theories/heap_lang/notation.v b/theories/heap_lang/notation.v
index 3263ff157..0ee932730 100644
--- a/theories/heap_lang/notation.v
+++ b/theories/heap_lang/notation.v
@@ -75,10 +75,10 @@ Notation "e1 <- e2" := (Store e1%E e2%E) (at level 80) : expr_scope.
 (* The breaking point '/  ' makes sure that the body of the rec is indented
 by two spaces in case the whole rec does not fit on a single line. *)
 Notation "'rec:' f x := e" := (Rec f%bind x%bind e%E)
-  (at level 102, f at level 1, x at level 1, e at level 200,
+  (at level 200, f at level 1, x at level 1, e at level 200,
    format "'[' 'rec:'  f  x  :=  '/  ' e ']'") : expr_scope.
 Notation "'rec:' f x := e" := (locked (RecV f%bind x%bind e%E))
-  (at level 102, f at level 1, x at level 1, e at level 200,
+  (at level 200, f at level 1, x at level 1, e at level 200,
    format "'[' 'rec:'  f  x  :=  '/  ' e ']'") : val_scope.
 Notation "'if:' e1 'then' e2 'else' e3" := (If e1%E e2%E e3%E)
   (at level 200, e1, e2, e3 at level 200) : expr_scope.
@@ -88,19 +88,19 @@ are stated explicitly instead of relying on the Notations Let and Seq as
 defined above. This is needed because App is now a coercion, and these
 notations are otherwise not pretty printed back accordingly. *)
 Notation "'rec:' f x y .. z := e" := (Rec f%bind x%bind (Lam y%bind .. (Lam z%bind e%E) ..))
-  (at level 102, f, x, y, z at level 1, e at level 200,
+  (at level 200, f, x, y, z at level 1, e at level 200,
    format "'[' 'rec:'  f  x  y  ..  z  :=  '/  ' e ']'") : expr_scope.
 Notation "'rec:' f x y .. z := e" := (locked (RecV f%bind x%bind (Lam y%bind .. (Lam z%bind e%E) ..)))
-  (at level 102, f, x, y, z at level 1, e at level 200,
+  (at level 200, f, x, y, z at level 1, e at level 200,
    format "'[' 'rec:'  f  x  y  ..  z  :=  '/  ' e ']'") : val_scope.
 
 (* The breaking point '/  ' makes sure that the body of the λ: is indented
 by two spaces in case the whole λ: does not fit on a single line. *)
 Notation "λ: x , e" := (Lam x%bind e%E)
-  (at level 102, x at level 1, e at level 200,
+  (at level 200, x at level 1, e at level 200,
    format "'[' 'λ:'  x ,  '/  ' e ']'") : expr_scope.
 Notation "λ: x y .. z , e" := (Lam x%bind (Lam y%bind .. (Lam z%bind e%E) ..))
-  (at level 102, x, y, z at level 1, e at level 200,
+  (at level 200, x, y, z at level 1, e at level 200,
    format "'[' 'λ:'  x  y  ..  z ,  '/  ' e ']'") : expr_scope.
 
 (* When parsing lambdas, we want them to be locked (so as to avoid needless
@@ -110,21 +110,20 @@ printed too. We achieve that by first defining the non-locked notation, and then
 the locked notation. Both will be used for pretty-printing, but only the last
 will be used for parsing. *)
 Notation "λ: x , e" := (LamV x%bind e%E)
-  (at level 102, x at level 1, e at level 200,
+  (at level 200, x at level 1, e at level 200,
    format "'[' 'λ:'  x ,  '/  ' e ']'") : val_scope.
 Notation "λ: x , e" := (locked (LamV x%bind e%E))
-  (at level 102, x at level 1, e at level 200,
+  (at level 200, x at level 1, e at level 200,
    format "'[' 'λ:'  x ,  '/  ' e ']'") : val_scope.
 Notation "λ: x y .. z , e" := (LamV x%bind (Lam y%bind .. (Lam z%bind e%E) .. ))
-  (at level 102, x, y, z at level 1, e at level 200,
+  (at level 200, x, y, z at level 1, e at level 200,
    format "'[' 'λ:'  x  y  ..  z ,  '/  ' e ']'") : val_scope.
 Notation "λ: x y .. z , e" := (locked (LamV x%bind (Lam y%bind .. (Lam z%bind e%E) .. )))
-  (at level 102, x, y, z at level 1, e at level 200,
+  (at level 200, x, y, z at level 1, e at level 200,
    format "'[' 'λ:'  x  y  ..  z ,  '/  ' e ']'") : val_scope.
 
-
 Notation "'let:' x := e1 'in' e2" := (Lam x%bind e2%E e1%E)
-  (at level 102, x at level 1, e1, e2 at level 200,
+  (at level 200, x at level 1, e1, e2 at level 200,
    format "'[' 'let:'  x  :=  '[' e1 ']'  'in'  '/' e2 ']'") : expr_scope.
 Notation "e1 ;; e2" := (Lam BAnon e2%E e1%E)
   (at level 100, e2 at level 200,
-- 
GitLab