]> matita.cs.unibo.it Git - fireball-separation.git/blobdiff - ocaml/num.mli
Fix: max_arity_tms was using wrong comparison
[fireball-separation.git] / ocaml / num.mli
index ca99e44a86b0e596271ac6c9c6e54ec45ce784a2..6de26456cb1aa8d2c990e2beeaea3d779b34bc5a 100644 (file)
@@ -1,32 +1,27 @@
-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 var * 'nf Listx.listx
-    | `Match of 'nf i_num_var_ * var * int * (int * 'nf) list ref * 'nf list
-    | `N of int
-    | `Var of var ]
-type 'nf nf_ =
-    [ `I of var * 'nf Listx.listx
-    | `Lam of bool * 'nf nf_
-    | `Match of 'nf i_num_var_ * var * int * (int * 'nf) list ref * 'nf list
-    | `N 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_
+type var = int * (* arity of variable*) int;;
+type 'nf_nob i_var_ = [ `I of var * 'nf_nob Listx.listx | `Var of var ]
+type 'nf_nob i_n_var_ = [ `N of int | 'nf_nob i_var_ ]
+type ('nf_nob,'nf) i_num_var_ = [
+  | 'nf_nob i_n_var_
+  | `Match of ('nf_nob,'nf) i_num_var_ * (* originating var *) var * (*lift*) int * (*branches*)(int * 'nf) list ref * (*args*)'nf_nob list
+]
+type 'nf nf_nob_ = [ `Lam of (* was_unpacked *) bool * 'nf | `Pacman | ('nf nf_nob_,'nf) i_num_var_ ]
+type nf = [ nf nf_nob_ | `Bottom  ]
+type nf_nob = nf nf_nob_
+type i_var = nf_nob i_var_;;
+type i_n_var = nf_nob i_n_var_;;
+type i_num_var = (nf_nob,nf) i_num_var_;;
 val hd_of_i_var : i_var -> int
 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
-    val t_of_i_num_var : nf i_num_var_ -> Pure.Pure.t
-    val t_of_nf : nf -> Pure.Pure.t
+    val scott_of_nf : nf -> Pure.Pure.t
   end
 val print : ?l:string list -> nf -> string
 val string_of_nf : [<nf] -> string
@@ -37,11 +32,11 @@ 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_ -> var -> int -> (int * nf) list ref -> nf list -> nf
+val mk_match : nf -> 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