aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorherbelin2003-04-07 17:36:44 +0000
committerherbelin2003-04-07 17:36:44 +0000
commit4ab520180b7597f8358f9d351151cd73e43858a3 (patch)
tree0d8bdd472bedc71ec0bc9bee6f6dd66fde03dba6
parent928287134ab9dd23258c395589f8633e422e939f (diff)
Globalisation des noms de tactiques dans les définitions de tactiques
pour compatibilité avec les modules. Globalisation partielle des invocations de tactiques hors définitions (partielle car noms des Intros/Assert/Inversion/... non connus). git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@3858 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--.depend708
-rw-r--r--Makefile16
-rw-r--r--contrib/correctness/pmlize.ml1
-rw-r--r--contrib/correctness/psyntax.ml44
-rw-r--r--contrib/correctness/putil.ml1
-rw-r--r--contrib/field/field.ml455
-rwxr-xr-xcontrib/interface/blast.ml5
-rw-r--r--contrib/interface/centaur.ml46
-rw-r--r--contrib/interface/dad.ml1
-rw-r--r--contrib/interface/debug_tac.ml440
-rw-r--r--contrib/interface/debug_tac.mli6
-rw-r--r--contrib/interface/pbp.ml2
-rw-r--r--contrib/interface/xlate.ml4
-rw-r--r--contrib/ring/quote.ml1
-rw-r--r--contrib/xml/xmlentries.ml484
-rw-r--r--pretyping/matching.ml250
-rw-r--r--pretyping/matching.mli53
17 files changed, 749 insertions, 488 deletions
diff --git a/.depend b/.depend
index 77437c3450..03bb4245e7 100644
--- a/.depend
+++ b/.depend
@@ -122,8 +122,8 @@ parsing/ppconstr.cmi: parsing/coqast.cmi kernel/environ.cmi \
lib/pp.cmi pretyping/rawterm.cmi proofs/tacexpr.cmo kernel/term.cmi \
interp/topconstr.cmi lib/util.cmi
parsing/pptactic.cmi: parsing/egrammar.cmi interp/genarg.cmi lib/pp.cmi \
- pretyping/pretyping.cmi proofs/proof_type.cmi proofs/tacexpr.cmo \
- kernel/term.cmi interp/topconstr.cmi
+ pretyping/pretyping.cmi proofs/proof_type.cmi pretyping/rawterm.cmi \
+ proofs/tacexpr.cmo kernel/term.cmi interp/topconstr.cmi lib/util.cmi
parsing/prettyp.cmi: pretyping/classops.cmi kernel/environ.cmi \
library/impargs.cmi library/lib.cmi library/libnames.cmi kernel/names.cmi \
library/nametab.cmi lib/pp.cmi pretyping/reductionops.cmi \
@@ -168,9 +168,11 @@ pretyping/inductiveops.cmi: kernel/declarations.cmi kernel/environ.cmi \
pretyping/evd.cmi kernel/names.cmi kernel/sign.cmi kernel/term.cmi
pretyping/instantiate.cmi: kernel/environ.cmi pretyping/evd.cmi \
kernel/names.cmi kernel/sign.cmi kernel/term.cmi
-pretyping/pattern.cmi: kernel/environ.cmi pretyping/evd.cmi \
- library/libnames.cmi kernel/names.cmi library/nametab.cmi \
- pretyping/rawterm.cmi kernel/sign.cmi kernel/term.cmi
+pretyping/matching.cmi: kernel/environ.cmi pretyping/evd.cmi kernel/names.cmi \
+ pretyping/pattern.cmi kernel/term.cmi
+pretyping/pattern.cmi: kernel/environ.cmi library/libnames.cmi \
+ kernel/names.cmi library/nametab.cmi pretyping/rawterm.cmi \
+ kernel/sign.cmi kernel/term.cmi
pretyping/pretype_errors.cmi: kernel/environ.cmi pretyping/evd.cmi \
pretyping/inductiveops.cmi kernel/names.cmi lib/pp.cmi \
pretyping/rawterm.cmi kernel/sign.cmi kernel/term.cmi
@@ -211,8 +213,9 @@ proofs/proof_trees.cmi: kernel/environ.cmi pretyping/evd.cmi kernel/names.cmi \
lib/pp.cmi proofs/proof_type.cmi kernel/sign.cmi kernel/term.cmi \
lib/util.cmi
proofs/proof_type.cmi: kernel/environ.cmi pretyping/evd.cmi interp/genarg.cmi \
- library/libnames.cmi kernel/names.cmi pretyping/rawterm.cmi \
- proofs/tacexpr.cmo kernel/term.cmi lib/util.cmi
+ library/libnames.cmi kernel/names.cmi library/nametab.cmi \
+ pretyping/pattern.cmi pretyping/rawterm.cmi proofs/tacexpr.cmo \
+ kernel/term.cmi lib/util.cmi
proofs/refiner.cmi: pretyping/evd.cmi lib/pp.cmi proofs/proof_trees.cmi \
proofs/proof_type.cmi kernel/sign.cmi proofs/tacexpr.cmo kernel/term.cmi
proofs/tacmach.cmi: kernel/environ.cmi pretyping/evd.cmi kernel/names.cmi \
@@ -264,8 +267,8 @@ tactics/refine.cmi: pretyping/pretyping.cmi proofs/tacmach.cmi \
tactics/setoid_replace.cmi: kernel/names.cmi proofs/proof_type.cmi \
kernel/term.cmi interp/topconstr.cmi
tactics/tacinterp.cmi: parsing/coqast.cmi lib/dyn.cmi kernel/environ.cmi \
- pretyping/evd.cmi interp/genarg.cmi kernel/names.cmi lib/pp.cmi \
- proofs/proof_type.cmi proofs/tacexpr.cmo proofs/tacmach.cmi \
+ pretyping/evd.cmi interp/genarg.cmi kernel/names.cmi library/nametab.cmi \
+ lib/pp.cmi proofs/proof_type.cmi proofs/tacexpr.cmo proofs/tacmach.cmi \
pretyping/tacred.cmi proofs/tactic_debug.cmi kernel/term.cmi \
interp/topconstr.cmi lib/util.cmi
tactics/tacticals.cmi: proofs/clenv.cmi kernel/names.cmi \
@@ -315,9 +318,10 @@ toplevel/vernacentries.cmi: kernel/environ.cmi pretyping/evd.cmi \
interp/topconstr.cmi toplevel/vernacexpr.cmo toplevel/vernacinterp.cmi
toplevel/vernacinterp.cmi: proofs/tacexpr.cmo
translate/ppconstrnew.cmi: parsing/coqast.cmi kernel/environ.cmi \
- parsing/extend.cmi library/libnames.cmi kernel/names.cmi parsing/pcoq.cmi \
- lib/pp.cmi interp/ppextend.cmi pretyping/rawterm.cmi proofs/tacexpr.cmo \
- kernel/term.cmi interp/topconstr.cmi lib/util.cmi
+ parsing/extend.cmi interp/genarg.cmi library/libnames.cmi \
+ kernel/names.cmi parsing/pcoq.cmi lib/pp.cmi interp/ppextend.cmi \
+ pretyping/rawterm.cmi proofs/tacexpr.cmo kernel/term.cmi \
+ interp/topconstr.cmi lib/util.cmi
translate/pptacticnew.cmi: kernel/environ.cmi interp/genarg.cmi lib/pp.cmi \
proofs/proof_type.cmi proofs/tacexpr.cmo interp/topconstr.cmi
translate/ppvernacnew.cmi: parsing/ast.cmi parsing/coqast.cmi \
@@ -441,18 +445,18 @@ config/coq_config.cmx: config/coq_config.cmi
dev/db_printers.cmo: kernel/names.cmi lib/pp.cmi
dev/db_printers.cmx: kernel/names.cmx lib/pp.cmx
dev/top_printers.cmo: parsing/ast.cmi toplevel/cerrors.cmi proofs/clenv.cmi \
- kernel/closure.cmi kernel/environ.cmi pretyping/evd.cmi \
- library/libnames.cmi library/libobject.cmi library/nameops.cmi \
- kernel/names.cmi lib/pp.cmi parsing/pptactic.cmi parsing/printer.cmi \
- proofs/proof_trees.cmi proofs/refiner.cmi kernel/sign.cmi lib/system.cmi \
- proofs/tacmach.cmi kernel/term.cmi parsing/termast.cmi \
+ kernel/closure.cmi interp/constrextern.cmi kernel/environ.cmi \
+ pretyping/evd.cmi library/libnames.cmi library/libobject.cmi \
+ library/nameops.cmi kernel/names.cmi lib/pp.cmi parsing/pptactic.cmi \
+ parsing/printer.cmi proofs/proof_trees.cmi proofs/refiner.cmi \
+ kernel/sign.cmi lib/system.cmi proofs/tacmach.cmi kernel/term.cmi \
pretyping/termops.cmi kernel/univ.cmi
dev/top_printers.cmx: parsing/ast.cmx toplevel/cerrors.cmx proofs/clenv.cmx \
- kernel/closure.cmx kernel/environ.cmx pretyping/evd.cmx \
- library/libnames.cmx library/libobject.cmx library/nameops.cmx \
- kernel/names.cmx lib/pp.cmx parsing/pptactic.cmx parsing/printer.cmx \
- proofs/proof_trees.cmx proofs/refiner.cmx kernel/sign.cmx lib/system.cmx \
- proofs/tacmach.cmx kernel/term.cmx parsing/termast.cmx \
+ kernel/closure.cmx interp/constrextern.cmx kernel/environ.cmx \
+ pretyping/evd.cmx library/libnames.cmx library/libobject.cmx \
+ library/nameops.cmx kernel/names.cmx lib/pp.cmx parsing/pptactic.cmx \
+ parsing/printer.cmx proofs/proof_trees.cmx proofs/refiner.cmx \
+ kernel/sign.cmx lib/system.cmx proofs/tacmach.cmx kernel/term.cmx \
pretyping/termops.cmx kernel/univ.cmx
doc/parse.cmo: parsing/ast.cmi
doc/parse.cmx: parsing/ast.cmx
@@ -926,18 +930,22 @@ parsing/g_constrnew.cmx: lib/bignat.cmx parsing/lexer.cmx \
library/libnames.cmx kernel/names.cmx lib/options.cmx parsing/pcoq.cmx \
lib/pp.cmx pretyping/rawterm.cmx kernel/term.cmx interp/topconstr.cmx \
lib/util.cmx
-parsing/g_ltac.cmo: parsing/ast.cmi library/libnames.cmi kernel/names.cmi \
- parsing/pcoq.cmi lib/pp.cmi pretyping/rawterm.cmi proofs/tacexpr.cmo \
- interp/topconstr.cmi lib/util.cmi toplevel/vernacexpr.cmo
-parsing/g_ltac.cmx: parsing/ast.cmx library/libnames.cmx kernel/names.cmx \
- parsing/pcoq.cmx lib/pp.cmx pretyping/rawterm.cmx proofs/tacexpr.cmx \
- interp/topconstr.cmx lib/util.cmx toplevel/vernacexpr.cmx
-parsing/g_ltacnew.cmo: parsing/ast.cmi kernel/names.cmi parsing/pcoq.cmi \
- lib/pp.cmi pretyping/rawterm.cmi proofs/tacexpr.cmo interp/topconstr.cmi \
- lib/util.cmi toplevel/vernacexpr.cmo
-parsing/g_ltacnew.cmx: parsing/ast.cmx kernel/names.cmx parsing/pcoq.cmx \
- lib/pp.cmx pretyping/rawterm.cmx proofs/tacexpr.cmx interp/topconstr.cmx \
- lib/util.cmx toplevel/vernacexpr.cmx
+parsing/g_ltac.cmo: parsing/ast.cmi interp/genarg.cmi library/libnames.cmi \
+ kernel/names.cmi parsing/pcoq.cmi lib/pp.cmi pretyping/rawterm.cmi \
+ proofs/tacexpr.cmo interp/topconstr.cmi lib/util.cmi \
+ toplevel/vernacexpr.cmo
+parsing/g_ltac.cmx: parsing/ast.cmx interp/genarg.cmx library/libnames.cmx \
+ kernel/names.cmx parsing/pcoq.cmx lib/pp.cmx pretyping/rawterm.cmx \
+ proofs/tacexpr.cmx interp/topconstr.cmx lib/util.cmx \
+ toplevel/vernacexpr.cmx
+parsing/g_ltacnew.cmo: parsing/ast.cmi interp/genarg.cmi library/libnames.cmi \
+ kernel/names.cmi parsing/pcoq.cmi lib/pp.cmi pretyping/rawterm.cmi \
+ proofs/tacexpr.cmo interp/topconstr.cmi lib/util.cmi \
+ toplevel/vernacexpr.cmo
+parsing/g_ltacnew.cmx: parsing/ast.cmx interp/genarg.cmx library/libnames.cmx \
+ kernel/names.cmx parsing/pcoq.cmx lib/pp.cmx pretyping/rawterm.cmx \
+ proofs/tacexpr.cmx interp/topconstr.cmx lib/util.cmx \
+ toplevel/vernacexpr.cmx
parsing/g_minicoq.cmo: kernel/environ.cmi parsing/lexer.cmi kernel/names.cmi \
lib/pp.cmi kernel/term.cmi kernel/univ.cmi lib/util.cmi \
parsing/g_minicoq.cmi
@@ -1080,26 +1088,26 @@ parsing/pcoq.cmx: parsing/ast.cmx parsing/coqast.cmx library/decl_kinds.cmx \
library/libnames.cmx kernel/names.cmx lib/options.cmx lib/pp.cmx \
interp/ppextend.cmx pretyping/rawterm.cmx proofs/tacexpr.cmx \
interp/topconstr.cmx lib/util.cmx parsing/pcoq.cmi
-parsing/ppconstr.cmo: parsing/ast.cmi lib/bignat.cmi parsing/coqast.cmi \
- interp/genarg.cmi library/libnames.cmi library/nameops.cmi \
- kernel/names.cmi library/nametab.cmi lib/pp.cmi interp/ppextend.cmi \
- pretyping/rawterm.cmi interp/symbols.cmi kernel/term.cmi \
- interp/topconstr.cmi lib/util.cmi parsing/ppconstr.cmi
-parsing/ppconstr.cmx: parsing/ast.cmx lib/bignat.cmx parsing/coqast.cmx \
- interp/genarg.cmx library/libnames.cmx library/nameops.cmx \
- kernel/names.cmx library/nametab.cmx lib/pp.cmx interp/ppextend.cmx \
- pretyping/rawterm.cmx interp/symbols.cmx kernel/term.cmx \
- interp/topconstr.cmx lib/util.cmx parsing/ppconstr.cmi
+parsing/ppconstr.cmo: parsing/ast.cmi lib/bignat.cmi interp/constrextern.cmi \
+ parsing/coqast.cmi interp/genarg.cmi library/libnames.cmi \
+ library/nameops.cmi kernel/names.cmi library/nametab.cmi lib/pp.cmi \
+ interp/ppextend.cmi pretyping/rawterm.cmi interp/symbols.cmi \
+ kernel/term.cmi interp/topconstr.cmi lib/util.cmi parsing/ppconstr.cmi
+parsing/ppconstr.cmx: parsing/ast.cmx lib/bignat.cmx interp/constrextern.cmx \
+ parsing/coqast.cmx interp/genarg.cmx library/libnames.cmx \
+ library/nameops.cmx kernel/names.cmx library/nametab.cmx lib/pp.cmx \
+ interp/ppextend.cmx pretyping/rawterm.cmx interp/symbols.cmx \
+ kernel/term.cmx interp/topconstr.cmx lib/util.cmx parsing/ppconstr.cmi
parsing/pptactic.cmo: kernel/closure.cmi lib/dyn.cmi parsing/egrammar.cmi \
parsing/extend.cmi interp/genarg.cmi library/libnames.cmi \
- library/nameops.cmi kernel/names.cmi lib/options.cmi lib/pp.cmi \
- parsing/ppconstr.cmi parsing/printer.cmi pretyping/rawterm.cmi \
+ library/nameops.cmi kernel/names.cmi library/nametab.cmi lib/options.cmi \
+ lib/pp.cmi parsing/ppconstr.cmi parsing/printer.cmi pretyping/rawterm.cmi \
proofs/tacexpr.cmo kernel/term.cmi interp/topconstr.cmi lib/util.cmi \
parsing/pptactic.cmi
parsing/pptactic.cmx: kernel/closure.cmx lib/dyn.cmx parsing/egrammar.cmx \
parsing/extend.cmx interp/genarg.cmx library/libnames.cmx \
- library/nameops.cmx kernel/names.cmx lib/options.cmx lib/pp.cmx \
- parsing/ppconstr.cmx parsing/printer.cmx pretyping/rawterm.cmx \
+ library/nameops.cmx kernel/names.cmx library/nametab.cmx lib/options.cmx \
+ lib/pp.cmx parsing/ppconstr.cmx parsing/printer.cmx pretyping/rawterm.cmx \
proofs/tacexpr.cmx kernel/term.cmx interp/topconstr.cmx lib/util.cmx \
parsing/pptactic.cmi
parsing/prettyp.cmo: pretyping/classops.cmi interp/constrextern.cmi \
@@ -1154,48 +1162,50 @@ parsing/search.cmo: parsing/coqast.cmi interp/coqlib.cmi \
kernel/declarations.cmi library/declare.cmi library/declaremods.cmi \
kernel/environ.cmi pretyping/evd.cmi library/global.cmi \
library/libnames.cmi library/libobject.cmi library/library.cmi \
- library/nameops.cmi kernel/names.cmi library/nametab.cmi \
- pretyping/pattern.cmi lib/pp.cmi pretyping/pretyping.cmi \
- parsing/printer.cmi pretyping/rawterm.cmi pretyping/retyping.cmi \
- kernel/term.cmi pretyping/termops.cmi pretyping/typing.cmi lib/util.cmi \
- parsing/search.cmi
+ pretyping/matching.cmi library/nameops.cmi kernel/names.cmi \
+ library/nametab.cmi pretyping/pattern.cmi lib/pp.cmi \
+ pretyping/pretyping.cmi parsing/printer.cmi pretyping/rawterm.cmi \
+ pretyping/retyping.cmi kernel/term.cmi pretyping/termops.cmi \
+ pretyping/typing.cmi lib/util.cmi parsing/search.cmi
parsing/search.cmx: parsing/coqast.cmx interp/coqlib.cmx \
kernel/declarations.cmx library/declare.cmx library/declaremods.cmx \
kernel/environ.cmx pretyping/evd.cmx library/global.cmx \
library/libnames.cmx library/libobject.cmx library/library.cmx \
- library/nameops.cmx kernel/names.cmx library/nametab.cmx \
- pretyping/pattern.cmx lib/pp.cmx pretyping/pretyping.cmx \
- parsing/printer.cmx pretyping/rawterm.cmx pretyping/retyping.cmx \
- kernel/term.cmx pretyping/termops.cmx pretyping/typing.cmx lib/util.cmx \
- parsing/search.cmi
-parsing/tacextend.cmo: interp/genarg.cmi parsing/pcoq.cmi lib/pp.cmi \
- lib/pp_control.cmi parsing/q_coqast.cmo parsing/q_util.cmi lib/util.cmi \
- toplevel/vernacexpr.cmo
-parsing/tacextend.cmx: interp/genarg.cmx parsing/pcoq.cmx lib/pp.cmx \
- lib/pp_control.cmx parsing/q_coqast.cmx parsing/q_util.cmx lib/util.cmx \
- toplevel/vernacexpr.cmx
+ pretyping/matching.cmx library/nameops.cmx kernel/names.cmx \
+ library/nametab.cmx pretyping/pattern.cmx lib/pp.cmx \
+ pretyping/pretyping.cmx parsing/printer.cmx pretyping/rawterm.cmx \
+ pretyping/retyping.cmx kernel/term.cmx pretyping/termops.cmx \
+ pretyping/typing.cmx lib/util.cmx parsing/search.cmi
+parsing/tacextend.cmo: parsing/argextend.cmo interp/genarg.cmi \
+ parsing/pcoq.cmi lib/pp.cmi lib/pp_control.cmi parsing/q_coqast.cmo \
+ parsing/q_util.cmi lib/util.cmi toplevel/vernacexpr.cmo
+parsing/tacextend.cmx: parsing/argextend.cmx interp/genarg.cmx \
+ parsing/pcoq.cmx lib/pp.cmx lib/pp_control.cmx parsing/q_coqast.cmx \
+ parsing/q_util.cmx lib/util.cmx toplevel/vernacexpr.cmx
parsing/termast.cmo: parsing/ast.cmi pretyping/classops.cmi \
- parsing/coqast.cmi library/declare.cmi pretyping/detyping.cmi \
- kernel/environ.cmi library/impargs.cmi kernel/inductive.cmi \
- library/libnames.cmi library/nameops.cmi kernel/names.cmi \
- library/nametab.cmi pretyping/pattern.cmi lib/pp.cmi \
+ interp/constrextern.cmi parsing/coqast.cmi library/declare.cmi \
+ pretyping/detyping.cmi kernel/environ.cmi library/impargs.cmi \
+ kernel/inductive.cmi library/libnames.cmi library/nameops.cmi \
+ kernel/names.cmi library/nametab.cmi pretyping/pattern.cmi lib/pp.cmi \
pretyping/rawterm.cmi pretyping/reductionops.cmi kernel/sign.cmi \
kernel/term.cmi pretyping/termops.cmi kernel/univ.cmi lib/util.cmi \
parsing/termast.cmi
parsing/termast.cmx: parsing/ast.cmx pretyping/classops.cmx \
- parsing/coqast.cmx library/declare.cmx pretyping/detyping.cmx \
- kernel/environ.cmx library/impargs.cmx kernel/inductive.cmx \
- library/libnames.cmx library/nameops.cmx kernel/names.cmx \
- library/nametab.cmx pretyping/pattern.cmx lib/pp.cmx \
+ interp/constrextern.cmx parsing/coqast.cmx library/declare.cmx \
+ pretyping/detyping.cmx kernel/environ.cmx library/impargs.cmx \
+ kernel/inductive.cmx library/libnames.cmx library/nameops.cmx \
+ kernel/names.cmx library/nametab.cmx pretyping/pattern.cmx lib/pp.cmx \
pretyping/rawterm.cmx pretyping/reductionops.cmx kernel/sign.cmx \
kernel/term.cmx pretyping/termops.cmx kernel/univ.cmx lib/util.cmx \
parsing/termast.cmi
-parsing/vernacextend.cmo: parsing/ast.cmi interp/genarg.cmi parsing/pcoq.cmi \
- lib/pp.cmi lib/pp_control.cmi parsing/q_coqast.cmo parsing/q_util.cmi \
- lib/util.cmi toplevel/vernacexpr.cmo
-parsing/vernacextend.cmx: parsing/ast.cmx interp/genarg.cmx parsing/pcoq.cmx \
- lib/pp.cmx lib/pp_control.cmx parsing/q_coqast.cmx parsing/q_util.cmx \
- lib/util.cmx toplevel/vernacexpr.cmx
+parsing/vernacextend.cmo: parsing/argextend.cmo parsing/ast.cmi \
+ interp/genarg.cmi parsing/pcoq.cmi lib/pp.cmi lib/pp_control.cmi \
+ parsing/q_coqast.cmo parsing/q_util.cmi lib/util.cmi \
+ toplevel/vernacexpr.cmo
+parsing/vernacextend.cmx: parsing/argextend.cmx parsing/ast.cmx \
+ interp/genarg.cmx parsing/pcoq.cmx lib/pp.cmx lib/pp_control.cmx \
+ parsing/q_coqast.cmx parsing/q_util.cmx lib/util.cmx \
+ toplevel/vernacexpr.cmx
pretyping/cases.cmo: pretyping/coercion.cmi kernel/declarations.cmi \
kernel/environ.cmi pretyping/evarconv.cmi pretyping/evarutil.cmi \
library/global.cmi kernel/inductive.cmi pretyping/inductiveops.cmi \
@@ -1316,14 +1326,22 @@ pretyping/instantiate.cmo: kernel/declarations.cmi kernel/environ.cmi \
pretyping/instantiate.cmx: kernel/declarations.cmx kernel/environ.cmx \
pretyping/evd.cmx kernel/names.cmx lib/pp.cmx kernel/sign.cmx \
kernel/term.cmx lib/util.cmx pretyping/instantiate.cmi
-pretyping/pattern.cmo: kernel/environ.cmi library/libnames.cmi \
- library/nameops.cmi kernel/names.cmi library/nametab.cmi \
+pretyping/matching.cmo: kernel/environ.cmi library/libnames.cmi \
+ library/nameops.cmi kernel/names.cmi pretyping/pattern.cmi \
pretyping/rawterm.cmi pretyping/reductionops.cmi kernel/term.cmi \
- pretyping/termops.cmi lib/util.cmi pretyping/pattern.cmi
-pretyping/pattern.cmx: kernel/environ.cmx library/libnames.cmx \
- library/nameops.cmx kernel/names.cmx library/nametab.cmx \
+ pretyping/termops.cmi lib/util.cmi pretyping/matching.cmi
+pretyping/matching.cmx: kernel/environ.cmx library/libnames.cmx \
+ library/nameops.cmx kernel/names.cmx pretyping/pattern.cmx \
pretyping/rawterm.cmx pretyping/reductionops.cmx kernel/term.cmx \
- pretyping/termops.cmx lib/util.cmx pretyping/pattern.cmi
+ pretyping/termops.cmx lib/util.cmx pretyping/matching.cmi
+pretyping/pattern.cmo: kernel/environ.cmi library/libnames.cmi \
+ library/nameops.cmi kernel/names.cmi library/nametab.cmi lib/options.cmi \
+ lib/pp.cmi pretyping/rawterm.cmi kernel/term.cmi lib/util.cmi \
+ pretyping/pattern.cmi
+pretyping/pattern.cmx: kernel/environ.cmx library/libnames.cmx \
+ library/nameops.cmx kernel/names.cmx library/nametab.cmx lib/options.cmx \
+ lib/pp.cmx pretyping/rawterm.cmx kernel/term.cmx lib/util.cmx \
+ pretyping/pattern.cmi
pretyping/pretype_errors.cmo: kernel/environ.cmi pretyping/evd.cmi \
pretyping/inductiveops.cmi kernel/names.cmi pretyping/rawterm.cmi \
kernel/reduction.cmi pretyping/reductionops.cmi kernel/sign.cmi \
@@ -1454,20 +1472,20 @@ proofs/logic.cmo: interp/constrextern.cmi parsing/coqast.cmi \
library/declare.cmi kernel/environ.cmi pretyping/evarutil.cmi \
pretyping/evd.cmi library/global.cmi kernel/inductive.cmi \
pretyping/inductiveops.cmi library/nameops.cmi kernel/names.cmi \
- library/nametab.cmi lib/pp.cmi parsing/printer.cmi proofs/proof_trees.cmi \
- proofs/proof_type.cmi pretyping/reductionops.cmi pretyping/retyping.cmi \
- kernel/sign.cmi kernel/term.cmi pretyping/termops.cmi \
- kernel/type_errors.cmi kernel/typeops.cmi pretyping/typing.cmi \
- lib/util.cmi proofs/logic.cmi
+ library/nametab.cmi lib/pp.cmi pretyping/pretype_errors.cmi \
+ parsing/printer.cmi proofs/proof_trees.cmi proofs/proof_type.cmi \
+ pretyping/reductionops.cmi pretyping/retyping.cmi kernel/sign.cmi \
+ kernel/term.cmi pretyping/termops.cmi kernel/type_errors.cmi \
+ kernel/typeops.cmi pretyping/typing.cmi lib/util.cmi proofs/logic.cmi
proofs/logic.cmx: interp/constrextern.cmx parsing/coqast.cmx \
library/declare.cmx kernel/environ.cmx pretyping/evarutil.cmx \
pretyping/evd.cmx library/global.cmx kernel/inductive.cmx \
pretyping/inductiveops.cmx library/nameops.cmx kernel/names.cmx \
- library/nametab.cmx lib/pp.cmx parsing/printer.cmx proofs/proof_trees.cmx \
- proofs/proof_type.cmx pretyping/reductionops.cmx pretyping/retyping.cmx \
- kernel/sign.cmx kernel/term.cmx pretyping/termops.cmx \
- kernel/type_errors.cmx kernel/typeops.cmx pretyping/typing.cmx \
- lib/util.cmx proofs/logic.cmi
+ library/nametab.cmx lib/pp.cmx pretyping/pretype_errors.cmx \
+ parsing/printer.cmx proofs/proof_trees.cmx proofs/proof_type.cmx \
+ pretyping/reductionops.cmx pretyping/retyping.cmx kernel/sign.cmx \
+ kernel/term.cmx pretyping/termops.cmx kernel/type_errors.cmx \
+ kernel/typeops.cmx pretyping/typing.cmx lib/util.cmx proofs/logic.cmi
proofs/pfedit.cmo: library/decl_kinds.cmo kernel/declarations.cmi \
library/declare.cmi lib/edit.cmi kernel/entries.cmi kernel/environ.cmi \
proofs/evar_refiner.cmi pretyping/evd.cmi library/lib.cmi \
@@ -1497,11 +1515,13 @@ proofs/proof_trees.cmx: kernel/closure.cmx pretyping/detyping.cmx \
kernel/term.cmx pretyping/termops.cmx pretyping/typing.cmx lib/util.cmx \
proofs/proof_trees.cmi
proofs/proof_type.cmo: kernel/environ.cmi pretyping/evd.cmi interp/genarg.cmi \
- library/libnames.cmi kernel/names.cmi pretyping/rawterm.cmi \
- proofs/tacexpr.cmo kernel/term.cmi lib/util.cmi proofs/proof_type.cmi
+ library/libnames.cmi kernel/names.cmi library/nametab.cmi \
+ pretyping/pattern.cmi pretyping/rawterm.cmi proofs/tacexpr.cmo \
+ kernel/term.cmi lib/util.cmi proofs/proof_type.cmi
proofs/proof_type.cmx: kernel/environ.cmx pretyping/evd.cmx interp/genarg.cmx \
- library/libnames.cmx kernel/names.cmx pretyping/rawterm.cmx \
- proofs/tacexpr.cmx kernel/term.cmx lib/util.cmx proofs/proof_type.cmi
+ library/libnames.cmx kernel/names.cmx library/nametab.cmx \
+ pretyping/pattern.cmx pretyping/rawterm.cmx proofs/tacexpr.cmx \
+ kernel/term.cmx lib/util.cmx proofs/proof_type.cmi
proofs/refiner.cmo: kernel/environ.cmi pretyping/evarutil.cmi \
pretyping/evd.cmi library/global.cmi pretyping/instantiate.cmi \
proofs/logic.cmi lib/pp.cmi parsing/pptactic.cmi parsing/printer.cmi \
@@ -1516,10 +1536,18 @@ proofs/refiner.cmx: kernel/environ.cmx pretyping/evarutil.cmx \
kernel/type_errors.cmx lib/util.cmx proofs/refiner.cmi
proofs/tacexpr.cmo: library/decl_kinds.cmo lib/dyn.cmi interp/genarg.cmi \
library/libnames.cmi kernel/names.cmi library/nametab.cmi \
- pretyping/rawterm.cmi interp/topconstr.cmi lib/util.cmi
+ pretyping/pattern.cmi pretyping/rawterm.cmi kernel/term.cmi \
+ interp/topconstr.cmi lib/util.cmi
proofs/tacexpr.cmx: library/decl_kinds.cmx lib/dyn.cmx interp/genarg.cmx \
library/libnames.cmx kernel/names.cmx library/nametab.cmx \
- pretyping/rawterm.cmx interp/topconstr.cmx lib/util.cmx
+ pretyping/pattern.cmx pretyping/rawterm.cmx kernel/term.cmx \
+ interp/topconstr.cmx lib/util.cmx
+proofs/tacintern.cmo: interp/constrintern.cmi kernel/environ.cmi \
+ pretyping/evd.cmi library/global.cmi proofs/logic.cmi library/nametab.cmi \
+ proofs/pfedit.cmi pretyping/pretype_errors.cmi
+proofs/tacintern.cmx: interp/constrintern.cmx kernel/environ.cmx \
+ pretyping/evd.cmx library/global.cmx proofs/logic.cmx library/nametab.cmx \
+ proofs/pfedit.cmx pretyping/pretype_errors.cmx
proofs/tacmach.cmo: interp/constrintern.cmi library/declare.cmi \
kernel/environ.cmi pretyping/evd.cmi library/global.cmi \
pretyping/instantiate.cmi proofs/logic.cmi library/nameops.cmi \
@@ -1553,29 +1581,29 @@ tactics/auto.cmo: tactics/btermdn.cmi proofs/clenv.cmi \
proofs/evar_refiner.cmi pretyping/evd.cmi library/global.cmi \
tactics/hiddentac.cmi tactics/hipattern.cmi kernel/inductive.cmi \
library/lib.cmi library/libnames.cmi library/libobject.cmi \
- library/library.cmi proofs/logic.cmi library/nameops.cmi kernel/names.cmi \
- library/nametab.cmi lib/options.cmi pretyping/pattern.cmi \
- proofs/pfedit.cmi lib/pp.cmi parsing/pptactic.cmi parsing/printer.cmi \
- proofs/proof_type.cmi pretyping/rawterm.cmi kernel/reduction.cmi \
- proofs/refiner.cmi kernel/sign.cmi library/summary.cmi proofs/tacexpr.cmo \
- proofs/tacmach.cmi pretyping/tacred.cmi tactics/tacticals.cmi \
- tactics/tactics.cmi kernel/term.cmi pretyping/termops.cmi \
- pretyping/typing.cmi lib/util.cmi toplevel/vernacexpr.cmo \
- tactics/auto.cmi
+ library/library.cmi proofs/logic.cmi pretyping/matching.cmi \
+ library/nameops.cmi kernel/names.cmi library/nametab.cmi lib/options.cmi \
+ pretyping/pattern.cmi proofs/pfedit.cmi lib/pp.cmi parsing/pptactic.cmi \
+ parsing/printer.cmi proofs/proof_type.cmi pretyping/rawterm.cmi \
+ kernel/reduction.cmi proofs/refiner.cmi kernel/sign.cmi \
+ library/summary.cmi proofs/tacexpr.cmo proofs/tacmach.cmi \
+ pretyping/tacred.cmi tactics/tacticals.cmi tactics/tactics.cmi \
+ kernel/term.cmi pretyping/termops.cmi pretyping/typing.cmi lib/util.cmi \
+ toplevel/vernacexpr.cmo tactics/auto.cmi
tactics/auto.cmx: tactics/btermdn.cmx proofs/clenv.cmx \
interp/constrintern.cmx kernel/declarations.cmx tactics/dhyp.cmx \
proofs/evar_refiner.cmx pretyping/evd.cmx library/global.cmx \
tactics/hiddentac.cmx tactics/hipattern.cmx kernel/inductive.cmx \
library/lib.cmx library/libnames.cmx library/libobject.cmx \
- library/library.cmx proofs/logic.cmx library/nameops.cmx kernel/names.cmx \
- library/nametab.cmx lib/options.cmx pretyping/pattern.cmx \
- proofs/pfedit.cmx lib/pp.cmx parsing/pptactic.cmx parsing/printer.cmx \
- proofs/proof_type.cmx pretyping/rawterm.cmx kernel/reduction.cmx \
- proofs/refiner.cmx kernel/sign.cmx library/summary.cmx proofs/tacexpr.cmx \
- proofs/tacmach.cmx pretyping/tacred.cmx tactics/tacticals.cmx \
- tactics/tactics.cmx kernel/term.cmx pretyping/termops.cmx \
- pretyping/typing.cmx lib/util.cmx toplevel/vernacexpr.cmx \
- tactics/auto.cmi
+ library/library.cmx proofs/logic.cmx pretyping/matching.cmx \
+ library/nameops.cmx kernel/names.cmx library/nametab.cmx lib/options.cmx \
+ pretyping/pattern.cmx proofs/pfedit.cmx lib/pp.cmx parsing/pptactic.cmx \
+ parsing/printer.cmx proofs/proof_type.cmx pretyping/rawterm.cmx \
+ kernel/reduction.cmx proofs/refiner.cmx kernel/sign.cmx \
+ library/summary.cmx proofs/tacexpr.cmx proofs/tacmach.cmx \
+ pretyping/tacred.cmx tactics/tacticals.cmx tactics/tactics.cmx \
+ kernel/term.cmx pretyping/termops.cmx pretyping/typing.cmx lib/util.cmx \
+ toplevel/vernacexpr.cmx tactics/auto.cmi
tactics/autorewrite.cmo: parsing/ast.cmi parsing/coqast.cmi \
tactics/equality.cmi tactics/hipattern.cmi library/lib.cmi \
library/libobject.cmi kernel/names.cmi lib/pp.cmi proofs/proof_type.cmi \
@@ -1603,73 +1631,79 @@ tactics/contradiction.cmx: interp/coqlib.cmx tactics/hipattern.cmx \
tactics/dhyp.cmo: parsing/ast.cmi proofs/clenv.cmi interp/constrintern.cmi \
kernel/environ.cmi pretyping/evd.cmi library/global.cmi library/lib.cmi \
library/libnames.cmi library/libobject.cmi library/library.cmi \
- kernel/names.cmi tactics/nbtermdn.cmi pretyping/pattern.cmi \
- parsing/pcoq.cmi lib/pp.cmi proofs/proof_type.cmi pretyping/rawterm.cmi \
- kernel/reduction.cmi proofs/refiner.cmi library/summary.cmi \
- proofs/tacexpr.cmo proofs/tacmach.cmi tactics/tacticals.cmi \
- tactics/tactics.cmi kernel/term.cmi lib/util.cmi tactics/dhyp.cmi
+ pretyping/matching.cmi kernel/names.cmi tactics/nbtermdn.cmi \
+ pretyping/pattern.cmi parsing/pcoq.cmi lib/pp.cmi proofs/proof_type.cmi \
+ pretyping/rawterm.cmi kernel/reduction.cmi proofs/refiner.cmi \
+ library/summary.cmi proofs/tacexpr.cmo proofs/tacmach.cmi \
+ tactics/tacticals.cmi tactics/tactics.cmi kernel/term.cmi lib/util.cmi \
+ tactics/dhyp.cmi
tactics/dhyp.cmx: parsing/ast.cmx proofs/clenv.cmx interp/constrintern.cmx \
kernel/environ.cmx pretyping/evd.cmx library/global.cmx library/lib.cmx \
library/libnames.cmx library/libobject.cmx library/library.cmx \
- kernel/names.cmx tactics/nbtermdn.cmx pretyping/pattern.cmx \
- parsing/pcoq.cmx lib/pp.cmx proofs/proof_type.cmx pretyping/rawterm.cmx \
- kernel/reduction.cmx proofs/refiner.cmx library/summary.cmx \
- proofs/tacexpr.cmx proofs/tacmach.cmx tactics/tacticals.cmx \
- tactics/tactics.cmx kernel/term.cmx lib/util.cmx tactics/dhyp.cmi
+ pretyping/matching.cmx kernel/names.cmx tactics/nbtermdn.cmx \
+ pretyping/pattern.cmx parsing/pcoq.cmx lib/pp.cmx proofs/proof_type.cmx \
+ pretyping/rawterm.cmx kernel/reduction.cmx proofs/refiner.cmx \
+ library/summary.cmx proofs/tacexpr.cmx proofs/tacmach.cmx \
+ tactics/tacticals.cmx tactics/tactics.cmx kernel/term.cmx lib/util.cmx \
+ tactics/dhyp.cmi
tactics/dn.cmo: lib/tlm.cmi tactics/dn.cmi
tactics/dn.cmx: lib/tlm.cmx tactics/dn.cmi
tactics/eauto.cmo: tactics/auto.cmi toplevel/cerrors.cmi proofs/clenv.cmi \
parsing/egrammar.cmi proofs/evar_refiner.cmi lib/explore.cmi \
- interp/genarg.cmi proofs/logic.cmi library/nameops.cmi kernel/names.cmi \
- pretyping/pattern.cmi parsing/pcoq.cmi lib/pp.cmi parsing/pptactic.cmi \
- proofs/proof_trees.cmi proofs/proof_type.cmi pretyping/rawterm.cmi \
- kernel/reduction.cmi proofs/refiner.cmi kernel/sign.cmi \
- tactics/tacinterp.cmi proofs/tacmach.cmi tactics/tacticals.cmi \
- tactics/tactics.cmi kernel/term.cmi pretyping/termops.cmi lib/util.cmi
+ parsing/extend.cmi interp/genarg.cmi proofs/logic.cmi library/nameops.cmi \
+ kernel/names.cmi pretyping/pattern.cmi parsing/pcoq.cmi lib/pp.cmi \
+ parsing/pptactic.cmi proofs/proof_trees.cmi proofs/proof_type.cmi \
+ pretyping/rawterm.cmi kernel/reduction.cmi proofs/refiner.cmi \
+ kernel/sign.cmi tactics/tacinterp.cmi proofs/tacmach.cmi \
+ tactics/tacticals.cmi tactics/tactics.cmi kernel/term.cmi \
+ pretyping/termops.cmi lib/util.cmi
tactics/eauto.cmx: tactics/auto.cmx toplevel/cerrors.cmx proofs/clenv.cmx \
parsing/egrammar.cmx proofs/evar_refiner.cmx lib/explore.cmx \
- interp/genarg.cmx proofs/logic.cmx library/nameops.cmx kernel/names.cmx \
- pretyping/pattern.cmx parsing/pcoq.cmx lib/pp.cmx parsing/pptactic.cmx \
- proofs/proof_trees.cmx proofs/proof_type.cmx pretyping/rawterm.cmx \
- kernel/reduction.cmx proofs/refiner.cmx kernel/sign.cmx \
- tactics/tacinterp.cmx proofs/tacmach.cmx tactics/tacticals.cmx \
- tactics/tactics.cmx kernel/term.cmx pretyping/termops.cmx lib/util.cmx
-tactics/elim.cmo: proofs/clenv.cmi kernel/environ.cmi tactics/hiddentac.cmi \
- tactics/hipattern.cmi pretyping/inductiveops.cmi library/libnames.cmi \
- kernel/names.cmi lib/pp.cmi parsing/printer.cmi proofs/proof_type.cmi \
- pretyping/rawterm.cmi kernel/reduction.cmi proofs/refiner.cmi \
+ parsing/extend.cmx interp/genarg.cmx proofs/logic.cmx library/nameops.cmx \
+ kernel/names.cmx pretyping/pattern.cmx parsing/pcoq.cmx lib/pp.cmx \
+ parsing/pptactic.cmx proofs/proof_trees.cmx proofs/proof_type.cmx \
+ pretyping/rawterm.cmx kernel/reduction.cmx proofs/refiner.cmx \
+ kernel/sign.cmx tactics/tacinterp.cmx proofs/tacmach.cmx \
+ tactics/tacticals.cmx tactics/tactics.cmx kernel/term.cmx \
+ pretyping/termops.cmx lib/util.cmx
+tactics/elim.cmo: proofs/clenv.cmi kernel/environ.cmi interp/genarg.cmi \
+ tactics/hiddentac.cmi tactics/hipattern.cmi pretyping/inductiveops.cmi \
+ library/libnames.cmi kernel/names.cmi lib/pp.cmi parsing/printer.cmi \
+ proofs/proof_type.cmi kernel/reduction.cmi proofs/refiner.cmi \
proofs/tacexpr.cmo proofs/tacmach.cmi tactics/tacticals.cmi \
tactics/tactics.cmi kernel/term.cmi pretyping/termops.cmi lib/util.cmi \
tactics/elim.cmi
-tactics/elim.cmx: proofs/clenv.cmx kernel/environ.cmx tactics/hiddentac.cmx \
- tactics/hipattern.cmx pretyping/inductiveops.cmx library/libnames.cmx \
- kernel/names.cmx lib/pp.cmx parsing/printer.cmx proofs/proof_type.cmx \
- pretyping/rawterm.cmx kernel/reduction.cmx proofs/refiner.cmx \
+tactics/elim.cmx: proofs/clenv.cmx kernel/environ.cmx interp/genarg.cmx \
+ tactics/hiddentac.cmx tactics/hipattern.cmx pretyping/inductiveops.cmx \
+ library/libnames.cmx kernel/names.cmx lib/pp.cmx parsing/printer.cmx \
+ proofs/proof_type.cmx kernel/reduction.cmx proofs/refiner.cmx \
proofs/tacexpr.cmx proofs/tacmach.cmx tactics/tacticals.cmx \
tactics/tactics.cmx kernel/term.cmx pretyping/termops.cmx lib/util.cmx \
tactics/elim.cmi
tactics/eqdecide.cmo: tactics/auto.cmi toplevel/cerrors.cmi interp/coqlib.cmi \
kernel/declarations.cmi parsing/egrammar.cmi tactics/equality.cmi \
tactics/extratactics.cmi interp/genarg.cmi library/global.cmi \
- tactics/hiddentac.cmi tactics/hipattern.cmi library/nameops.cmi \
- kernel/names.cmi pretyping/pattern.cmi parsing/pcoq.cmi lib/pp.cmi \
- parsing/pptactic.cmi proofs/proof_trees.cmi proofs/proof_type.cmi \
- pretyping/rawterm.cmi proofs/refiner.cmi proofs/tacmach.cmi \
- tactics/tacticals.cmi tactics/tactics.cmi kernel/term.cmi lib/util.cmi
+ tactics/hiddentac.cmi tactics/hipattern.cmi pretyping/matching.cmi \
+ library/nameops.cmi kernel/names.cmi pretyping/pattern.cmi \
+ parsing/pcoq.cmi lib/pp.cmi parsing/pptactic.cmi proofs/proof_trees.cmi \
+ proofs/proof_type.cmi pretyping/rawterm.cmi proofs/refiner.cmi \
+ proofs/tacmach.cmi tactics/tacticals.cmi tactics/tactics.cmi \
+ kernel/term.cmi lib/util.cmi
tactics/eqdecide.cmx: tactics/auto.cmx toplevel/cerrors.cmx interp/coqlib.cmx \
kernel/declarations.cmx parsing/egrammar.cmx tactics/equality.cmx \
tactics/extratactics.cmx interp/genarg.cmx library/global.cmx \
- tactics/hiddentac.cmx tactics/hipattern.cmx library/nameops.cmx \
- kernel/names.cmx pretyping/pattern.cmx parsing/pcoq.cmx lib/pp.cmx \
- parsing/pptactic.cmx proofs/proof_trees.cmx proofs/proof_type.cmx \
- pretyping/rawterm.cmx proofs/refiner.cmx proofs/tacmach.cmx \
- tactics/tacticals.cmx tactics/tactics.cmx kernel/term.cmx lib/util.cmx
+ tactics/hiddentac.cmx tactics/hipattern.cmx pretyping/matching.cmx \
+ library/nameops.cmx kernel/names.cmx pretyping/pattern.cmx \
+ parsing/pcoq.cmx lib/pp.cmx parsing/pptactic.cmx proofs/proof_trees.cmx \
+ proofs/proof_type.cmx pretyping/rawterm.cmx proofs/refiner.cmx \
+ proofs/tacmach.cmx tactics/tacticals.cmx tactics/tactics.cmx \
+ kernel/term.cmx lib/util.cmx
tactics/equality.cmo: proofs/clenv.cmi interp/coqlib.cmi \
kernel/declarations.cmi kernel/environ.cmi proofs/evar_refiner.cmi \
pretyping/evarutil.cmi tactics/hipattern.cmi pretyping/indrec.cmi \
kernel/inductive.cmi pretyping/inductiveops.cmi pretyping/instantiate.cmi \
- proofs/logic.cmi library/nameops.cmi kernel/names.cmi \
- pretyping/pattern.cmi lib/pp.cmi proofs/proof_type.cmi \
+ proofs/logic.cmi pretyping/matching.cmi library/nameops.cmi \
+ kernel/names.cmi pretyping/pattern.cmi lib/pp.cmi proofs/proof_type.cmi \
pretyping/rawterm.cmi pretyping/reductionops.cmi pretyping/retyping.cmi \
tactics/setoid_replace.cmi kernel/sign.cmi proofs/tacexpr.cmo \
tactics/tacinterp.cmi proofs/tacmach.cmi pretyping/tacred.cmi \
@@ -1681,8 +1715,8 @@ tactics/equality.cmx: proofs/clenv.cmx interp/coqlib.cmx \
kernel/declarations.cmx kernel/environ.cmx proofs/evar_refiner.cmx \
pretyping/evarutil.cmx tactics/hipattern.cmx pretyping/indrec.cmx \
kernel/inductive.cmx pretyping/inductiveops.cmx pretyping/instantiate.cmx \
- proofs/logic.cmx library/nameops.cmx kernel/names.cmx \
- pretyping/pattern.cmx lib/pp.cmx proofs/proof_type.cmx \
+ proofs/logic.cmx pretyping/matching.cmx library/nameops.cmx \
+ kernel/names.cmx pretyping/pattern.cmx lib/pp.cmx proofs/proof_type.cmx \
pretyping/rawterm.cmx pretyping/reductionops.cmx pretyping/retyping.cmx \
tactics/setoid_replace.cmx kernel/sign.cmx proofs/tacexpr.cmx \
tactics/tacinterp.cmx proofs/tacmach.cmx pretyping/tacred.cmx \
@@ -1691,13 +1725,11 @@ tactics/equality.cmx: proofs/clenv.cmx interp/coqlib.cmx \
kernel/univ.cmx lib/util.cmx toplevel/vernacexpr.cmx \
toplevel/vernacinterp.cmx tactics/wcclausenv.cmx tactics/equality.cmi
tactics/extraargs.cmo: parsing/extend.cmi interp/genarg.cmi \
- toplevel/metasyntax.cmi parsing/pcoq.cmi lib/pp.cmi parsing/ppconstr.cmi \
- parsing/pptactic.cmi parsing/printer.cmi tactics/tacinterp.cmi \
- tactics/extraargs.cmi
+ toplevel/metasyntax.cmi parsing/pcoq.cmi lib/pp.cmi parsing/pptactic.cmi \
+ tactics/tacinterp.cmi tactics/extraargs.cmi
tactics/extraargs.cmx: parsing/extend.cmx interp/genarg.cmx \
- toplevel/metasyntax.cmx parsing/pcoq.cmx lib/pp.cmx parsing/ppconstr.cmx \
- parsing/pptactic.cmx parsing/printer.cmx tactics/tacinterp.cmx \
- tactics/extraargs.cmi
+ toplevel/metasyntax.cmx parsing/pcoq.cmx lib/pp.cmx parsing/pptactic.cmx \
+ tactics/tacinterp.cmx tactics/extraargs.cmi
tactics/extratactics.cmo: tactics/autorewrite.cmi toplevel/cerrors.cmi \
interp/constrintern.cmi tactics/contradiction.cmi parsing/egrammar.cmi \
tactics/equality.cmi pretyping/evd.cmi tactics/extraargs.cmi \
@@ -1714,44 +1746,46 @@ tactics/extratactics.cmx: tactics/autorewrite.cmx toplevel/cerrors.cmx \
tactics/refine.cmx proofs/refiner.cmx tactics/setoid_replace.cmx \
proofs/tacexpr.cmx tactics/tacinterp.cmx kernel/term.cmx \
toplevel/vernacinterp.cmx tactics/extratactics.cmi
-tactics/hiddentac.cmo: proofs/evar_refiner.cmi kernel/names.cmi \
- proofs/proof_type.cmi pretyping/rawterm.cmi proofs/refiner.cmi \
- proofs/tacexpr.cmo proofs/tacmach.cmi tactics/tactics.cmi kernel/term.cmi \
- lib/util.cmi tactics/hiddentac.cmi
-tactics/hiddentac.cmx: proofs/evar_refiner.cmx kernel/names.cmx \
- proofs/proof_type.cmx pretyping/rawterm.cmx proofs/refiner.cmx \
- proofs/tacexpr.cmx proofs/tacmach.cmx tactics/tactics.cmx kernel/term.cmx \
- lib/util.cmx tactics/hiddentac.cmi
+tactics/hiddentac.cmo: proofs/evar_refiner.cmi interp/genarg.cmi \
+ kernel/names.cmi proofs/proof_type.cmi pretyping/rawterm.cmi \
+ proofs/refiner.cmi proofs/tacexpr.cmo proofs/tacmach.cmi \
+ tactics/tactics.cmi kernel/term.cmi lib/util.cmi tactics/hiddentac.cmi
+tactics/hiddentac.cmx: proofs/evar_refiner.cmx interp/genarg.cmx \
+ kernel/names.cmx proofs/proof_type.cmx pretyping/rawterm.cmx \
+ proofs/refiner.cmx proofs/tacexpr.cmx proofs/tacmach.cmx \
+ tactics/tactics.cmx kernel/term.cmx lib/util.cmx tactics/hiddentac.cmi
tactics/hipattern.cmo: proofs/clenv.cmi interp/coqlib.cmi \
kernel/declarations.cmi kernel/environ.cmi pretyping/evd.cmi \
- library/global.cmi pretyping/inductiveops.cmi library/nameops.cmi \
- kernel/names.cmi pretyping/pattern.cmi lib/pp.cmi proofs/proof_trees.cmi \
- pretyping/reductionops.cmi kernel/term.cmi pretyping/termops.cmi \
- lib/util.cmi tactics/hipattern.cmi
+ library/global.cmi pretyping/inductiveops.cmi pretyping/matching.cmi \
+ library/nameops.cmi kernel/names.cmi pretyping/pattern.cmi lib/pp.cmi \
+ proofs/proof_trees.cmi pretyping/reductionops.cmi kernel/term.cmi \
+ pretyping/termops.cmi lib/util.cmi tactics/hipattern.cmi
tactics/hipattern.cmx: proofs/clenv.cmx interp/coqlib.cmx \
kernel/declarations.cmx kernel/environ.cmx pretyping/evd.cmx \
- library/global.cmx pretyping/inductiveops.cmx library/nameops.cmx \
- kernel/names.cmx pretyping/pattern.cmx lib/pp.cmx proofs/proof_trees.cmx \
- pretyping/reductionops.cmx kernel/term.cmx pretyping/termops.cmx \
- lib/util.cmx tactics/hipattern.cmi
+ library/global.cmx pretyping/inductiveops.cmx pretyping/matching.cmx \
+ library/nameops.cmx kernel/names.cmx pretyping/pattern.cmx lib/pp.cmx \
+ proofs/proof_trees.cmx pretyping/reductionops.cmx kernel/term.cmx \
+ pretyping/termops.cmx lib/util.cmx tactics/hipattern.cmi
tactics/inv.cmo: proofs/clenv.cmi interp/coqlib.cmi tactics/elim.cmi \
kernel/environ.cmi tactics/equality.cmi proofs/evar_refiner.cmi \
- library/global.cmi pretyping/inductiveops.cmi library/nameops.cmi \
- kernel/names.cmi pretyping/pattern.cmi lib/pp.cmi parsing/printer.cmi \
- proofs/proof_type.cmi pretyping/rawterm.cmi kernel/reduction.cmi \
- pretyping/reductionops.cmi pretyping/retyping.cmi kernel/sign.cmi \
- proofs/tacexpr.cmo proofs/tacmach.cmi tactics/tacticals.cmi \
- tactics/tactics.cmi kernel/term.cmi pretyping/termops.cmi \
- pretyping/typing.cmi lib/util.cmi tactics/wcclausenv.cmi tactics/inv.cmi
+ library/global.cmi pretyping/inductiveops.cmi pretyping/matching.cmi \
+ library/nameops.cmi kernel/names.cmi pretyping/pattern.cmi lib/pp.cmi \
+ parsing/printer.cmi proofs/proof_type.cmi pretyping/rawterm.cmi \
+ kernel/reduction.cmi pretyping/reductionops.cmi pretyping/retyping.cmi \
+ kernel/sign.cmi proofs/tacexpr.cmo proofs/tacmach.cmi \
+ tactics/tacticals.cmi tactics/tactics.cmi kernel/term.cmi \
+ pretyping/termops.cmi pretyping/typing.cmi lib/util.cmi \
+ tactics/wcclausenv.cmi tactics/inv.cmi
tactics/inv.cmx: proofs/clenv.cmx interp/coqlib.cmx tactics/elim.cmx \
kernel/environ.cmx tactics/equality.cmx proofs/evar_refiner.cmx \
- library/global.cmx pretyping/inductiveops.cmx library/nameops.cmx \
- kernel/names.cmx pretyping/pattern.cmx lib/pp.cmx parsing/printer.cmx \
- proofs/proof_type.cmx pretyping/rawterm.cmx kernel/reduction.cmx \
- pretyping/reductionops.cmx pretyping/retyping.cmx kernel/sign.cmx \
- proofs/tacexpr.cmx proofs/tacmach.cmx tactics/tacticals.cmx \
- tactics/tactics.cmx kernel/term.cmx pretyping/termops.cmx \
- pretyping/typing.cmx lib/util.cmx tactics/wcclausenv.cmx tactics/inv.cmi
+ library/global.cmx pretyping/inductiveops.cmx pretyping/matching.cmx \
+ library/nameops.cmx kernel/names.cmx pretyping/pattern.cmx lib/pp.cmx \
+ parsing/printer.cmx proofs/proof_type.cmx pretyping/rawterm.cmx \
+ kernel/reduction.cmx pretyping/reductionops.cmx pretyping/retyping.cmx \
+ kernel/sign.cmx proofs/tacexpr.cmx proofs/tacmach.cmx \
+ tactics/tacticals.cmx tactics/tactics.cmx kernel/term.cmx \
+ pretyping/termops.cmx pretyping/typing.cmx lib/util.cmx \
+ tactics/wcclausenv.cmx tactics/inv.cmi
tactics/leminv.cmo: proofs/clenv.cmi interp/constrintern.cmi \
library/decl_kinds.cmo kernel/declarations.cmi library/declare.cmi \
kernel/entries.cmi kernel/environ.cmi proofs/evar_refiner.cmi \
@@ -1785,21 +1819,21 @@ tactics/newtauto.cmo: parsing/ast.cmi toplevel/cerrors.cmi parsing/coqast.cmi \
pretyping/evd.cmi interp/genarg.cmi library/global.cmi \
tactics/hipattern.cmi pretyping/inductiveops.cmi library/libnames.cmi \
kernel/names.cmi parsing/pcoq.cmi lib/pp.cmi parsing/pptactic.cmi \
- parsing/printer.cmi proofs/proof_type.cmi pretyping/rawterm.cmi \
- pretyping/reductionops.cmi proofs/refiner.cmi kernel/sign.cmi \
- proofs/tacexpr.cmo tactics/tacinterp.cmi proofs/tacmach.cmi \
- tactics/tacticals.cmi tactics/tactics.cmi tactics/tauto.cmo \
- kernel/term.cmi pretyping/termops.cmi interp/topconstr.cmi lib/util.cmi
+ parsing/printer.cmi proofs/proof_type.cmi pretyping/reductionops.cmi \
+ proofs/refiner.cmi kernel/sign.cmi proofs/tacexpr.cmo \
+ tactics/tacinterp.cmi proofs/tacmach.cmi tactics/tacticals.cmi \
+ tactics/tactics.cmi tactics/tauto.cmo kernel/term.cmi \
+ pretyping/termops.cmi interp/topconstr.cmi lib/util.cmi
tactics/newtauto.cmx: parsing/ast.cmx toplevel/cerrors.cmx parsing/coqast.cmx \
kernel/declarations.cmx parsing/egrammar.cmx kernel/environ.cmx \
pretyping/evd.cmx interp/genarg.cmx library/global.cmx \
tactics/hipattern.cmx pretyping/inductiveops.cmx library/libnames.cmx \
kernel/names.cmx parsing/pcoq.cmx lib/pp.cmx parsing/pptactic.cmx \
- parsing/printer.cmx proofs/proof_type.cmx pretyping/rawterm.cmx \
- pretyping/reductionops.cmx proofs/refiner.cmx kernel/sign.cmx \
- proofs/tacexpr.cmx tactics/tacinterp.cmx proofs/tacmach.cmx \
- tactics/tacticals.cmx tactics/tactics.cmx tactics/tauto.cmx \
- kernel/term.cmx pretyping/termops.cmx interp/topconstr.cmx lib/util.cmx
+ parsing/printer.cmx proofs/proof_type.cmx pretyping/reductionops.cmx \
+ proofs/refiner.cmx kernel/sign.cmx proofs/tacexpr.cmx \
+ tactics/tacinterp.cmx proofs/tacmach.cmx tactics/tacticals.cmx \
+ tactics/tactics.cmx tactics/tauto.cmx kernel/term.cmx \
+ pretyping/termops.cmx interp/topconstr.cmx lib/util.cmx
tactics/refine.cmo: proofs/clenv.cmi kernel/environ.cmi pretyping/evd.cmi \
kernel/names.cmi lib/pp.cmi parsing/printer.cmi kernel/reduction.cmi \
pretyping/retyping.cmi kernel/sign.cmi proofs/tacmach.cmi \
@@ -1842,44 +1876,46 @@ tactics/tacinterp.cmo: parsing/ast.cmi tactics/auto.cmi kernel/closure.cmi \
tactics/elim.cmi kernel/entries.cmi kernel/environ.cmi pretyping/evd.cmi \
interp/genarg.cmi library/global.cmi lib/gmap.cmi tactics/hiddentac.cmi \
library/lib.cmi library/libnames.cmi library/libobject.cmi \
- proofs/logic.cmi library/nameops.cmi kernel/names.cmi library/nametab.cmi \
- lib/options.cmi pretyping/pattern.cmi proofs/pfedit.cmi lib/pp.cmi \
+ proofs/logic.cmi pretyping/matching.cmi library/nameops.cmi \
+ kernel/names.cmi library/nametab.cmi lib/options.cmi \
+ pretyping/pattern.cmi proofs/pfedit.cmi lib/pp.cmi \
pretyping/pretype_errors.cmi pretyping/pretyping.cmi parsing/printer.cmi \
proofs/proof_type.cmi pretyping/rawterm.cmi proofs/refiner.cmi \
- kernel/safe_typing.cmi kernel/sign.cmi library/summary.cmi \
- proofs/tacexpr.cmo proofs/tacmach.cmi pretyping/tacred.cmi \
- proofs/tactic_debug.cmi tactics/tactics.cmi kernel/term.cmi \
- pretyping/termops.cmi interp/topconstr.cmi pretyping/typing.cmi \
- lib/util.cmi tactics/tacinterp.cmi
+ pretyping/retyping.cmi kernel/safe_typing.cmi kernel/sign.cmi \
+ library/summary.cmi proofs/tacexpr.cmo proofs/tacmach.cmi \
+ pretyping/tacred.cmi proofs/tactic_debug.cmi tactics/tactics.cmi \
+ kernel/term.cmi pretyping/termops.cmi interp/topconstr.cmi \
+ pretyping/typing.cmi lib/util.cmi tactics/tacinterp.cmi
tactics/tacinterp.cmx: parsing/ast.cmx tactics/auto.cmx kernel/closure.cmx \
interp/constrintern.cmx parsing/coqast.cmx library/decl_kinds.cmx \
kernel/declarations.cmx library/declare.cmx tactics/dhyp.cmx lib/dyn.cmx \
tactics/elim.cmx kernel/entries.cmx kernel/environ.cmx pretyping/evd.cmx \
interp/genarg.cmx library/global.cmx lib/gmap.cmx tactics/hiddentac.cmx \
library/lib.cmx library/libnames.cmx library/libobject.cmx \
- proofs/logic.cmx library/nameops.cmx kernel/names.cmx library/nametab.cmx \
- lib/options.cmx pretyping/pattern.cmx proofs/pfedit.cmx lib/pp.cmx \
+ proofs/logic.cmx pretyping/matching.cmx library/nameops.cmx \
+ kernel/names.cmx library/nametab.cmx lib/options.cmx \
+ pretyping/pattern.cmx proofs/pfedit.cmx lib/pp.cmx \
pretyping/pretype_errors.cmx pretyping/pretyping.cmx parsing/printer.cmx \
proofs/proof_type.cmx pretyping/rawterm.cmx proofs/refiner.cmx \
- kernel/safe_typing.cmx kernel/sign.cmx library/summary.cmx \
- proofs/tacexpr.cmx proofs/tacmach.cmx pretyping/tacred.cmx \
- proofs/tactic_debug.cmx tactics/tactics.cmx kernel/term.cmx \
- pretyping/termops.cmx interp/topconstr.cmx pretyping/typing.cmx \
- lib/util.cmx tactics/tacinterp.cmi
+ pretyping/retyping.cmx kernel/safe_typing.cmx kernel/sign.cmx \
+ library/summary.cmx proofs/tacexpr.cmx proofs/tacmach.cmx \
+ pretyping/tacred.cmx proofs/tactic_debug.cmx tactics/tactics.cmx \
+ kernel/term.cmx pretyping/termops.cmx interp/topconstr.cmx \
+ pretyping/typing.cmx lib/util.cmx tactics/tacinterp.cmi
tactics/tacticals.cmo: proofs/clenv.cmi kernel/declarations.cmi \
library/declare.cmi kernel/environ.cmi proofs/evar_refiner.cmi \
library/global.cmi pretyping/indrec.cmi kernel/inductive.cmi \
- library/libnames.cmi kernel/names.cmi pretyping/pattern.cmi lib/pp.cmi \
- kernel/reduction.cmi proofs/refiner.cmi kernel/sign.cmi \
- proofs/tacmach.cmi kernel/term.cmi pretyping/termops.cmi lib/util.cmi \
- tactics/wcclausenv.cmi tactics/tacticals.cmi
+ library/libnames.cmi pretyping/matching.cmi kernel/names.cmi \
+ pretyping/pattern.cmi lib/pp.cmi kernel/reduction.cmi proofs/refiner.cmi \
+ kernel/sign.cmi proofs/tacmach.cmi kernel/term.cmi pretyping/termops.cmi \
+ lib/util.cmi tactics/wcclausenv.cmi tactics/tacticals.cmi
tactics/tacticals.cmx: proofs/clenv.cmx kernel/declarations.cmx \
library/declare.cmx kernel/environ.cmx proofs/evar_refiner.cmx \
library/global.cmx pretyping/indrec.cmx kernel/inductive.cmx \
- library/libnames.cmx kernel/names.cmx pretyping/pattern.cmx lib/pp.cmx \
- kernel/reduction.cmx proofs/refiner.cmx kernel/sign.cmx \
- proofs/tacmach.cmx kernel/term.cmx pretyping/termops.cmx lib/util.cmx \
- tactics/wcclausenv.cmx tactics/tacticals.cmi
+ library/libnames.cmx pretyping/matching.cmx kernel/names.cmx \
+ pretyping/pattern.cmx lib/pp.cmx kernel/reduction.cmx proofs/refiner.cmx \
+ kernel/sign.cmx proofs/tacmach.cmx kernel/term.cmx pretyping/termops.cmx \
+ lib/util.cmx tactics/wcclausenv.cmx tactics/tacticals.cmi
tactics/tactics.cmo: proofs/clenv.cmi interp/constrintern.cmi \
interp/coqlib.cmi library/decl_kinds.cmo kernel/declarations.cmi \
library/declare.cmi kernel/entries.cmi kernel/environ.cmi \
@@ -2171,10 +2207,9 @@ toplevel/vernacentries.cmo: tactics/auto.cmi toplevel/class.cmi \
kernel/safe_typing.cmi parsing/search.cmi library/states.cmi \
interp/symbols.cmi lib/system.cmi tactics/tacinterp.cmi \
proofs/tacmach.cmi pretyping/tacred.cmi proofs/tactic_debug.cmi \
- tactics/tactics.cmi kernel/term.cmi parsing/termast.cmi \
- interp/topconstr.cmi kernel/typeops.cmi kernel/univ.cmi lib/util.cmi \
- toplevel/vernacexpr.cmo toplevel/vernacinterp.cmi \
- toplevel/vernacentries.cmi
+ tactics/tactics.cmi kernel/term.cmi interp/topconstr.cmi \
+ kernel/typeops.cmi kernel/univ.cmi lib/util.cmi toplevel/vernacexpr.cmo \
+ toplevel/vernacinterp.cmi toplevel/vernacentries.cmi
toplevel/vernacentries.cmx: tactics/auto.cmx toplevel/class.cmx \
pretyping/classops.cmx toplevel/command.cmx interp/constrextern.cmx \
interp/constrintern.cmx library/decl_kinds.cmx library/declaremods.cmx \
@@ -2192,10 +2227,9 @@ toplevel/vernacentries.cmx: tactics/auto.cmx toplevel/class.cmx \
kernel/safe_typing.cmx parsing/search.cmx library/states.cmx \
interp/symbols.cmx lib/system.cmx tactics/tacinterp.cmx \
proofs/tacmach.cmx pretyping/tacred.cmx proofs/tactic_debug.cmx \
- tactics/tactics.cmx kernel/term.cmx parsing/termast.cmx \
- interp/topconstr.cmx kernel/typeops.cmx kernel/univ.cmx lib/util.cmx \
- toplevel/vernacexpr.cmx toplevel/vernacinterp.cmx \
- toplevel/vernacentries.cmi
+ tactics/tactics.cmx kernel/term.cmx interp/topconstr.cmx \
+ kernel/typeops.cmx kernel/univ.cmx lib/util.cmx toplevel/vernacexpr.cmx \
+ toplevel/vernacinterp.cmx toplevel/vernacentries.cmi
toplevel/vernacexpr.cmo: library/decl_kinds.cmo parsing/extend.cmi \
interp/genarg.cmi library/goptions.cmi library/libnames.cmi \
kernel/names.cmi library/nametab.cmi interp/ppextend.cmi \
@@ -2232,38 +2266,42 @@ translate/ppconstrnew.cmx: parsing/ast.cmx lib/bignat.cmx \
pretyping/rawterm.cmx interp/reserve.cmx interp/symbols.cmx \
kernel/term.cmx pretyping/termops.cmx interp/topconstr.cmx lib/util.cmx \
translate/ppconstrnew.cmi
-translate/pptacticnew.cmo: kernel/closure.cmi lib/dyn.cmi kernel/environ.cmi \
- parsing/extend.cmi interp/genarg.cmi library/libnames.cmi \
- library/nameops.cmi kernel/names.cmi lib/pp.cmi translate/ppconstrnew.cmi \
- interp/ppextend.cmi parsing/pptactic.cmi pretyping/rawterm.cmi \
- proofs/tacexpr.cmo pretyping/termops.cmi interp/topconstr.cmi \
- lib/util.cmi translate/pptacticnew.cmi
-translate/pptacticnew.cmx: kernel/closure.cmx lib/dyn.cmx kernel/environ.cmx \
- parsing/extend.cmx interp/genarg.cmx library/libnames.cmx \
- library/nameops.cmx kernel/names.cmx lib/pp.cmx translate/ppconstrnew.cmx \
- interp/ppextend.cmx parsing/pptactic.cmx pretyping/rawterm.cmx \
- proofs/tacexpr.cmx pretyping/termops.cmx interp/topconstr.cmx \
- lib/util.cmx translate/pptacticnew.cmi
+translate/pptacticnew.cmo: kernel/closure.cmi lib/dyn.cmi \
+ parsing/egrammar.cmi kernel/environ.cmi parsing/extend.cmi \
+ interp/genarg.cmi library/libnames.cmi library/nameops.cmi \
+ kernel/names.cmi library/nametab.cmi lib/pp.cmi translate/ppconstrnew.cmi \
+ interp/ppextend.cmi parsing/pptactic.cmi parsing/printer.cmi \
+ pretyping/rawterm.cmi proofs/tacexpr.cmo pretyping/termops.cmi \
+ interp/topconstr.cmi lib/util.cmi translate/pptacticnew.cmi
+translate/pptacticnew.cmx: kernel/closure.cmx lib/dyn.cmx \
+ parsing/egrammar.cmx kernel/environ.cmx parsing/extend.cmx \
+ interp/genarg.cmx library/libnames.cmx library/nameops.cmx \
+ kernel/names.cmx library/nametab.cmx lib/pp.cmx translate/ppconstrnew.cmx \
+ interp/ppextend.cmx parsing/pptactic.cmx parsing/printer.cmx \
+ pretyping/rawterm.cmx proofs/tacexpr.cmx pretyping/termops.cmx \
+ interp/topconstr.cmx lib/util.cmx translate/pptacticnew.cmi
translate/ppvernacnew.cmo: parsing/ast.cmi interp/constrextern.cmi \
interp/constrintern.cmi parsing/coqast.cmi library/decl_kinds.cmo \
parsing/egrammar.cmi pretyping/evd.cmi parsing/extend.cmi \
- interp/genarg.cmi library/global.cmi library/goptions.cmi \
+ interp/genarg.cmi library/global.cmi library/goptions.cmi library/lib.cmi \
library/libnames.cmi library/nameops.cmi kernel/names.cmi \
library/nametab.cmi lib/options.cmi parsing/pcoq.cmi proofs/pfedit.cmi \
lib/pp.cmi translate/ppconstrnew.cmi interp/ppextend.cmi \
- translate/pptacticnew.cmi pretyping/rawterm.cmi interp/reserve.cmi \
- proofs/tacexpr.cmo pretyping/termops.cmi interp/topconstr.cmi \
- lib/util.cmi toplevel/vernacexpr.cmo translate/ppvernacnew.cmi
+ parsing/pptactic.cmi translate/pptacticnew.cmi pretyping/rawterm.cmi \
+ interp/reserve.cmi proofs/tacexpr.cmo tactics/tacinterp.cmi \
+ pretyping/termops.cmi interp/topconstr.cmi lib/util.cmi \
+ toplevel/vernacexpr.cmo translate/ppvernacnew.cmi
translate/ppvernacnew.cmx: parsing/ast.cmx interp/constrextern.cmx \
interp/constrintern.cmx parsing/coqast.cmx library/decl_kinds.cmx \
parsing/egrammar.cmx pretyping/evd.cmx parsing/extend.cmx \
- interp/genarg.cmx library/global.cmx library/goptions.cmx \
+ interp/genarg.cmx library/global.cmx library/goptions.cmx library/lib.cmx \
library/libnames.cmx library/nameops.cmx kernel/names.cmx \
library/nametab.cmx lib/options.cmx parsing/pcoq.cmx proofs/pfedit.cmx \
lib/pp.cmx translate/ppconstrnew.cmx interp/ppextend.cmx \
- translate/pptacticnew.cmx pretyping/rawterm.cmx interp/reserve.cmx \
- proofs/tacexpr.cmx pretyping/termops.cmx interp/topconstr.cmx \
- lib/util.cmx toplevel/vernacexpr.cmx translate/ppvernacnew.cmi
+ parsing/pptactic.cmx translate/pptacticnew.cmx pretyping/rawterm.cmx \
+ interp/reserve.cmx proofs/tacexpr.cmx tactics/tacinterp.cmx \
+ pretyping/termops.cmx interp/topconstr.cmx lib/util.cmx \
+ toplevel/vernacexpr.cmx translate/ppvernacnew.cmi
contrib/cc/ccalgo.cmo: kernel/names.cmi kernel/term.cmi contrib/cc/ccalgo.cmi
contrib/cc/ccalgo.cmx: kernel/names.cmx kernel/term.cmx contrib/cc/ccalgo.cmi
contrib/cc/ccproof.cmo: contrib/cc/ccalgo.cmi kernel/names.cmi \
@@ -2381,23 +2419,25 @@ contrib/correctness/pmisc.cmx: library/declare.cmx pretyping/evarutil.cmx \
kernel/term.cmx interp/topconstr.cmx lib/util.cmx \
contrib/correctness/pmisc.cmi
contrib/correctness/pmlize.cmo: interp/coqlib.cmi pretyping/evd.cmi \
- library/global.cmi kernel/names.cmi contrib/correctness/past.cmi \
- pretyping/pattern.cmi contrib/correctness/pcicenv.cmi \
- contrib/correctness/peffect.cmi contrib/correctness/penv.cmi \
- contrib/correctness/pmisc.cmi contrib/correctness/pmonad.cmi \
- contrib/correctness/prename.cmi contrib/correctness/ptype.cmi \
- contrib/correctness/ptyping.cmi contrib/correctness/putil.cmi \
- pretyping/reductionops.cmi kernel/term.cmi parsing/termast.cmi \
- pretyping/typing.cmi lib/util.cmi contrib/correctness/pmlize.cmi
+ library/global.cmi pretyping/matching.cmi kernel/names.cmi \
+ contrib/correctness/past.cmi pretyping/pattern.cmi \
+ contrib/correctness/pcicenv.cmi contrib/correctness/peffect.cmi \
+ contrib/correctness/penv.cmi contrib/correctness/pmisc.cmi \
+ contrib/correctness/pmonad.cmi contrib/correctness/prename.cmi \
+ contrib/correctness/ptype.cmi contrib/correctness/ptyping.cmi \
+ contrib/correctness/putil.cmi pretyping/reductionops.cmi kernel/term.cmi \
+ parsing/termast.cmi pretyping/typing.cmi lib/util.cmi \
+ contrib/correctness/pmlize.cmi
contrib/correctness/pmlize.cmx: interp/coqlib.cmx pretyping/evd.cmx \
- library/global.cmx kernel/names.cmx contrib/correctness/past.cmi \
- pretyping/pattern.cmx contrib/correctness/pcicenv.cmx \
- contrib/correctness/peffect.cmx contrib/correctness/penv.cmx \
- contrib/correctness/pmisc.cmx contrib/correctness/pmonad.cmx \
- contrib/correctness/prename.cmx contrib/correctness/ptype.cmi \
- contrib/correctness/ptyping.cmx contrib/correctness/putil.cmx \
- pretyping/reductionops.cmx kernel/term.cmx parsing/termast.cmx \
- pretyping/typing.cmx lib/util.cmx contrib/correctness/pmlize.cmi
+ library/global.cmx pretyping/matching.cmx kernel/names.cmx \
+ contrib/correctness/past.cmi pretyping/pattern.cmx \
+ contrib/correctness/pcicenv.cmx contrib/correctness/peffect.cmx \
+ contrib/correctness/penv.cmx contrib/correctness/pmisc.cmx \
+ contrib/correctness/pmonad.cmx contrib/correctness/prename.cmx \
+ contrib/correctness/ptype.cmi contrib/correctness/ptyping.cmx \
+ contrib/correctness/putil.cmx pretyping/reductionops.cmx kernel/term.cmx \
+ parsing/termast.cmx pretyping/typing.cmx lib/util.cmx \
+ contrib/correctness/pmlize.cmi
contrib/correctness/pmonad.cmo: kernel/names.cmi contrib/correctness/past.cmi \
contrib/correctness/pcic.cmi contrib/correctness/peffect.cmi \
contrib/correctness/penv.cmi contrib/correctness/pmisc.cmi \
@@ -2507,15 +2547,15 @@ contrib/correctness/ptyping.cmx: interp/constrintern.cmx kernel/environ.cmx \
pretyping/termops.cmx interp/topconstr.cmx pretyping/typing.cmx \
lib/util.cmx contrib/correctness/ptyping.cmi
contrib/correctness/putil.cmo: interp/coqlib.cmi kernel/environ.cmi \
- library/global.cmi library/nameops.cmi kernel/names.cmi \
- contrib/correctness/past.cmi pretyping/pattern.cmi \
+ library/global.cmi pretyping/matching.cmi library/nameops.cmi \
+ kernel/names.cmi contrib/correctness/past.cmi pretyping/pattern.cmi \
contrib/correctness/peffect.cmi contrib/correctness/penv.cmi \
contrib/correctness/pmisc.cmi lib/pp.cmi contrib/correctness/prename.cmi \
parsing/printer.cmi contrib/correctness/ptype.cmi kernel/term.cmi \
pretyping/termops.cmi lib/util.cmi contrib/correctness/putil.cmi
contrib/correctness/putil.cmx: interp/coqlib.cmx kernel/environ.cmx \
- library/global.cmx library/nameops.cmx kernel/names.cmx \
- contrib/correctness/past.cmi pretyping/pattern.cmx \
+ library/global.cmx pretyping/matching.cmx library/nameops.cmx \
+ kernel/names.cmx contrib/correctness/past.cmi pretyping/pattern.cmx \
contrib/correctness/peffect.cmx contrib/correctness/penv.cmx \
contrib/correctness/pmisc.cmx lib/pp.cmx contrib/correctness/prename.cmx \
parsing/printer.cmx contrib/correctness/ptype.cmi kernel/term.cmx \
@@ -2644,30 +2684,6 @@ contrib/extraction/table.cmx: kernel/declarations.cmx kernel/environ.cmx \
library/nameops.cmx kernel/names.cmx library/nametab.cmx lib/options.cmx \
lib/pp.cmx parsing/printer.cmx kernel/reduction.cmx library/summary.cmx \
kernel/term.cmx lib/util.cmx contrib/extraction/table.cmi
-contrib/field/field.cmo: toplevel/cerrors.cmi interp/constrintern.cmi \
- interp/coqlib.cmi parsing/egrammar.cmi pretyping/evd.cmi \
- parsing/extend.cmi interp/genarg.cmi library/global.cmi lib/gmap.cmi \
- tactics/hipattern.cmi library/lib.cmi library/libnames.cmi \
- library/libobject.cmi library/library.cmi kernel/names.cmi \
- parsing/pcoq.cmi lib/pp.cmi translate/ppconstrnew.cmi \
- parsing/pptactic.cmi proofs/proof_type.cmi contrib/ring/quote.cmo \
- pretyping/reductionops.cmi proofs/refiner.cmi contrib/ring/ring.cmo \
- library/summary.cmi proofs/tacexpr.cmo tactics/tacinterp.cmi \
- proofs/tacmach.cmi tactics/tacticals.cmi kernel/term.cmi \
- interp/topconstr.cmi pretyping/typing.cmi lib/util.cmi \
- toplevel/vernacexpr.cmo toplevel/vernacinterp.cmi
-contrib/field/field.cmx: toplevel/cerrors.cmx interp/constrintern.cmx \
- interp/coqlib.cmx parsing/egrammar.cmx pretyping/evd.cmx \
- parsing/extend.cmx interp/genarg.cmx library/global.cmx lib/gmap.cmx \
- tactics/hipattern.cmx library/lib.cmx library/libnames.cmx \
- library/libobject.cmx library/library.cmx kernel/names.cmx \
- parsing/pcoq.cmx lib/pp.cmx translate/ppconstrnew.cmx \
- parsing/pptactic.cmx proofs/proof_type.cmx contrib/ring/quote.cmx \
- pretyping/reductionops.cmx proofs/refiner.cmx contrib/ring/ring.cmx \
- library/summary.cmx proofs/tacexpr.cmx tactics/tacinterp.cmx \
- proofs/tacmach.cmx tactics/tacticals.cmx kernel/term.cmx \
- interp/topconstr.cmx pretyping/typing.cmx lib/util.cmx \
- toplevel/vernacexpr.cmx toplevel/vernacinterp.cmx
contrib/fourier/fourierR.cmo: proofs/clenv.cmi tactics/contradiction.cmi \
interp/coqlib.cmi tactics/equality.cmi contrib/fourier/fourier.cmo \
library/libnames.cmi library/library.cmi kernel/names.cmi \
@@ -2730,9 +2746,9 @@ contrib/interface/blast.cmo: tactics/auto.cmi proofs/clenv.cmi \
parsing/pcoq.cmi proofs/pfedit.cmi lib/pp.cmi parsing/pptactic.cmi \
parsing/printer.cmi proofs/proof_trees.cmi proofs/proof_type.cmi \
pretyping/rawterm.cmi kernel/reduction.cmi proofs/refiner.cmi \
- kernel/sign.cmi proofs/tacmach.cmi pretyping/tacred.cmi \
- tactics/tacticals.cmi tactics/tactics.cmi kernel/term.cmi \
- pretyping/termops.cmi pretyping/typing.cmi lib/util.cmi \
+ kernel/sign.cmi tactics/tacinterp.cmi proofs/tacmach.cmi \
+ pretyping/tacred.cmi tactics/tacticals.cmi tactics/tactics.cmi \
+ kernel/term.cmi pretyping/termops.cmi pretyping/typing.cmi lib/util.cmi \
toplevel/vernacentries.cmi toplevel/vernacinterp.cmi \
contrib/interface/blast.cmi
contrib/interface/blast.cmx: tactics/auto.cmx proofs/clenv.cmx \
@@ -2745,9 +2761,9 @@ contrib/interface/blast.cmx: tactics/auto.cmx proofs/clenv.cmx \
parsing/pcoq.cmx proofs/pfedit.cmx lib/pp.cmx parsing/pptactic.cmx \
parsing/printer.cmx proofs/proof_trees.cmx proofs/proof_type.cmx \
pretyping/rawterm.cmx kernel/reduction.cmx proofs/refiner.cmx \
- kernel/sign.cmx proofs/tacmach.cmx pretyping/tacred.cmx \
- tactics/tacticals.cmx tactics/tactics.cmx kernel/term.cmx \
- pretyping/termops.cmx pretyping/typing.cmx lib/util.cmx \
+ kernel/sign.cmx tactics/tacinterp.cmx proofs/tacmach.cmx \
+ pretyping/tacred.cmx tactics/tacticals.cmx tactics/tactics.cmx \
+ kernel/term.cmx pretyping/termops.cmx pretyping/typing.cmx lib/util.cmx \
toplevel/vernacentries.cmx toplevel/vernacinterp.cmx \
contrib/interface/blast.cmi
contrib/interface/centaur.cmo: contrib/interface/ascent.cmi parsing/ast.cmi \
@@ -2798,22 +2814,22 @@ contrib/interface/ctast.cmx: parsing/coqast.cmx lib/dyn.cmx \
library/libnames.cmx kernel/names.cmx lib/util.cmx
contrib/interface/dad.cmo: interp/constrextern.cmi interp/constrintern.cmi \
kernel/environ.cmi pretyping/evd.cmi interp/genarg.cmi library/global.cmi \
- library/libnames.cmi kernel/names.cmi library/nametab.cmi \
- contrib/interface/paths.cmi pretyping/pattern.cmi lib/pp.cmi \
- proofs/proof_trees.cmi proofs/proof_type.cmi pretyping/rawterm.cmi \
- kernel/reduction.cmi proofs/tacexpr.cmo proofs/tacmach.cmi \
- tactics/tacticals.cmi tactics/tactics.cmi kernel/term.cmi \
- interp/topconstr.cmi pretyping/typing.cmi lib/util.cmi \
+ library/libnames.cmi pretyping/matching.cmi kernel/names.cmi \
+ library/nametab.cmi contrib/interface/paths.cmi pretyping/pattern.cmi \
+ lib/pp.cmi proofs/proof_trees.cmi proofs/proof_type.cmi \
+ pretyping/rawterm.cmi kernel/reduction.cmi proofs/tacexpr.cmo \
+ proofs/tacmach.cmi tactics/tacticals.cmi tactics/tactics.cmi \
+ kernel/term.cmi interp/topconstr.cmi pretyping/typing.cmi lib/util.cmi \
toplevel/vernacexpr.cmo toplevel/vernacinterp.cmi \
contrib/interface/dad.cmi
contrib/interface/dad.cmx: interp/constrextern.cmx interp/constrintern.cmx \
kernel/environ.cmx pretyping/evd.cmx interp/genarg.cmx library/global.cmx \
- library/libnames.cmx kernel/names.cmx library/nametab.cmx \
- contrib/interface/paths.cmx pretyping/pattern.cmx lib/pp.cmx \
- proofs/proof_trees.cmx proofs/proof_type.cmx pretyping/rawterm.cmx \
- kernel/reduction.cmx proofs/tacexpr.cmx proofs/tacmach.cmx \
- tactics/tacticals.cmx tactics/tactics.cmx kernel/term.cmx \
- interp/topconstr.cmx pretyping/typing.cmx lib/util.cmx \
+ library/libnames.cmx pretyping/matching.cmx kernel/names.cmx \
+ library/nametab.cmx contrib/interface/paths.cmx pretyping/pattern.cmx \
+ lib/pp.cmx proofs/proof_trees.cmx proofs/proof_type.cmx \
+ pretyping/rawterm.cmx kernel/reduction.cmx proofs/tacexpr.cmx \
+ proofs/tacmach.cmx tactics/tacticals.cmx tactics/tactics.cmx \
+ kernel/term.cmx interp/topconstr.cmx pretyping/typing.cmx lib/util.cmx \
toplevel/vernacexpr.cmx toplevel/vernacinterp.cmx \
contrib/interface/dad.cmi
contrib/interface/debug_tac.cmo: parsing/ast.cmi toplevel/cerrors.cmi \
@@ -2869,23 +2885,25 @@ contrib/interface/parse.cmx: contrib/interface/ascent.cmi \
contrib/interface/paths.cmo: contrib/interface/paths.cmi
contrib/interface/paths.cmx: contrib/interface/paths.cmi
contrib/interface/pbp.cmo: interp/coqlib.cmi kernel/environ.cmi \
- pretyping/evd.cmi library/global.cmi tactics/hipattern.cmi \
- library/libnames.cmi proofs/logic.cmi kernel/names.cmi \
- library/nametab.cmi pretyping/pattern.cmi lib/pp.cmi \
- pretyping/pretyping.cmi proofs/proof_trees.cmi proofs/proof_type.cmi \
- pretyping/rawterm.cmi kernel/reduction.cmi proofs/tacexpr.cmo \
- tactics/tacinterp.cmi proofs/tacmach.cmi tactics/tacticals.cmi \
- tactics/tactics.cmi kernel/term.cmi interp/topconstr.cmi \
- pretyping/typing.cmi lib/util.cmi contrib/interface/pbp.cmi
+ pretyping/evd.cmi interp/genarg.cmi library/global.cmi \
+ tactics/hipattern.cmi library/libnames.cmi proofs/logic.cmi \
+ pretyping/matching.cmi kernel/names.cmi library/nametab.cmi \
+ pretyping/pattern.cmi lib/pp.cmi pretyping/pretyping.cmi \
+ proofs/proof_trees.cmi proofs/proof_type.cmi pretyping/rawterm.cmi \
+ kernel/reduction.cmi proofs/tacexpr.cmo tactics/tacinterp.cmi \
+ proofs/tacmach.cmi tactics/tacticals.cmi tactics/tactics.cmi \
+ kernel/term.cmi interp/topconstr.cmi pretyping/typing.cmi lib/util.cmi \
+ contrib/interface/pbp.cmi
contrib/interface/pbp.cmx: interp/coqlib.cmx kernel/environ.cmx \
- pretyping/evd.cmx library/global.cmx tactics/hipattern.cmx \
- library/libnames.cmx proofs/logic.cmx kernel/names.cmx \
- library/nametab.cmx pretyping/pattern.cmx lib/pp.cmx \
- pretyping/pretyping.cmx proofs/proof_trees.cmx proofs/proof_type.cmx \
- pretyping/rawterm.cmx kernel/reduction.cmx proofs/tacexpr.cmx \
- tactics/tacinterp.cmx proofs/tacmach.cmx tactics/tacticals.cmx \
- tactics/tactics.cmx kernel/term.cmx interp/topconstr.cmx \
- pretyping/typing.cmx lib/util.cmx contrib/interface/pbp.cmi
+ pretyping/evd.cmx interp/genarg.cmx library/global.cmx \
+ tactics/hipattern.cmx library/libnames.cmx proofs/logic.cmx \
+ pretyping/matching.cmx kernel/names.cmx library/nametab.cmx \
+ pretyping/pattern.cmx lib/pp.cmx pretyping/pretyping.cmx \
+ proofs/proof_trees.cmx proofs/proof_type.cmx pretyping/rawterm.cmx \
+ kernel/reduction.cmx proofs/tacexpr.cmx tactics/tacinterp.cmx \
+ proofs/tacmach.cmx tactics/tacticals.cmx tactics/tactics.cmx \
+ kernel/term.cmx interp/topconstr.cmx pretyping/typing.cmx lib/util.cmx \
+ contrib/interface/pbp.cmi
contrib/interface/showproof.cmo: proofs/clenv.cmi interp/constrintern.cmi \
parsing/coqast.cmi kernel/declarations.cmi kernel/environ.cmi \
pretyping/evd.cmi interp/genarg.cmi library/global.cmi \
@@ -3090,14 +3108,14 @@ contrib/ring/g_ring.cmx: toplevel/cerrors.cmx parsing/egrammar.cmx \
toplevel/vernacinterp.cmx
contrib/ring/quote.cmo: interp/coqlib.cmi kernel/environ.cmi \
library/global.cmi pretyping/instantiate.cmi library/library.cmi \
- kernel/names.cmi pretyping/pattern.cmi lib/pp.cmi proofs/proof_trees.cmi \
- proofs/tacexpr.cmo proofs/tacmach.cmi tactics/tactics.cmi kernel/term.cmi \
- pretyping/termops.cmi lib/util.cmi
+ pretyping/matching.cmi kernel/names.cmi pretyping/pattern.cmi lib/pp.cmi \
+ proofs/proof_trees.cmi proofs/tacexpr.cmo proofs/tacmach.cmi \
+ tactics/tactics.cmi kernel/term.cmi pretyping/termops.cmi lib/util.cmi
contrib/ring/quote.cmx: interp/coqlib.cmx kernel/environ.cmx \
library/global.cmx pretyping/instantiate.cmx library/library.cmx \
- kernel/names.cmx pretyping/pattern.cmx lib/pp.cmx proofs/proof_trees.cmx \
- proofs/tacexpr.cmx proofs/tacmach.cmx tactics/tactics.cmx kernel/term.cmx \
- pretyping/termops.cmx lib/util.cmx
+ pretyping/matching.cmx kernel/names.cmx pretyping/pattern.cmx lib/pp.cmx \
+ proofs/proof_trees.cmx proofs/tacexpr.cmx proofs/tacmach.cmx \
+ tactics/tactics.cmx kernel/term.cmx pretyping/termops.cmx lib/util.cmx
contrib/ring/ring.cmo: kernel/closure.cmi interp/constrintern.cmi \
interp/coqlib.cmi tactics/equality.cmi pretyping/evd.cmi \
library/global.cmi tactics/hiddentac.cmi tactics/hipattern.cmi \
@@ -3230,12 +3248,10 @@ contrib/xml/xmlcommand.cmx: contrib/xml/acic.cmx contrib/xml/acic2Xml.cmx \
contrib/xml/xml.cmx contrib/xml/xmlcommand.cmi
contrib/xml/xmlentries.cmo: toplevel/cerrors.cmi parsing/egrammar.cmi \
parsing/extend.cmi interp/genarg.cmi parsing/pcoq.cmi lib/pp.cmi \
- parsing/pptactic.cmi tactics/tacinterp.cmi lib/util.cmi \
- toplevel/vernacinterp.cmi contrib/xml/xmlcommand.cmi
+ lib/util.cmi toplevel/vernacinterp.cmi contrib/xml/xmlcommand.cmi
contrib/xml/xmlentries.cmx: toplevel/cerrors.cmx parsing/egrammar.cmx \
parsing/extend.cmx interp/genarg.cmx parsing/pcoq.cmx lib/pp.cmx \
- parsing/pptactic.cmx tactics/tacinterp.cmx lib/util.cmx \
- toplevel/vernacinterp.cmx contrib/xml/xmlcommand.cmx
+ lib/util.cmx toplevel/vernacinterp.cmx contrib/xml/xmlcommand.cmx
ide/utils/configwin.cmo: ide/utils/configwin_ihm.cmo \
ide/utils/configwin_types.cmo ide/utils/configwin.cmi
ide/utils/configwin.cmx: ide/utils/configwin_ihm.cmx \
diff --git a/Makefile b/Makefile
index 00be4061f5..0d48aff515 100644
--- a/Makefile
+++ b/Makefile
@@ -112,7 +112,7 @@ PRETYPING=\
pretyping/classops.cmo pretyping/recordops.cmo pretyping/indrec.cmo \
pretyping/evarutil.cmo pretyping/evarconv.cmo \
pretyping/coercion.cmo pretyping/cases.cmo pretyping/pretyping.cmo \
- pretyping/pattern.cmo
+ pretyping/pattern.cmo pretyping/matching.cmo
INTERP=\
interp/topconstr.cmo interp/ppextend.cmo interp/symbols.cmo \
@@ -147,8 +147,7 @@ PROOFS=\
proofs/tacexpr.cmo proofs/proof_type.cmo \
proofs/proof_trees.cmo proofs/logic.cmo \
proofs/refiner.cmo proofs/evar_refiner.cmo proofs/tacmach.cmo \
- proofs/clenv.cmo proofs/pfedit.cmo translate/ppvernacnew.cmo \
- proofs/tactic_debug.cmo
+ proofs/clenv.cmo proofs/pfedit.cmo proofs/tactic_debug.cmo
TACTICS=\
tactics/dn.cmo tactics/termdn.cmo tactics/btermdn.cmo \
@@ -160,7 +159,8 @@ TACTICS=\
TOPLEVEL=\
toplevel/himsg.cmo toplevel/cerrors.cmo toplevel/class.cmo \
toplevel/command.cmo toplevel/record.cmo toplevel/recordobj.cmo \
- toplevel/discharge.cmo toplevel/vernacexpr.cmo $(TRANSLATE) \
+ toplevel/discharge.cmo toplevel/vernacexpr.cmo \
+ translate/ppvernacnew.cmo \
toplevel/vernacinterp.cmo toplevel/mltop.cmo \
toplevel/metasyntax.cmo \
toplevel/vernacentries.cmo toplevel/vernac.cmo \
@@ -976,7 +976,7 @@ GRAMMARNEEDEDCMO=\
library/nameops.cmo library/libnames.cmo library/summary.cmo \
library/nametab.cmo library/libobject.cmo library/lib.cmo \
library/goptions.cmo library/decl_kinds.cmo \
- pretyping/rawterm.cmo pretyping/evd.cmo \
+ pretyping/rawterm.cmo pretyping/pattern.cmo pretyping/evd.cmo \
interp/topconstr.cmo interp/genarg.cmo \
interp/ppextend.cmo parsing/coqast.cmo parsing/ast.cmo \
proofs/tacexpr.cmo parsing/ast.cmo \
@@ -1051,6 +1051,12 @@ library/nametab.cmo: library/nametab.ml
library/nametab.cmx: library/nametab.ml
$(OCAMLOPT) -rectypes $(OPTFLAGS) -c $<
+proofs/tacexpr.cmo: proofs/tacexpr.ml
+ $(OCAMLC) -rectypes $(BYTEFLAGS) -c $<
+
+proofs/tacexpr.cmx: proofs/tacexpr.ml
+ $(OCAMLOPT) -rectypes $(OPTFLAGS) -c $<
+
# files compiled with camlp4 because of streams syntax
ML4FILES += lib/pp.ml4 \
diff --git a/contrib/correctness/pmlize.ml b/contrib/correctness/pmlize.ml
index ed2896ec90..5c6e845a36 100644
--- a/contrib/correctness/pmlize.ml
+++ b/contrib/correctness/pmlize.ml
@@ -14,6 +14,7 @@ open Names
open Term
open Termast
open Pattern
+open Matching
open Pmisc
open Ptype
diff --git a/contrib/correctness/psyntax.ml4 b/contrib/correctness/psyntax.ml4
index 9e3e8a1bbb..888f876dee 100644
--- a/contrib/correctness/psyntax.ml4
+++ b/contrib/correctness/psyntax.ml4
@@ -485,8 +485,8 @@ GEXTEND Gram
END
;;
-let wit_prog, rawwit_prog = Genarg.create_arg "PROGRAMS-PROG"
-let wit_typev, rawwit_typev = Genarg.create_arg "PROGRAMS-TYPEV"
+let wit_prog, _, rawwit_prog = Genarg.create_arg "PROGRAMS-PROG"
+let wit_typev, _, rawwit_typev = Genarg.create_arg "PROGRAMS-TYPEV"
open Pp
open Util
diff --git a/contrib/correctness/putil.ml b/contrib/correctness/putil.ml
index 5aa497d7f8..eb64b7eb2b 100644
--- a/contrib/correctness/putil.ml
+++ b/contrib/correctness/putil.ml
@@ -16,6 +16,7 @@ open Nameops
open Term
open Termops
open Pattern
+open Matching
open Environ
open Pmisc
diff --git a/contrib/field/field.ml4 b/contrib/field/field.ml4
index 0c908e1ad8..c502ea9b01 100644
--- a/contrib/field/field.ml4
+++ b/contrib/field/field.ml4
@@ -89,38 +89,43 @@ open Extend
open Pcoq
open Genarg
-let wit_minus_div_arg, rawwit_minus_div_arg = Genarg.create_arg "minus_div_arg"
-let minus_div_arg = create_generic_entry "minus_div_arg" rawwit_minus_div_arg
-let _ = Tacinterp.add_genarg_interp "minus_div_arg"
- (fun ist gl x ->
- (in_gen wit_minus_div_arg
- (out_gen (wit_pair (wit_opt wit_constr) (wit_opt wit_constr))
- (Tacinterp.genarg_interp ist gl
- (in_gen (wit_pair (wit_opt rawwit_constr) (wit_opt rawwit_constr))
- (out_gen rawwit_minus_div_arg x))))))
+VERNAC ARGUMENT EXTEND divarg
+| [ "div" ":=" constr(adiv) ] -> [ adiv ]
+END
+
+VERNAC ARGUMENT EXTEND minusarg
+| [ "minus" ":=" constr(aminus) ] -> [ aminus ]
+END
+(*
+(* The v7->v8 translator needs printers, then temporary use ARGUMENT EXTEND...*)
+VERNAC ARGUMENT EXTEND minus_div_arg
+| [ "with" minusarg(m) divarg_opt(d) ] -> [ Some m, d ]
+| [ "with" divarg(d) minusarg_opt(m) ] -> [ m, Some d ]
+| [ ] -> [ None, None ]
+END
+*)
+
+(* For the translator, otherwise the code above is OK *)
open Ppconstrnew
-let pp_minus_div_arg (omin,odiv) = str "still no printer for minus_div_arg"
-let pp_raw_minus_div_arg (omin,odiv) =
+let pp_minus_div_arg _prc _prt (omin,odiv) =
if omin=None && odiv=None then mt() else
spc() ++ str "with" ++
- pr_opt (fun c -> str "minus := " ++ pr_constr c) omin ++
- pr_opt (fun c -> str "div := " ++ pr_constr c) odiv
-
+ pr_opt (fun c -> str "minus := " ++ _prc c) omin ++
+ pr_opt (fun c -> str "div := " ++ _prc c) odiv
+(*
let () =
Pptactic.declare_extra_genarg_pprule true
- (rawwit_minus_div_arg,pp_raw_minus_div_arg)
+ (rawwit_minus_div_arg,pp_minus_div_arg)
+ (globwit_minus_div_arg,pp_minus_div_arg)
(wit_minus_div_arg,pp_minus_div_arg)
-
-open Pcoq.Constr
-GEXTEND Gram
- GLOBAL: minus_div_arg;
- minus_arg: [ [ IDENT "minus"; ":="; aminus = constr -> aminus ] ];
- div_arg: [ [ IDENT "div"; ":="; adiv = constr -> adiv ] ];
- minus_div_arg:
- [ [ "with"; m = minus_arg; d = OPT div_arg -> Some m, d
- | "with"; d = div_arg; m = OPT minus_arg -> m, Some d
- | -> None, None ] ];
+*)
+ARGUMENT EXTEND minus_div_arg
+ TYPED AS constr_opt * constr_opt
+ PRINTED BY pp_minus_div_arg
+| [ "with" minusarg(m) divarg_opt(d) ] -> [ Some m, d ]
+| [ "with" divarg(d) minusarg_opt(m) ] -> [ m, Some d ]
+| [ ] -> [ None, None ]
END
VERNAC COMMAND EXTEND Field
diff --git a/contrib/interface/blast.ml b/contrib/interface/blast.ml
index ce43da5ded..7d3ed8dd83 100755
--- a/contrib/interface/blast.ml
+++ b/contrib/interface/blast.ml
@@ -583,7 +583,7 @@ let blast gls =
(* on remplace les ?1 ?2 ... de refine par ? *)
parse_tac ((vire_extvar tac_string)
^ ".")
- )
+ )
else (msgnl (hov 0 (str"Blast failed to prove the goal..."));
failwith "echec de blast"))
with _ -> failwith "echec de blast"
@@ -598,7 +598,8 @@ let blast_tac display_function = function
| _ -> failwith "expecting other arguments";;
let blast_tac_txt =
- blast_tac (function x -> msgnl(Pptactic.pr_raw_tactic x));;
+ blast_tac
+ (function x -> msgnl(Pptactic.pr_glob_tactic (Tacinterp.glob_tactic x)));;
(* Obsolète ?
overwriting_add_tactic "Blast1" blast_tac_txt;;
diff --git a/contrib/interface/centaur.ml4 b/contrib/interface/centaur.ml4
index 87f8c8af10..78de2fb022 100644
--- a/contrib/interface/centaur.ml4
+++ b/contrib/interface/centaur.ml4
@@ -367,7 +367,7 @@ let debug_tac2_pcoq tac =
(errorlabstrm "DEBUG TACTIC"
(str "no error here " ++ fnl () ++ pr_goal (sig_it g) ++
fnl () ++ str "the tactic is" ++ fnl () ++
- Pptactic.pr_raw_tactic tac);
+ Pptactic.pr_glob_tactic tac);
result)
with
e ->
@@ -901,11 +901,11 @@ END
</cpa> *)
TACTIC EXTEND CtDebugTac
-| [ "DebugTac" tactic(t) ] -> [ if_pcoq debug_tac2_pcoq t ]
+| [ "DebugTac" tactic(t) ] -> [ if_pcoq debug_tac2_pcoq (fst t) ]
END
TACTIC EXTEND CtDebugTac2
-| [ "DebugTac2" tactic(t) ] -> [ if_pcoq debug_tac2_pcoq t ]
+| [ "DebugTac2" tactic(t) ] -> [ if_pcoq debug_tac2_pcoq (fst t) ]
END
diff --git a/contrib/interface/dad.ml b/contrib/interface/dad.ml
index 4f03fb06fd..3eb6e7993d 100644
--- a/contrib/interface/dad.ml
+++ b/contrib/interface/dad.ml
@@ -10,6 +10,7 @@ open Environ;;
open Tactics;;
open Tacticals;;
open Pattern;;
+open Matching;;
open Reduction;;
open Constrextern;;
open Constrintern;;
diff --git a/contrib/interface/debug_tac.ml4 b/contrib/interface/debug_tac.ml4
index 343f90d6e5..ca43d00778 100644
--- a/contrib/interface/debug_tac.ml4
+++ b/contrib/interface/debug_tac.ml4
@@ -115,7 +115,7 @@ let count_subgoals2
card_holder := Recursive_fail(List.hd !new_report_holder));
result;;
-let rec local_interp : raw_tactic_expr -> report_holder -> tactic = function
+let rec local_interp : glob_tactic_expr -> report_holder -> tactic = function
(*
Node(_, "TACTICLIST", [a;Node(_, "TACLIST", l)]) ->
(fun report_holder -> checked_thens report_holder a l)
@@ -142,7 +142,7 @@ let rec local_interp : raw_tactic_expr -> report_holder -> tactic = function
| t ->
(fun report_holder g ->
try
- let (gls, _) as result = Tacinterp.interp t g in
+ let (gls, _) as result = Tacinterp.eval_tactic t g in
report_holder := (Report_node(true, List.length (sig_it gls), []))
::!report_holder;
result
@@ -162,7 +162,7 @@ let rec local_interp : raw_tactic_expr -> report_holder -> tactic = function
- In case of success of the first tactic, but count mismatch, then
Mismatch n is added to the report holder. *)
-and checked_thens: report_holder -> raw_tactic_expr -> raw_tactic_expr list -> tactic =
+and checked_thens: report_holder -> glob_tactic_expr -> glob_tactic_expr list -> tactic =
(fun report_holder t1 l g ->
let flag = ref true in
let traceable_t1 = traceable t1 in
@@ -174,7 +174,7 @@ and checked_thens: report_holder -> raw_tactic_expr -> raw_tactic_expr list -> t
flag (local_interp t1))
else
(check_subgoals_count card_holder (List.length l)
- flag (Tacinterp.interp t1)) in
+ flag (Tacinterp.eval_tactic t1)) in
let (gls, _) as result =
tclTHEN_i tac_t1
(fun i ->
@@ -185,7 +185,7 @@ and checked_thens: report_holder -> raw_tactic_expr -> raw_tactic_expr list -> t
local_interp tac_i new_holder g
else
try
- let (gls,_) as result = Tacinterp.interp tac_i g in
+ let (gls,_) as result = Tacinterp.eval_tactic tac_i g in
let len = List.length (sig_it gls) in
new_holder :=
(Report_node(true, len, []))::!new_holder;
@@ -217,7 +217,7 @@ and checked_thens: report_holder -> raw_tactic_expr -> raw_tactic_expr list -> t
reporting information about the success of all tactics in the report
holder. It never fails. *)
-and checked_then: report_holder -> raw_tactic_expr -> raw_tactic_expr -> tactic =
+and checked_then: report_holder -> glob_tactic_expr -> glob_tactic_expr -> tactic =
(fun report_holder t1 t2 g ->
let flag = ref true in
let card_holder = ref Fail in
@@ -225,7 +225,7 @@ and checked_then: report_holder -> raw_tactic_expr -> raw_tactic_expr -> tactic
if traceable t1 then
(count_subgoals2 card_holder flag (local_interp t1))
else
- (count_subgoals card_holder flag (Tacinterp.interp t1)) in
+ (count_subgoals card_holder flag (Tacinterp.eval_tactic t1)) in
let new_tree_holder = ref ([] : report_tree list) in
let (gls, _) as result =
tclTHEN tac_t1
@@ -235,7 +235,7 @@ and checked_then: report_holder -> raw_tactic_expr -> raw_tactic_expr -> tactic
local_interp t2 new_tree_holder g
else
try
- let (gls, _) as result = Tacinterp.interp t2 g in
+ let (gls, _) as result = Tacinterp.eval_tactic t2 g in
new_tree_holder :=
(Report_node(true, List.length (sig_it gls),[]))::
!new_tree_holder;
@@ -267,10 +267,10 @@ let on_then = function [t1;t2;l] ->
let t1 = out_gen wit_tactic t1 in
let t2 = out_gen wit_tactic t2 in
let l = out_gen (wit_list0 wit_int) l in
- tclTHEN_i (Tacinterp.interp t1)
+ tclTHEN_i (Tacinterp.eval_tactic t1)
(fun i ->
if List.mem (i + 1) l then
- (Tacinterp.interp t2)
+ (Tacinterp.eval_tactic t2)
else
tclIDTAC)
| _ -> anomaly "bad arguments for on_then";;
@@ -348,7 +348,7 @@ let rec reconstruct_success_tac ast =
(str "error in reconstruction with " ++ fnl () ++
(gentacpr ast)));;
*)
-let rec reconstruct_success_tac tac =
+let rec reconstruct_success_tac (tac:glob_tactic_expr) =
match tac with
TacThens (a,l) ->
(function
@@ -364,9 +364,9 @@ let rec reconstruct_success_tac tac =
| Report_node(false, n, rl) ->
let selected_indices = select_success 1 rl in
TacAtom (dummy_loc,TacExtend (dummy_loc,"OnThen",
- [in_gen rawwit_tactic a;
- in_gen rawwit_tactic b;
- in_gen (wit_list0 rawwit_int) selected_indices]))
+ [in_gen globwit_tactic a;
+ in_gen globwit_tactic b;
+ in_gen (wit_list0 globwit_int) selected_indices]))
| Failed n -> TacId
| Tree_fail r -> reconstruct_success_tac a r
| _ -> error "this error case should not happen in a THEN tactic")
@@ -378,7 +378,7 @@ let rec reconstruct_success_tac tac =
errorlabstrm
"this error case should not happen on an unknown tactic"
(str "error in reconstruction with " ++ fnl () ++
- (pr_raw_tactic tac)));;
+ (pr_glob_tactic tac)));;
let rec path_to_first_error = function
@@ -421,7 +421,7 @@ let debug_tac = function
msgnl (fnl () ++
str "========= Successful tactic =============" ++
fnl () ++
- pr_raw_tactic compact_success_tac ++ fnl () ++
+ pr_glob_tactic compact_success_tac ++ fnl () ++
str "========= End of successful tactic ============");
result)
| _ -> error "wrong arguments for debug_tac";;
@@ -462,7 +462,7 @@ let rec clean_path tac l =
| _, _ -> failwith "this case should not happen in clean_path";;
let rec report_error
- : raw_tactic_expr -> goal sigma option ref -> raw_tactic_expr ref -> int list ref ->
+ : glob_tactic_expr -> goal sigma option ref -> glob_tactic_expr ref -> int list ref ->
int list -> tactic =
fun tac the_goal the_ast returned_path path ->
match tac with
@@ -523,12 +523,12 @@ let rec report_error
if !the_count > 1 then
msgnl
(str "in branch no " ++ int !the_count ++
- str " after tactic " ++ pr_raw_tactic a);
+ str " after tactic " ++ pr_glob_tactic a);
raise e)
| tac ->
(fun g ->
try
- Tacinterp.interp tac g
+ Tacinterp.eval_tactic tac g
with
e ->
(the_ast := tac;
@@ -556,7 +556,7 @@ let descr_first_error tac =
fnl () ++ str "on goal" ++ fnl () ++
pr_goal (sig_it (strip_some !the_goal)) ++ fnl () ++
str "faulty tactic is" ++ fnl () ++ fnl () ++
- pr_raw_tactic ((*flatten_then*) !the_ast) ++ fnl ());
+ pr_glob_tactic ((*flatten_then*) !the_ast) ++ fnl ());
tclIDTAC g))
(* TODO ... used ??
diff --git a/contrib/interface/debug_tac.mli b/contrib/interface/debug_tac.mli
index 05cef23aa7..ded714b629 100644
--- a/contrib/interface/debug_tac.mli
+++ b/contrib/interface/debug_tac.mli
@@ -1,6 +1,6 @@
-val report_error : Tacexpr.raw_tactic_expr ->
+val report_error : Tacexpr.glob_tactic_expr ->
Proof_type.goal Proof_type.sigma option ref ->
- Tacexpr.raw_tactic_expr ref -> int list ref -> int list -> Tacmach.tactic;;
+ Tacexpr.glob_tactic_expr ref -> int list ref -> int list -> Tacmach.tactic;;
-val clean_path : Tacexpr.raw_tactic_expr -> int list -> int list;;
+val clean_path : Tacexpr.glob_tactic_expr -> int list -> int list;;
diff --git a/contrib/interface/pbp.ml b/contrib/interface/pbp.ml
index 9b1602ad41..4abcb5f96f 100644
--- a/contrib/interface/pbp.ml
+++ b/contrib/interface/pbp.ml
@@ -6,6 +6,7 @@ open Tactics;;
open Tacticals;;
open Hipattern;;
open Pattern;;
+open Matching;;
open Reduction;;
open Rawterm;;
open Environ;;
@@ -17,6 +18,7 @@ open Tacexpr;;
open Typing;;
open Pp;;
open Libnames;;
+open Genarg;;
open Topconstr;;
let zz = (0,0);;
diff --git a/contrib/interface/xlate.ml b/contrib/interface/xlate.ml
index 8191a0978f..1fe718f0e5 100644
--- a/contrib/interface/xlate.ml
+++ b/contrib/interface/xlate.ml
@@ -598,10 +598,6 @@ let rec (xlate_tacarg:raw_tactic_arg -> ct_TACTIC_ARG) =
CT_coerce_TERM_CHANGE_to_TACTIC_ARG(CT_check_term(xlate_formula c))
| MetaIdArg _ ->
xlate_error "MetaIdArg should only be used in quotations"
- | MetaNumArg (_,n) ->
- CT_coerce_FORMULA_OR_INT_to_TACTIC_ARG
- (CT_coerce_ID_OR_INT_to_FORMULA_OR_INT
- (CT_coerce_ID_to_ID_OR_INT(CT_metac (CT_int n))))
| t ->
CT_coerce_TACTIC_COM_to_TACTIC_ARG(xlate_call_or_tacarg t)
diff --git a/contrib/ring/quote.ml b/contrib/ring/quote.ml
index 393eff193f..270f09587f 100644
--- a/contrib/ring/quote.ml
+++ b/contrib/ring/quote.ml
@@ -109,6 +109,7 @@ open Names
open Term
open Instantiate
open Pattern
+open Matching
open Tacmach
open Tactics
open Proof_trees
diff --git a/contrib/xml/xmlentries.ml4 b/contrib/xml/xmlentries.ml4
index 2807a3d6ee..da65de2376 100644
--- a/contrib/xml/xmlentries.ml4
+++ b/contrib/xml/xmlentries.ml4
@@ -32,54 +32,18 @@ open Pcoq;;
(* File name *)
-let wit_filename, rawwit_filename = Genarg.create_arg "filename"
-let filename = Pcoq.create_generic_entry "filename" rawwit_filename
-let _ = Tacinterp.add_genarg_interp "filename"
- (fun ist gl x ->
- (in_gen wit_filename
- (out_gen (wit_opt wit_string)
- (Tacinterp.genarg_interp ist gl
- (in_gen (wit_opt rawwit_string)
- (out_gen rawwit_filename x))))))
-
-GEXTEND Gram
- GLOBAL: filename;
- filename: [ [ IDENT "File"; fn = STRING -> Some fn | -> None ] ];
+VERNAC ARGUMENT EXTEND filename
+| [ "File" string(fn) ] -> [ Some fn ]
+| [ ] -> [ None ]
END
-let pr_filename = function Some fn -> str " File" ++ str fn | None -> mt ()
-
-let _ =
- Pptactic.declare_extra_genarg_pprule true
- (rawwit_filename, pr_filename)
- (wit_filename, pr_filename)
-
(* Disk name *)
-let wit_diskname, rawwit_diskname = Genarg.create_arg "diskname"
-let diskname = create_generic_entry "diskname" rawwit_diskname
-let _ = Tacinterp.add_genarg_interp "diskname"
- (fun ist gl x ->
- (in_gen wit_diskname
- (out_gen (wit_opt wit_string)
- (Tacinterp.genarg_interp ist gl
- (in_gen (wit_opt rawwit_string)
- (out_gen rawwit_diskname x))))))
-
-GEXTEND Gram
- GLOBAL: diskname;
- diskname: [ [ IDENT "Disk"; fn = STRING -> Some fn | -> None ] ];
+VERNAC ARGUMENT EXTEND diskname
+| [ "Disk" string(fn) ] -> [ Some fn ]
+| [ ] -> [ None ]
END
-open Pp
-
-let pr_diskname = function Some fn -> str " Disk" ++ str fn | None -> mt ()
-
-let _ =
- Pptactic.declare_extra_genarg_pprule true
- (rawwit_diskname, pr_diskname)
- (wit_diskname, pr_diskname)
-
VERNAC COMMAND EXTEND Xml
| [ "Print" "XML" filename(fn) global(id) ] -> [ Xmlcommand.print id fn ]
@@ -95,39 +59,3 @@ VERNAC COMMAND EXTEND Xml
[ Xmlcommand.printSection id dn ]
*)
END
-(*
-vinterp_add "Print"
- (function
- [VARG_QUALID id] ->
- (fun () -> Xmlcommand.print id None)
- | [VARG_QUALID id ; VARG_STRING fn] ->
- (fun () -> Xmlcommand.print id (Some fn))
- | _ -> anomaly "This should be trapped");;
-
-vinterp_add "Show"
- (function
- [] ->
- (fun () -> Xmlcommand.show None)
- | [VARG_STRING fn] ->
- (fun () -> Xmlcommand.show (Some fn))
- | _ -> anomaly "This should be trapped");;
-
-vinterp_add "XmlPrintAll"
- (function
- [] -> (fun () -> Xmlcommand.printAll ())
- | _ -> anomaly "This should be trapped");;
-
-vinterp_add "XmlPrintModule"
- (function
- [VARG_QUALID id] -> (fun () -> Xmlcommand.printModule id None)
- | [VARG_QUALID id ; VARG_STRING dn] ->
- (fun () -> Xmlcommand.printModule id (Some dn))
- | _ -> anomaly "This should be trapped");;
-
-vinterp_add "XmlPrintSection"
- (function
- [VARG_IDENTIFIER id] -> (fun () -> Xmlcommand.printSection id None)
- | [VARG_IDENTIFIER id ; VARG_STRING dn] ->
- (fun () -> Xmlcommand.printSection id (Some dn))
- | _ -> anomaly "This should be trapped");;
-*)
diff --git a/pretyping/matching.ml b/pretyping/matching.ml
new file mode 100644
index 0000000000..caecbf455b
--- /dev/null
+++ b/pretyping/matching.ml
@@ -0,0 +1,250 @@
+(***********************************************************************)
+(* v * The Coq Proof Assistant / The Coq Development Team *)
+(* <O___,, * INRIA-Rocquencourt & LRI-CNRS-Orsay *)
+(* \VV/ *************************************************************)
+(* // * This file is distributed under the terms of the *)
+(* * GNU Lesser General Public License Version 2.1 *)
+(***********************************************************************)
+
+(* $Id$ *)
+
+(*i*)
+open Util
+open Names
+open Libnames
+open Nameops
+open Termops
+open Reductionops
+open Term
+open Rawterm
+open Environ
+open Pattern
+(*i*)
+
+(* Given a term with second-order variables in it,
+ represented by Meta's, and possibly applied using [SOAPP] to
+ terms, this function will perform second-order, binding-preserving,
+ matching, in the case where the pattern is a pattern in the sense
+ of Dale Miller.
+
+ ALGORITHM:
+
+ Given a pattern, we decompose it, flattening Cast's and apply's,
+ recursing on all operators, and pushing the name of the binder each
+ time we descend a binder.
+
+ When we reach a first-order variable, we ask that the corresponding
+ term's free-rels all be higher than the depth of the current stack.
+
+ When we reach a second-order application, we ask that the
+ intersection of the free-rels of the term and the current stack be
+ contained in the arguments of the application, and in that case, we
+ construct a LAMBDA with the names on the stack.
+
+ *)
+
+exception PatternMatchingFailure
+
+let constrain ((n : int),(m : constr)) sigma =
+ if List.mem_assoc n sigma then
+ if eq_constr m (List.assoc n sigma) then sigma
+ else raise PatternMatchingFailure
+ else
+ (n,m)::sigma
+
+let build_lambda toabstract stk (m : constr) =
+ let rec buildrec m p_0 p_1 = match p_0,p_1 with
+ | (_, []) -> m
+ | (n, (na,t)::tl) ->
+ if List.mem n toabstract then
+ buildrec (mkLambda (na,t,m)) (n+1) tl
+ else
+ buildrec (lift (-1) m) (n+1) tl
+ in
+ buildrec m 1 stk
+
+let memb_metavars m n =
+ match (m,n) with
+ | (None, _) -> true
+ | (Some mvs, n) -> List.mem n mvs
+
+let eq_context ctxt1 ctxt2 = array_for_all2 eq_constr ctxt1 ctxt2
+
+let matches_core convert allow_partial_app pat c =
+ let rec sorec stk sigma p t =
+ let cT = strip_outer_cast t in
+ match p,kind_of_term cT with
+ | PSoApp (n,args),m ->
+ let relargs =
+ List.map
+ (function
+ | PRel n -> n
+ | _ -> error "Only bound indices are currently allowed in second order pattern matching")
+ args in
+ let frels = Intset.elements (free_rels cT) in
+ if list_subset frels relargs then
+ constrain (n,build_lambda relargs stk cT) sigma
+ else
+ raise PatternMatchingFailure
+
+ | PMeta (Some n), m ->
+ let depth = List.length stk in
+ let frels = Intset.elements (free_rels cT) in
+ if List.for_all (fun i -> i > depth) frels then
+ constrain (n,lift (-depth) cT) sigma
+ else
+ raise PatternMatchingFailure
+
+ | PMeta None, m -> sigma
+
+ | PRef (VarRef v1), Var v2 when v1 = v2 -> sigma
+
+ | PVar v1, Var v2 when v1 = v2 -> sigma
+
+ | PRef ref, _ when constr_of_reference ref = cT -> sigma
+
+ | PRel n1, Rel n2 when n1 = n2 -> sigma
+
+ | PSort (RProp c1), Sort (Prop c2) when c1 = c2 -> sigma
+
+ | PSort (RType _), Sort (Type _) -> sigma
+
+ | PApp (PMeta (Some n),args1), App (c2,args2) when allow_partial_app ->
+ let p = Array.length args2 - Array.length args1 in
+ if p>=0 then
+ let args21, args22 = array_chop p args2 in
+ let sigma =
+ let depth = List.length stk in
+ let c = mkApp(c2,args21) in
+ let frels = Intset.elements (free_rels c) in
+ if List.for_all (fun i -> i > depth) frels then
+ constrain (n,lift (-depth) c) sigma
+ else
+ raise PatternMatchingFailure in
+ array_fold_left2 (sorec stk) sigma args1 args22
+ else raise PatternMatchingFailure
+
+ | PApp (c1,arg1), App (c2,arg2) ->
+ (try array_fold_left2 (sorec stk) (sorec stk sigma c1 c2) arg1 arg2
+ with Invalid_argument _ -> raise PatternMatchingFailure)
+
+ | PProd (na1,c1,d1), Prod(na2,c2,d2) ->
+ sorec ((na2,c2)::stk) (sorec stk sigma c1 c2) d1 d2
+
+ | PLambda (na1,c1,d1), Lambda(na2,c2,d2) ->
+ sorec ((na2,c2)::stk) (sorec stk sigma c1 c2) d1 d2
+
+ | PLetIn (na1,c1,d1), LetIn(na2,c2,t2,d2) ->
+ sorec ((na2,t2)::stk) (sorec stk sigma c1 c2) d1 d2
+
+ | PRef (ConstRef _ as ref), _ when convert <> None ->
+ let (env,evars) = out_some convert in
+ let c = constr_of_reference ref in
+ if is_conv env evars c cT then sigma
+ else raise PatternMatchingFailure
+
+ | PCase (_,_,a1,br1), Case (_,_,a2,br2) ->
+ (* On ne teste pas le prédicat *)
+ if (Array.length br1) = (Array.length br2) then
+ array_fold_left2 (sorec stk) (sorec stk sigma a1 a2) br1 br2
+ else
+ raise PatternMatchingFailure
+ (* À faire *)
+ | PFix f0, Fix f1 when f0 = f1 -> sigma
+ | PCoFix c0, CoFix c1 when c0 = c1 -> sigma
+ | _ -> raise PatternMatchingFailure
+
+ in
+ Sort.list (fun (a,_) (b,_) -> a<b) (sorec [] [] pat c)
+
+let matches = matches_core None false
+
+let pmatches = matches_core None true
+
+(* To skip to the next occurrence *)
+exception NextOccurrence of int
+
+(* Tells if it is an authorized occurrence *)
+let authorized_occ nocc mres =
+ if nocc = 0 then mres
+ else raise (NextOccurrence nocc)
+
+(* Tries to match a subterm of [c] with [pat] *)
+let rec sub_match nocc pat c =
+ match kind_of_term c with
+ | Cast (c1,c2) ->
+ (try authorized_occ nocc ((matches pat c), mkMeta (-1)) with
+ | PatternMatchingFailure ->
+ let (lm,lc) = try_sub_match nocc pat [c1] in
+ (lm,mkCast (List.hd lc, c2))
+ | NextOccurrence nocc ->
+ let (lm,lc) = try_sub_match (nocc - 1) pat [c1] in
+ (lm,mkCast (List.hd lc, c2)))
+ | Lambda (x,c1,c2) ->
+ (try authorized_occ nocc ((matches pat c), mkMeta (-1)) with
+ | PatternMatchingFailure ->
+ let (lm,lc) = try_sub_match nocc pat [c1;c2] in
+ (lm,mkLambda (x,List.hd lc,List.nth lc 1))
+ | NextOccurrence nocc ->
+ let (lm,lc) = try_sub_match (nocc - 1) pat [c1;c2] in
+ (lm,mkLambda (x,List.hd lc,List.nth lc 1)))
+ | Prod (x,c1,c2) ->
+ (try authorized_occ nocc ((matches pat c), mkMeta (-1)) with
+ | PatternMatchingFailure ->
+ let (lm,lc) = try_sub_match nocc pat [c1;c2] in
+ (lm,mkProd (x,List.hd lc,List.nth lc 1))
+ | NextOccurrence nocc ->
+ let (lm,lc) = try_sub_match (nocc - 1) pat [c1;c2] in
+ (lm,mkProd (x,List.hd lc,List.nth lc 1)))
+ | LetIn (x,c1,t2,c2) ->
+ (try authorized_occ nocc ((matches pat c), mkMeta (-1)) with
+ | PatternMatchingFailure ->
+ let (lm,lc) = try_sub_match nocc pat [c1;t2;c2] in
+ (lm,mkLetIn (x,List.hd lc,List.nth lc 1,List.nth lc 2))
+ | NextOccurrence nocc ->
+ let (lm,lc) = try_sub_match (nocc - 1) pat [c1;t2;c2] in
+ (lm,mkLetIn (x,List.hd lc,List.nth lc 1,List.nth lc 2)))
+ | App (c1,lc) ->
+ (try authorized_occ nocc ((matches pat c), mkMeta (-1)) with
+ | PatternMatchingFailure ->
+ let (lm,le) = try_sub_match nocc pat (c1::(Array.to_list lc)) in
+ (lm,mkApp (List.hd le, Array.of_list (List.tl le)))
+ | NextOccurrence nocc ->
+ let (lm,le) = try_sub_match (nocc - 1) pat (c1::(Array.to_list lc)) in
+ (lm,mkApp (List.hd le, Array.of_list (List.tl le))))
+ | Case (ci,hd,c1,lc) ->
+ (try authorized_occ nocc ((matches pat c), mkMeta (-1)) with
+ | PatternMatchingFailure ->
+ let (lm,le) = try_sub_match nocc pat (c1::Array.to_list lc) in
+ (lm,mkCase (ci,hd,List.hd le,Array.of_list (List.tl le)))
+ | NextOccurrence nocc ->
+ let (lm,le) = try_sub_match (nocc - 1) pat (c1::Array.to_list lc) in
+ (lm,mkCase (ci,hd,List.hd le,Array.of_list (List.tl le))))
+ | Construct _ | Fix _ | Ind _|CoFix _ |Evar _|Const _
+ | Rel _|Meta _|Var _|Sort _ ->
+ (try authorized_occ nocc ((matches pat c),mkMeta (-1)) with
+ | PatternMatchingFailure -> raise (NextOccurrence nocc)
+ | NextOccurrence nocc -> raise (NextOccurrence (nocc - 1)))
+
+(* Tries [sub_match] for all terms in the list *)
+and try_sub_match nocc pat lc =
+ let rec try_sub_match_rec nocc pat lacc = function
+ | [] -> raise (NextOccurrence nocc)
+ | c::tl ->
+ (try
+ let (lm,ce) = sub_match nocc pat c in
+ (lm,lacc@(ce::tl))
+ with
+ | NextOccurrence nocc -> try_sub_match_rec nocc pat (lacc@[c]) tl) in
+ try_sub_match_rec nocc pat [] lc
+
+let is_matching pat n =
+ try let _ = matches pat n in true
+ with PatternMatchingFailure -> false
+
+let matches_conv env sigma = matches_core (Some (env,sigma)) false
+
+let is_matching_conv env sigma pat n =
+ try let _ = matches_conv env sigma pat n in true
+ with PatternMatchingFailure -> false
+
diff --git a/pretyping/matching.mli b/pretyping/matching.mli
new file mode 100644
index 0000000000..5a789b442e
--- /dev/null
+++ b/pretyping/matching.mli
@@ -0,0 +1,53 @@
+(***********************************************************************)
+(* v * The Coq Proof Assistant / The Coq Development Team *)
+(* <O___,, * INRIA-Rocquencourt & LRI-CNRS-Orsay *)
+(* \VV/ *************************************************************)
+(* // * This file is distributed under the terms of the *)
+(* * GNU Lesser General Public License Version 2.1 *)
+(***********************************************************************)
+
+(*i $Id$ i*)
+
+(*i*)
+open Names
+open Term
+open Environ
+open Pattern
+(*i*)
+
+(*s This modules implements pattern-matching on terms *)
+
+exception PatternMatchingFailure
+
+(* [matches pat c] matches [c] against [pat] and returns the resulting
+ assignment of metavariables; it raises [PatternMatchingFailure] if
+ not matchable; bindings are given in increasing order based on the
+ numbers given in the pattern *)
+val matches :
+ constr_pattern -> constr -> (int * constr) list
+
+(* [is_matching pat c] just tells if [c] matches against [pat] *)
+
+val is_matching :
+ constr_pattern -> constr -> bool
+
+(* [matches_conv env sigma] matches up to conversion in environment
+ [(env,sigma)] when constants in pattern are concerned; it raises
+ [PatternMatchingFailure] if not matchable; bindings are given in
+ increasing order based on the numbers given in the pattern *)
+
+val matches_conv :
+ env -> Evd.evar_map -> constr_pattern -> constr -> (int * constr) list
+
+(* To skip to the next occurrence *)
+exception NextOccurrence of int
+
+(* Tries to match a subterm of [c] with [pat] *)
+val sub_match :
+ int -> constr_pattern -> constr -> ((int * constr) list * constr)
+
+(* [is_matching_conv env sigma pat c] tells if [c] matches against [pat]
+ up to conversion for constants in patterns *)
+
+val is_matching_conv :
+ env -> Evd.evar_map -> constr_pattern -> constr -> bool