1
(************************************************************************)
2
(* v * The Coq Proof Assistant / The Coq Development Team *)
3
(* <O___,, * CNRS-Ecole Polytechnique-INRIA Futurs-Universite Paris Sud *)
4
(* \VV/ **************************************************************)
5
(* // * This file is distributed under the terms of the *)
6
(* * GNU Lesser General Public License Version 2.1 *)
7
(************************************************************************)
9
(*i $Id: reduction.mli 7639 2005-12-02 10:01:15Z gregoire $ i*)
16
(************************************************************************)
17
(*s Reduction functions *)
19
val whd_betaiotazeta : env -> constr -> constr
20
val whd_betadeltaiota : env -> constr -> constr
21
val whd_betadeltaiota_nolet : env -> constr -> constr
23
(************************************************************************)
24
(*s conversion functions *)
26
exception NotConvertible
27
exception NotConvertibleVect of int
28
type 'a conversion_function = env -> 'a -> 'a -> unit
30
type conv_pb = CONV | CUMUL
32
val conv : constr conversion_function
33
val conv_leq : constr conversion_function
34
val conv_leq_vecti : constr array conversion_function
36
val vm_conv : conv_pb -> constr conversion_function
38
(************************************************************************)
40
(* Builds an application node, reducing beta redexes it may produce. *)
41
val beta_appvect : constr -> constr array -> constr
43
(* Pseudo-reduction rule Prod(x,A,B) a --> B[x\a] *)
44
val hnf_prod_applist : env -> constr -> constr list -> constr
47
(************************************************************************)
48
(*s Recognizing products and arities modulo reduction *)
50
val dest_prod : env -> constr -> rel_context * constr
51
val dest_prod_assum : env -> constr -> rel_context * constr
53
val dest_arity : env -> constr -> arity
54
val is_arity : env -> constr -> bool