]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/lambda-delta/src/common/entity.ml
- initial support for abstractions with explicit levels
[helm.git] / helm / software / lambda-delta / src / common / entity.ml
index 6da0b3aeb23a88506b28399aede5fe685f0f07f0..f587a8d54543d28e94d620d02cf740bb268a2f39 100644 (file)
@@ -11,6 +11,7 @@
 
 module U = NUri
 module G = Options
+module N = Level
 
 type uri = U.uri
 
@@ -28,9 +29,9 @@ type attr = Name of name      (* name *)
 
 type attrs = attr list (* attributes *)
 
-type 'term bind = Abst of 'term (* declaration: domain *)
-                | Abbr of 'term (* definition: body *)
-               | Void          (* exclusion *)
+type 'term bind = Abst of N.level * 'term (* declaration: level, domain *)
+                | Abbr of 'term           (* definition: body           *)
+               | Void                    (* exclusion                  *)
 
 type 'term entity = attrs * uri * 'term bind (* attrs, name, binder *)
 
@@ -113,11 +114,11 @@ let rec rev_append_names ns = function
    | _ :: tl      -> rev_append_names ns tl
 
 let xlate f xlate_term = function
-   | a, uri, Abst t ->
-      let f t = f (a, uri, Abst t) in xlate_term f t
-   | a, uri, Abbr t ->
+   | a, uri, Abst (n, t) ->
+      let f t = f (a, uri, Abst (n, t)) in xlate_term f t
+   | a, uri, Abbr t      ->
       let f t = f (a, uri, Abbr t) in xlate_term f t
-   | _, _, Void   ->
+   | _, _, Void          ->
       assert false
 
 let initial_status () = {