type qid = id * id list (* qualified identifier: name, qualifiers *)
-type term = Sort of bool (* sorts: true = TYPE, false = PROP *)
- | LRef of int (* local reference: de bruijn index *)
- | GRef of qid * term list (* global reference: name, arguments *)
- | Appl of term * term (* application: argument, function *)
- | Abst of id * term * term (* abstraction: name, type, body *)
+type term = Sort of bool (* sorts: true = TYPE, false = PROP *)
+ | LRef of int (* local reference: de bruijn index *)
+ | GRef of int * qid * term list (* global reference: context length, name, arguments *)
+ | Appl of term * term (* application: argument, function *)
+ | Abst of id * term * term (* abstraction: name, type, body *)
type pars = (qid * term) list (* parameter declarations: name, type *)
-(* environment: parameters, name, type, (transparent?, body) *)
-type environment = (pars * qid * term * (bool * term) option) list
+(* environment: line number, parameters, name, type, (transparent?, body) *)
+type environment = (int * pars * qid * term * (bool * term) option) list