(***********************************************************************) (* v * The Coq Proof Assistant / The Coq Development Team *) (* tclTHEN tac (tclREPEAT_MAIN (tclTHENSFIRSTn (general_rewrite dir csr) [|tac_main|] tc))) tclIDTAC lrul)) (* The AutoRewrite tactic *) let autorewrite tac_main lbas = tclREPEAT_MAIN (tclPROGRESS (List.fold_left (fun tac bas -> tclTHEN tac (one_base tac_main bas)) tclIDTAC lbas)) (* Functions necessary to the library object declaration *) let load_hintrewrite _ = () let cache_hintrewrite (_,(rbase,lrl)) = List.iter (fun (c,b,t) -> Hashtbl.add !rewtab rbase (c,b,Tacinterp.interp t)) lrl let export_hintrewrite x = Some x (* Declaration of the Hint Rewrite library object *) let (in_hintrewrite,out_hintrewrite)= Libobject.declare_object ("HINT_REWRITE", { Libobject.load_function = load_hintrewrite; Libobject.open_function = cache_hintrewrite; Libobject.cache_function = cache_hintrewrite; Libobject.export_function = export_hintrewrite }) (* To add rewriting rules to a base *) let add_rew_rules base lrul = Lib.add_anonymous_leaf (in_hintrewrite (base,lrul))