Module Unification
type allowed_evars=|AllowAll|AllowFun of Evar.t -> booltype core_unify_flags={modulo_conv_on_closed_terms : TransparentState.t option;use_metas_eagerly_in_conv_on_closed_terms : bool;use_evars_eagerly_in_conv_on_closed_terms : bool;modulo_delta : TransparentState.t;modulo_delta_types : TransparentState.t;check_applied_meta_types : bool;use_pattern_unification : bool;use_meta_bound_pattern_unification : bool;allowed_evars : allowed_evars;restrict_conv_on_strict_subterms : bool;modulo_betaiota : bool;modulo_eta : bool;}type unify_flags={core_unify_flags : core_unify_flags;merge_unify_flags : core_unify_flags;subterm_unify_flags : core_unify_flags;allow_K_in_toplevel_higher_order_unification : bool;resolve_evars : bool;}
val default_core_unify_flags : unit -> core_unify_flagsval default_no_delta_core_unify_flags : unit -> core_unify_flagsval default_unify_flags : unit -> unify_flagsval default_no_delta_unify_flags : TransparentState.t -> unify_flagsval elim_flags : unit -> unify_flagsval elim_no_delta_flags : unit -> unify_flagsval is_keyed_unification : unit -> boolval w_unify : Environ.env -> Evd.evar_map -> Evd.conv_pb -> ?flags:unify_flags -> EConstr.constr -> EConstr.constr -> Evd.evar_mapThe "unique" unification function
val w_unify_to_subterm : Environ.env -> Evd.evar_map -> ?flags:unify_flags -> (EConstr.constr * EConstr.constr) -> Evd.evar_map * EConstr.constrw_unify_to_subterm env m (c,t)performs unification ofcwith a subterm oft. Constraints are added tomand the matched subterm oftis also returned.
val w_unify_to_subterm_all : Environ.env -> Evd.evar_map -> ?flags:unify_flags -> (EConstr.constr * EConstr.constr) -> (Evd.evar_map * EConstr.constr) listval w_unify_meta_types : Environ.env -> ?flags:unify_flags -> Evd.evar_map -> Evd.evar_mapval w_coerce_to_type : Environ.env -> Evd.evar_map -> EConstr.constr -> EConstr.types -> EConstr.types -> Evd.evar_map * EConstr.constrw_coerce_to_type env evd c ctyp typtries to coercecof typectypso that its gets typetyp;typmay contain metavariables
type prefix_of_inductive_support_flag= booltype abstraction_request=|AbstractPattern of prefix_of_inductive_support_flag * EConstr.types -> bool * Names.Name.t * Evd.evar_map * EConstr.constr * Locus.clause * bool|AbstractExact of Names.Name.t * EConstr.constr * EConstr.types option * Locus.clause * bool
val finish_evar_resolution : ?flags:Pretyping.inference_flags -> Environ.env -> Evd.evar_map -> (Evd.evar_map * EConstr.constr) -> Evd.evar_map * EConstr.constr
type 'r abstraction_result= Names.Id.t * Environ.named_context_val * EConstr.named_declaration list * Names.Id.t option * EConstr.types * (Evd.evar_map * EConstr.constr) option
val make_abstraction : Environ.env -> Evd.evar_map -> EConstr.constr -> abstraction_request -> 'r abstraction_resultval pose_all_metas_as_evars : Environ.env -> Evd.evar_map -> EConstr.constr -> Evd.evar_map * EConstr.constrval abstract_list_all : Environ.env -> Evd.evar_map -> EConstr.constr -> EConstr.constr -> EConstr.constr list -> Evd.evar_map * (EConstr.constr * EConstr.types)abstract_list_all env evd t c labstracts the terms in l over c to get a term of type t (exported for inv.ml)
type metabinding= Constr.metavariable * EConstr.constr * (Evd.instance_constraint * Evd.instance_typing_status)type subst0= Evd.evar_map * metabinding list * (Environ.env * EConstr.existential * EConstr.t) list
val w_merge : Environ.env -> bool -> core_unify_flags -> subst0 -> Evd.evar_mapval unify_0 : Environ.env -> Evd.evar_map -> Evd.conv_pb -> core_unify_flags -> EConstr.types -> EConstr.types -> subst0val unify_0_with_initial_metas : subst0 -> bool -> Environ.env -> Evd.conv_pb -> core_unify_flags -> EConstr.types -> EConstr.types -> subst0