]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/ng_kernel/nCicReduction.mli
Reduction speedup (a.k.a. better sharing):
[helm.git] / helm / software / components / ng_kernel / nCicReduction.mli
index 696723bf6ad158b4bab916b2c5c9c72a4e7505c5..9cff07d8fd0b9e623245f12ab6cdf09d24936bcf 100644 (file)
 
 (* $Id$ *)
 
+exception AssertFailure of string Lazy.t;;
+
 val whd : 
-  ?delta:int -> ?subst:NCic.substitution -> 
+  ?delta:int -> subst:NCic.substitution -> 
   NCic.context -> NCic.term -> 
     NCic.term
 
@@ -28,7 +30,8 @@ val are_convertible :
 (* performs head beta/(delta)/cast reduction; the default is to not perform
    delta reduction; if provided, ~upto is the maximum number of beta redexes
    reduced *)
-val head_beta_reduce: ?delta:int -> ?upto:int -> NCic.term -> NCic.term
+val head_beta_reduce: 
+  ?delta:int -> ?upto:int -> ?subst:NCic.substitution -> NCic.term -> NCic.term
 
 type stack_item
 type environment_item
@@ -38,6 +41,14 @@ type machine = int * environment_item list * NCic.term * stack_item list
 val reduce_machine : 
      delta:int -> ?subst:NCic.substitution -> NCic.context -> machine -> 
       machine * bool
-val from_stack : stack_item -> machine
+val from_stack : delta:int -> stack_item -> machine
 val unwind : machine -> NCic.term
 
+val split_prods:
+ subst:NCic.substitution -> NCic.context -> int -> NCic.term ->
+  NCic.context * NCic.term
+
+(* to be used outside the kernel *)
+val alpha_eq:
+ NCic.metasenv -> NCic.substitution ->
+  NCic.context -> NCic.term -> NCic.term -> bool