(** To be increased each time the term type below changes, used for "safe"
* marshalling *)
-let magic = 3
+let magic = 5
type term =
(* CIC AST *)
| Frac of term * term
| Over of term * term
| Atop of term * term
+ | InfRule of term * term * term
(* | array of term * literal option * literal option
|+ column separator, row separator +| *)
| Sqrt of term
| Break
| Box of box_spec * term list
| Group of term list
+ | Mstyle of (string * string) list * term list
and magic_term =
(* level 1 magics *)
| Fail
| If of term * term * term (* test, pattern if true, pattern if false *)
+and term_level = Self of int | Level of int
+
and pattern_variable =
(* level 1 and 2 variables *)
| NumVar of string
| IdentVar of string
- | TermVar of string * int option
+ | TermVar of string * term_level
(* level 1 variables *)
| Ascription of term * string