]> matita.cs.unibo.it Git - fireball-separation.git/blobdiff - ocaml/num.mli
Fix: conv : x:min_int (.... y:1 ...) y was not considered for stepping
[fireball-separation.git] / ocaml / num.mli
index 2f92884e92efddb0d9c51296950d7dc0261bf9eb..9cf81ccdd113e52d6162960d9edaff27de6c8648 100644 (file)
@@ -1,26 +1,28 @@
-type 'nf i_var_ = [ `I of int * 'nf Listx.listx | `Var of int ]
+type var = int * int
+type 'nf i_var_ = [ `I of var * 'nf Listx.listx | `Var of var ]
 type 'nf i_n_var_ = [ `N of int | 'nf i_var_ ]
 type 'nf i_num_var_ =
-    [ `I of int * 'nf Listx.listx
-    | `Match of 'nf i_num_var_ * int * (int * 'nf) list ref * 'nf list
+    [ `I of var * 'nf Listx.listx
+    | `Match of 'nf i_num_var_ * var * int * (int * 'nf) list ref * 'nf list
     | `N of int
-    | `Var of int ]
+    | `Var of var ]
 type 'nf nf_ =
-    [ `I of int * 'nf Listx.listx
+    [ `I of var * 'nf Listx.listx
     | `Lam of bool * 'nf nf_
-    | `Match of 'nf i_num_var_ * int * (int * 'nf) list ref * 'nf list
+    | `Match of 'nf i_num_var_ * var * int * (int * 'nf) list ref * 'nf list
     | `N of int
-    | `Var of int ]
+    | `Var of var ]
 type nf = nf nf_
 type i_var = nf i_var_
 type i_n_var = nf i_n_var_
 type i_num_var = nf i_num_var_
 val hd_of_i_var : i_var -> int
-val hd_of :
-  [< `I of 'a * 'b | `Match of 'c | `N of 'd | `Var of 'a ] -> 'a option
+val hd_of : i_n_var -> int option
+val arity_of_hd : i_n_var -> int
 (* put t under n lambdas, lifting t accordingtly *)
 val make_lams : nf -> int -> nf
 val lift : int -> nf -> nf
+val free_vars' : nf -> var list
 val free_vars : nf -> int list
 module ToScott :
   sig
@@ -32,12 +34,16 @@ val string_of_nf : [<nf] -> string
 val cast_to_i_var : [< nf > `I `Var] -> i_var
 val cast_to_i_n_var : [< nf > `I `N `Var] -> i_n_var
 val cast_to_i_num_var : [< nf > `I `N `Match `Var] -> i_num_var
+val set_arity : int -> nf -> nf
 val mk_app : nf -> nf -> nf
 val mk_appl : nf -> nf list -> nf
 val mk_appx : nf -> nf Listx.listx -> nf
-val mk_match : nf i_num_var_ -> int -> (int * nf) list ref -> nf list -> nf
-val subst : bool -> int -> nf -> nf -> nf
+val mk_match : nf i_num_var_ -> var -> int -> (int * nf) list ref -> nf list -> nf
+val subst : bool -> bool -> int -> nf -> nf -> nf
 val parse' : string list -> nf list * string list
 val eta_compare : nf -> nf -> int
 val eta_eq : [< nf ] -> [< nf ] -> bool
 val eta_subterm : [< nf ] -> [< nf ] -> bool
+val max_arity_tms : int -> [< nf] list -> int option
+val compute_arities : int -> int -> nf list -> int list
+val minus1 : int -> int