2 ||M|| This file is part of HELM, an Hypertextual, Electronic
3 ||A|| Library of Mathematics, developed at the Computer Science
4 ||T|| Department, University of Bologna, Italy.
6 ||T|| HELM is free software; you can redistribute it and/or
7 ||A|| modify it under the terms of the GNU General Public License
8 \ / version 2 or (at your option) any later version.
9 \ / This software is distributed as is, NO WARRANTY.
10 V_______________________________________________________________ *)
15 type bind = Abst | Abbr (* abstraction, abbreviation *)
17 type term = Sort of int (* hierarchy index *)
18 | LRef of int (* reverse de Bruijn index *)
19 | GRef of uri (* reference *)
20 | Cast of term * term (* type, term *)
21 | Appl of term * term (* argument, function *)
22 | Bind of id * bind * term * term (* name, binder, content, scope *)
24 type obj = int * uri * bind * term (* age, uri, binder, contents *)
26 type item = obj option
28 type hierarchy = int -> int
30 (* Currified constructors ***************************************************)
32 let cast u t = Cast (u, t)
34 let appl u t = Appl (u, t)
36 let bind id b u t = Bind (id, b, u, t)