diff src/ProgLang.v @ 569:0ce9829efa3b

Back to working in Coq 8.4
author Adam Chlipala <adam@chlipala.net>
date Sun, 20 Jan 2019 15:28:23 -0500
parents 81d63d9c1cc5
children
line wrap: on
line diff
--- a/src/ProgLang.v	Sun Jan 20 15:16:29 2019 -0500
+++ b/src/ProgLang.v	Sun Jan 20 15:28:23 2019 -0500
@@ -105,7 +105,7 @@
 
   | Let : forall G t1 t2, term G t1 -> term (t1 :: G) t2 -> term G t2.
 
-  Arguments Const [G].
+  Arguments Const [G] _.
 
   (** Here are two example term encodings, the first of addition packaged as a two-argument curried function, and the second of a sample application of addition to constants. *)
 
@@ -266,7 +266,7 @@
                 end
     end.
 
-  Arguments insertAtS [t] x [G].
+  Arguments insertAtS [t] x [G] n _.
 
   (** Next we prove that [liftVar] is correct.  That is, a lifted variable retains its value with respect to a substitution when we perform an analogue to lifting by inserting a new mapping into the substitution. *)
 
@@ -355,9 +355,9 @@
     | Let : forall t1 t2, term t1 -> (var t1 -> term t2) -> term t2.
   End var.
 
-  Arguments Var [var t].
-  Arguments Const [var].
-  Arguments Abs [var dom ran].
+  Arguments Var [var t] _.
+  Arguments Const [var] _.
+  Arguments Abs [var dom ran] _.
 
   (** Coq accepts this definition because our embedded functions now merely take _variables_ as arguments, instead of arbitrary terms.  One might wonder whether there is an easy loophole to exploit here, instantiating the parameter [var] as [term] itself.  However, to do that, we would need to choose a variable representation for this nested mention of [term], and so on through an infinite descent into [term] arguments.