(***********************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) (* bool val subst_pattern : substitution -> constr_pattern -> constr_pattern type constr_label = | ConstNode of constant | IndNode of inductive | CstrNode of constructor | VarNode of identifier val label_of_ref : global_reference -> constr_label val subst_label : substitution -> constr_label -> constr_label exception BoundPattern (* [head_pattern_bound t] extracts the head variable/constant of the type [t] or raises [BoundPattern] (even if a sort); it raises an anomaly if [t] is an abstraction *) val head_pattern_bound : constr_pattern -> constr_label (* [head_of_constr_reference c] assumes [r] denotes a reference and returns its label; raises an anomaly otherwise *) val head_of_constr_reference : Term.constr -> constr_label (* [pattern_of_constr c] translates a term [c] with metavariables into a pattern; currently, no destructor (Cases, Fix, Cofix) and no existential variable are allowed in [c] *) val pattern_of_constr : constr -> constr_pattern (* [pattern_of_rawconstr l c] translates a term [c] with metavariables into a pattern; variables bound in [l] are replaced by the pattern to which they are bound *) val pattern_of_rawconstr : Rawterm.rawconstr -> int list * constr_pattern val instantiate_pattern : (identifier * constr_pattern) list -> constr_pattern -> constr_pattern