aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar gregoire <gregoire@85f007b7-540e-0410-9357-904b9bb8a0f7>2002-12-12 15:42:49 +0000
committerGravatar gregoire <gregoire@85f007b7-540e-0410-9357-904b9bb8a0f7>2002-12-12 15:42:49 +0000
commit667e4a7870625bc8dedb651b278cbca4f43e793d (patch)
treecef23852d980ae4e14d51ae38e7e76489864fff8
parentb5676df44002aa6a347f58e455af780996ed407a (diff)
Ajout du vernac Proof with
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@3425 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--.depend132
-rw-r--r--contrib/interface/centaur.ml42
-rw-r--r--contrib/interface/xlate.ml2
-rw-r--r--parsing/g_proofs.ml41
-rw-r--r--parsing/g_vernac.ml418
-rw-r--r--proofs/pfedit.ml18
-rw-r--r--proofs/pfedit.mli8
-rw-r--r--tactics/tacinterp.ml5
-rw-r--r--tactics/tacinterp.mli3
-rw-r--r--toplevel/vernacentries.ml21
-rw-r--r--toplevel/vernacexpr.ml4
11 files changed, 125 insertions, 89 deletions
diff --git a/.depend b/.depend
index 781689c18..f7cbb8c7b 100644
--- a/.depend
+++ b/.depend
@@ -38,10 +38,10 @@ kernel/indtypes.cmi: kernel/declarations.cmi kernel/entries.cmi \
kernel/univ.cmi
kernel/inductive.cmi: kernel/declarations.cmi kernel/environ.cmi \
kernel/names.cmi kernel/term.cmi kernel/univ.cmi
-kernel/mod_typing.cmi: kernel/declarations.cmi kernel/entries.cmi \
- kernel/environ.cmi
kernel/modops.cmi: kernel/declarations.cmi kernel/entries.cmi \
kernel/environ.cmi kernel/names.cmi kernel/univ.cmi lib/util.cmi
+kernel/mod_typing.cmi: kernel/declarations.cmi kernel/entries.cmi \
+ kernel/environ.cmi
kernel/names.cmi: lib/pp.cmi lib/predicate.cmi
kernel/reduction.cmi: kernel/environ.cmi kernel/sign.cmi kernel/term.cmi \
kernel/univ.cmi
@@ -61,9 +61,6 @@ kernel/typeops.cmi: kernel/entries.cmi kernel/environ.cmi kernel/names.cmi \
kernel/univ.cmi: kernel/names.cmi lib/pp.cmi
lib/bignat.cmi: lib/pp.cmi
lib/pp.cmi: lib/pp_control.cmi
-lib/rtree.cmi: lib/pp.cmi
-lib/system.cmi: lib/pp.cmi
-lib/util.cmi: lib/pp.cmi
library/declare.cmi: kernel/cooking.cmi library/decl_kinds.cmo \
kernel/declarations.cmi library/dischargedhypsmap.cmi kernel/entries.cmi \
kernel/indtypes.cmi library/libnames.cmi library/libobject.cmi \
@@ -93,6 +90,9 @@ library/nameops.cmi: kernel/names.cmi lib/pp.cmi
library/nametab.cmi: library/libnames.cmi kernel/names.cmi lib/pp.cmi \
kernel/sign.cmi lib/util.cmi
library/summary.cmi: library/libnames.cmi kernel/names.cmi
+lib/rtree.cmi: lib/pp.cmi
+lib/system.cmi: lib/pp.cmi
+lib/util.cmi: lib/pp.cmi
parsing/ast.cmi: parsing/coqast.cmi lib/dyn.cmi interp/genarg.cmi \
library/libnames.cmi kernel/names.cmi lib/pp.cmi interp/topconstr.cmi \
lib/util.cmi
@@ -304,20 +304,20 @@ toplevel/recordobj.cmi: library/libnames.cmi proofs/tacexpr.cmo
toplevel/searchisos.cmi: library/libobject.cmi kernel/names.cmi \
kernel/term.cmi
toplevel/toplevel.cmi: parsing/pcoq.cmi lib/pp.cmi
-toplevel/vernac.cmi: parsing/pcoq.cmi lib/util.cmi toplevel/vernacexpr.cmo
toplevel/vernacentries.cmi: kernel/environ.cmi pretyping/evd.cmi \
library/libnames.cmi kernel/names.cmi kernel/term.cmi \
interp/topconstr.cmi toplevel/vernacexpr.cmo toplevel/vernacinterp.cmi
toplevel/vernacinterp.cmi: proofs/tacexpr.cmo
+toplevel/vernac.cmi: parsing/pcoq.cmi lib/util.cmi toplevel/vernacexpr.cmo
contrib/cc/ccalgo.cmi: kernel/names.cmi kernel/term.cmi
contrib/cc/ccproof.cmi: contrib/cc/ccalgo.cmi kernel/names.cmi
contrib/correctness/past.cmi: kernel/names.cmi contrib/correctness/ptype.cmi \
kernel/term.cmi interp/topconstr.cmi lib/util.cmi
-contrib/correctness/pcic.cmi: contrib/correctness/past.cmi \
- pretyping/rawterm.cmi
contrib/correctness/pcicenv.cmi: kernel/names.cmi \
contrib/correctness/penv.cmi contrib/correctness/prename.cmi \
kernel/sign.cmi kernel/term.cmi
+contrib/correctness/pcic.cmi: contrib/correctness/past.cmi \
+ pretyping/rawterm.cmi
contrib/correctness/pdb.cmi: kernel/names.cmi contrib/correctness/past.cmi \
contrib/correctness/ptype.cmi
contrib/correctness/peffect.cmi: kernel/names.cmi lib/pp.cmi
@@ -547,6 +547,12 @@ kernel/inductive.cmo: kernel/declarations.cmi kernel/environ.cmi \
kernel/inductive.cmx: kernel/declarations.cmx kernel/environ.cmx \
kernel/names.cmx kernel/reduction.cmx kernel/sign.cmx kernel/term.cmx \
kernel/type_errors.cmx kernel/univ.cmx lib/util.cmx kernel/inductive.cmi
+kernel/modops.cmo: kernel/declarations.cmi kernel/entries.cmi \
+ kernel/environ.cmi kernel/names.cmi lib/pp.cmi kernel/term.cmi \
+ kernel/univ.cmi lib/util.cmi kernel/modops.cmi
+kernel/modops.cmx: kernel/declarations.cmx kernel/entries.cmx \
+ kernel/environ.cmx kernel/names.cmx lib/pp.cmx kernel/term.cmx \
+ kernel/univ.cmx lib/util.cmx kernel/modops.cmi
kernel/mod_typing.cmo: kernel/declarations.cmi kernel/entries.cmi \
kernel/environ.cmi kernel/modops.cmi kernel/names.cmi \
kernel/reduction.cmi kernel/subtyping.cmi kernel/term_typing.cmi \
@@ -555,12 +561,6 @@ kernel/mod_typing.cmx: kernel/declarations.cmx kernel/entries.cmx \
kernel/environ.cmx kernel/modops.cmx kernel/names.cmx \
kernel/reduction.cmx kernel/subtyping.cmx kernel/term_typing.cmx \
kernel/typeops.cmx kernel/univ.cmx lib/util.cmx kernel/mod_typing.cmi
-kernel/modops.cmo: kernel/declarations.cmi kernel/entries.cmi \
- kernel/environ.cmi kernel/names.cmi lib/pp.cmi kernel/term.cmi \
- kernel/univ.cmi lib/util.cmi kernel/modops.cmi
-kernel/modops.cmx: kernel/declarations.cmx kernel/entries.cmx \
- kernel/environ.cmx kernel/names.cmx lib/pp.cmx kernel/term.cmx \
- kernel/univ.cmx lib/util.cmx kernel/modops.cmi
kernel/names.cmo: lib/hashcons.cmi lib/pp.cmi lib/predicate.cmi lib/util.cmi \
kernel/names.cmi
kernel/names.cmx: lib/hashcons.cmx lib/pp.cmx lib/predicate.cmx lib/util.cmx \
@@ -643,34 +643,24 @@ lib/edit.cmo: lib/bstack.cmi lib/pp.cmi lib/util.cmi lib/edit.cmi
lib/edit.cmx: lib/bstack.cmx lib/pp.cmx lib/util.cmx lib/edit.cmi
lib/explore.cmo: lib/explore.cmi
lib/explore.cmx: lib/explore.cmi
-lib/gmap.cmo: lib/gmap.cmi
-lib/gmap.cmx: lib/gmap.cmi
lib/gmapl.cmo: lib/gmap.cmi lib/util.cmi lib/gmapl.cmi
lib/gmapl.cmx: lib/gmap.cmx lib/util.cmx lib/gmapl.cmi
+lib/gmap.cmo: lib/gmap.cmi
+lib/gmap.cmx: lib/gmap.cmi
lib/gset.cmo: lib/gset.cmi
lib/gset.cmx: lib/gset.cmi
lib/hashcons.cmo: lib/hashcons.cmi
lib/hashcons.cmx: lib/hashcons.cmi
lib/options.cmo: lib/util.cmi lib/options.cmi
lib/options.cmx: lib/util.cmx lib/options.cmi
-lib/pp.cmo: lib/pp_control.cmi lib/pp.cmi
-lib/pp.cmx: lib/pp_control.cmx lib/pp.cmi
lib/pp_control.cmo: lib/pp_control.cmi
lib/pp_control.cmx: lib/pp_control.cmi
+lib/pp.cmo: lib/pp_control.cmi lib/pp.cmi
+lib/pp.cmx: lib/pp_control.cmx lib/pp.cmi
lib/predicate.cmo: lib/predicate.cmi
lib/predicate.cmx: lib/predicate.cmi
lib/profile.cmo: lib/profile.cmi
lib/profile.cmx: lib/profile.cmi
-lib/rtree.cmo: lib/pp.cmi lib/util.cmi lib/rtree.cmi
-lib/rtree.cmx: lib/pp.cmx lib/util.cmx lib/rtree.cmi
-lib/stamps.cmo: lib/stamps.cmi
-lib/stamps.cmx: lib/stamps.cmi
-lib/system.cmo: config/coq_config.cmi lib/pp.cmi lib/util.cmi lib/system.cmi
-lib/system.cmx: config/coq_config.cmx lib/pp.cmx lib/util.cmx lib/system.cmi
-lib/tlm.cmo: lib/gmap.cmi lib/gset.cmi lib/tlm.cmi
-lib/tlm.cmx: lib/gmap.cmx lib/gset.cmx lib/tlm.cmi
-lib/util.cmo: lib/pp.cmi lib/util.cmi
-lib/util.cmx: lib/pp.cmx lib/util.cmi
library/declare.cmo: library/decl_kinds.cmo kernel/declarations.cmi \
library/dischargedhypsmap.cmi kernel/entries.cmi kernel/environ.cmi \
library/global.cmi library/impargs.cmi kernel/indtypes.cmi \
@@ -773,6 +763,16 @@ library/states.cmx: library/lib.cmx library/library.cmx library/summary.cmx \
lib/system.cmx library/states.cmi
library/summary.cmo: lib/dyn.cmi lib/pp.cmi lib/util.cmi library/summary.cmi
library/summary.cmx: lib/dyn.cmx lib/pp.cmx lib/util.cmx library/summary.cmi
+lib/rtree.cmo: lib/pp.cmi lib/util.cmi lib/rtree.cmi
+lib/rtree.cmx: lib/pp.cmx lib/util.cmx lib/rtree.cmi
+lib/stamps.cmo: lib/stamps.cmi
+lib/stamps.cmx: lib/stamps.cmi
+lib/system.cmo: config/coq_config.cmi lib/pp.cmi lib/util.cmi lib/system.cmi
+lib/system.cmx: config/coq_config.cmx lib/pp.cmx lib/util.cmx lib/system.cmi
+lib/tlm.cmo: lib/gmap.cmi lib/gset.cmi lib/tlm.cmi
+lib/tlm.cmx: lib/gmap.cmx lib/gset.cmx lib/tlm.cmi
+lib/util.cmo: lib/pp.cmi lib/util.cmi
+lib/util.cmx: lib/pp.cmx lib/util.cmi
parsing/argextend.cmo: parsing/ast.cmi interp/genarg.cmi parsing/pcoq.cmi \
parsing/q_coqast.cmo parsing/q_util.cmi lib/util.cmi \
toplevel/vernacexpr.cmo
@@ -1615,6 +1615,14 @@ tactics/leminv.cmx: proofs/clenv.cmx interp/constrintern.cmx \
tactics/tacticals.cmx tactics/tactics.cmx kernel/term.cmx \
pretyping/termops.cmx lib/util.cmx toplevel/vernacexpr.cmx \
tactics/wcclausenv.cmx tactics/leminv.cmi
+tactics/mydef.cmo: library/declare.cmi kernel/environ.cmi pretyping/evd.cmi \
+ library/global.cmi kernel/names.cmi library/nametab.cmi \
+ pretyping/pretyping.cmi pretyping/rawterm.cmi kernel/safe_typing.cmi \
+ lib/util.cmi toplevel/vernacinterp.cmi
+tactics/mydef.cmx: library/declare.cmx kernel/environ.cmx pretyping/evd.cmx \
+ library/global.cmx kernel/names.cmx library/nametab.cmx \
+ pretyping/pretyping.cmx pretyping/rawterm.cmx kernel/safe_typing.cmx \
+ lib/util.cmx toplevel/vernacinterp.cmx
tactics/nbtermdn.cmo: tactics/btermdn.cmi lib/gmap.cmi library/libobject.cmi \
library/library.cmi kernel/names.cmi pretyping/pattern.cmi \
kernel/term.cmi tactics/termdn.cmi lib/util.cmi tactics/nbtermdn.cmi
@@ -1757,10 +1765,10 @@ tactics/wcclausenv.cmx: proofs/clenv.cmx kernel/environ.cmx \
proofs/proof_trees.cmx pretyping/reductionops.cmx proofs/refiner.cmx \
kernel/sign.cmx proofs/tacmach.cmx kernel/term.cmx pretyping/termops.cmx \
lib/util.cmx tactics/wcclausenv.cmi
-tools/coq_vo2xml.cmo: config/coq_config.cmi toplevel/usage.cmi
-tools/coq_vo2xml.cmx: config/coq_config.cmx toplevel/usage.cmx
tools/coqdep.cmo: config/coq_config.cmi tools/coqdep_lexer.cmo
tools/coqdep.cmx: config/coq_config.cmx tools/coqdep_lexer.cmx
+tools/coq_vo2xml.cmo: config/coq_config.cmi toplevel/usage.cmi
+tools/coq_vo2xml.cmx: config/coq_config.cmx toplevel/usage.cmx
tools/gallina.cmo: tools/gallina_lexer.cmo
tools/gallina.cmx: tools/gallina_lexer.cmx
toplevel/cerrors.cmo: parsing/ast.cmi pretyping/cases.cmi toplevel/himsg.cmi \
@@ -1963,14 +1971,6 @@ toplevel/toplevel.cmx: toplevel/cerrors.cmx library/lib.cmx \
toplevel/vernac.cmx toplevel/vernacexpr.cmx toplevel/toplevel.cmi
toplevel/usage.cmo: config/coq_config.cmi toplevel/usage.cmi
toplevel/usage.cmx: config/coq_config.cmx toplevel/usage.cmi
-toplevel/vernac.cmo: parsing/coqast.cmi library/lib.cmi library/library.cmi \
- kernel/names.cmi lib/options.cmi parsing/pcoq.cmi lib/pp.cmi \
- library/states.cmi lib/system.cmi lib/util.cmi toplevel/vernacentries.cmi \
- toplevel/vernacexpr.cmo toplevel/vernacinterp.cmi toplevel/vernac.cmi
-toplevel/vernac.cmx: parsing/coqast.cmx library/lib.cmx library/library.cmx \
- kernel/names.cmx lib/options.cmx parsing/pcoq.cmx lib/pp.cmx \
- library/states.cmx lib/system.cmx lib/util.cmx toplevel/vernacentries.cmx \
- toplevel/vernacexpr.cmx toplevel/vernacinterp.cmx toplevel/vernac.cmi
toplevel/vernacentries.cmo: tactics/auto.cmi toplevel/class.cmi \
pretyping/classops.cmi toplevel/command.cmi interp/constrextern.cmi \
interp/constrintern.cmi library/decl_kinds.cmo library/declaremods.cmi \
@@ -2031,6 +2031,14 @@ toplevel/vernacinterp.cmx: parsing/ast.cmx parsing/coqast.cmx \
kernel/names.cmx lib/options.cmx lib/pp.cmx proofs/proof_type.cmx \
proofs/tacexpr.cmx tactics/tacinterp.cmx lib/util.cmx \
toplevel/vernacexpr.cmx toplevel/vernacinterp.cmi
+toplevel/vernac.cmo: parsing/coqast.cmi library/lib.cmi library/library.cmi \
+ kernel/names.cmi lib/options.cmi parsing/pcoq.cmi lib/pp.cmi \
+ library/states.cmi lib/system.cmi lib/util.cmi toplevel/vernacentries.cmi \
+ toplevel/vernacexpr.cmo toplevel/vernacinterp.cmi toplevel/vernac.cmi
+toplevel/vernac.cmx: parsing/coqast.cmx library/lib.cmx library/library.cmx \
+ kernel/names.cmx lib/options.cmx parsing/pcoq.cmx lib/pp.cmx \
+ library/states.cmx lib/system.cmx lib/util.cmx toplevel/vernacentries.cmx \
+ toplevel/vernacexpr.cmx toplevel/vernacinterp.cmx toplevel/vernac.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 \
@@ -2051,6 +2059,18 @@ contrib/cc/cctac.cmx: contrib/cc/ccalgo.cmx contrib/cc/ccproof.cmx \
lib/pp.cmx parsing/pptactic.cmx proofs/proof_type.cmx proofs/refiner.cmx \
tactics/tacinterp.cmx proofs/tacmach.cmx tactics/tacticals.cmx \
tactics/tactics.cmx kernel/term.cmx lib/util.cmx
+contrib/correctness/pcicenv.cmo: library/global.cmi kernel/names.cmi \
+ contrib/correctness/past.cmi contrib/correctness/penv.cmi \
+ contrib/correctness/pmisc.cmi contrib/correctness/pmonad.cmi \
+ contrib/correctness/prename.cmi contrib/correctness/ptype.cmi \
+ contrib/correctness/putil.cmi kernel/sign.cmi kernel/term.cmi \
+ kernel/univ.cmi contrib/correctness/pcicenv.cmi
+contrib/correctness/pcicenv.cmx: library/global.cmx kernel/names.cmx \
+ contrib/correctness/past.cmi contrib/correctness/penv.cmx \
+ contrib/correctness/pmisc.cmx contrib/correctness/pmonad.cmx \
+ contrib/correctness/prename.cmx contrib/correctness/ptype.cmi \
+ contrib/correctness/putil.cmx kernel/sign.cmx kernel/term.cmx \
+ kernel/univ.cmx contrib/correctness/pcicenv.cmi
contrib/correctness/pcic.cmo: kernel/declarations.cmi library/declare.cmi \
pretyping/detyping.cmi kernel/entries.cmi library/global.cmi \
kernel/indtypes.cmi library/libnames.cmi library/nameops.cmi \
@@ -2067,18 +2087,6 @@ contrib/correctness/pcic.cmx: kernel/declarations.cmx library/declare.cmx \
kernel/sign.cmx kernel/term.cmx pretyping/termops.cmx \
interp/topconstr.cmx kernel/typeops.cmx lib/util.cmx \
toplevel/vernacexpr.cmx contrib/correctness/pcic.cmi
-contrib/correctness/pcicenv.cmo: library/global.cmi kernel/names.cmi \
- contrib/correctness/past.cmi contrib/correctness/penv.cmi \
- contrib/correctness/pmisc.cmi contrib/correctness/pmonad.cmi \
- contrib/correctness/prename.cmi contrib/correctness/ptype.cmi \
- contrib/correctness/putil.cmi kernel/sign.cmi kernel/term.cmi \
- kernel/univ.cmi contrib/correctness/pcicenv.cmi
-contrib/correctness/pcicenv.cmx: library/global.cmx kernel/names.cmx \
- contrib/correctness/past.cmi contrib/correctness/penv.cmx \
- contrib/correctness/pmisc.cmx contrib/correctness/pmonad.cmx \
- contrib/correctness/prename.cmx contrib/correctness/ptype.cmi \
- contrib/correctness/putil.cmx kernel/sign.cmx kernel/term.cmx \
- kernel/univ.cmx contrib/correctness/pcicenv.cmi
contrib/correctness/pdb.cmo: library/declare.cmi library/global.cmi \
kernel/names.cmi library/nametab.cmi contrib/correctness/past.cmi \
contrib/correctness/peffect.cmi contrib/correctness/penv.cmi \
@@ -2615,6 +2623,14 @@ contrib/interface/pbp.cmx: interp/coqlib.cmx contrib/interface/ctast.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_ct.cmo: contrib/interface/ascent.cmi \
+ parsing/esyntax.cmi library/global.cmi toplevel/metasyntax.cmi lib/pp.cmi \
+ parsing/printer.cmi contrib/interface/translate.cmi \
+ contrib/interface/vtp.cmi contrib/interface/xlate.cmi
+contrib/interface/showproof_ct.cmx: contrib/interface/ascent.cmi \
+ parsing/esyntax.cmx library/global.cmx toplevel/metasyntax.cmx lib/pp.cmx \
+ parsing/printer.cmx contrib/interface/translate.cmx \
+ contrib/interface/vtp.cmx contrib/interface/xlate.cmx
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 \
@@ -2639,14 +2655,6 @@ contrib/interface/showproof.cmx: proofs/clenv.cmx interp/constrintern.cmx \
pretyping/termops.cmx contrib/interface/translate.cmx \
pretyping/typing.cmx lib/util.cmx toplevel/vernacinterp.cmx \
contrib/interface/showproof.cmi
-contrib/interface/showproof_ct.cmo: contrib/interface/ascent.cmi \
- parsing/esyntax.cmi library/global.cmi toplevel/metasyntax.cmi lib/pp.cmi \
- parsing/printer.cmi contrib/interface/translate.cmi \
- contrib/interface/vtp.cmi contrib/interface/xlate.cmi
-contrib/interface/showproof_ct.cmx: contrib/interface/ascent.cmi \
- parsing/esyntax.cmx library/global.cmx toplevel/metasyntax.cmx lib/pp.cmx \
- parsing/printer.cmx contrib/interface/translate.cmx \
- contrib/interface/vtp.cmx contrib/interface/xlate.cmx
contrib/interface/translate.cmo: contrib/interface/ascent.cmi parsing/ast.cmi \
contrib/interface/ctast.cmo kernel/environ.cmi pretyping/evarutil.cmi \
pretyping/evd.cmi library/libobject.cmi library/library.cmi \
@@ -2817,12 +2825,12 @@ contrib/romega/refl_omega.cmx: parsing/ast.cmx tactics/auto.cmx \
proofs/proof_type.cmx kernel/reduction.cmx kernel/sign.cmx \
proofs/tacmach.cmx tactics/tacticals.cmx tactics/tactics.cmx \
kernel/term.cmx lib/util.cmx
-contrib/xml/acic.cmo: kernel/names.cmi kernel/term.cmi
-contrib/xml/acic.cmx: kernel/names.cmx kernel/term.cmx
contrib/xml/acic2Xml.cmo: contrib/xml/acic.cmo contrib/xml/cic2acic.cmo \
kernel/names.cmi kernel/term.cmi lib/util.cmi contrib/xml/xml.cmi
contrib/xml/acic2Xml.cmx: contrib/xml/acic.cmx contrib/xml/cic2acic.cmx \
kernel/names.cmx kernel/term.cmx lib/util.cmx contrib/xml/xml.cmx
+contrib/xml/acic.cmo: kernel/names.cmi kernel/term.cmi
+contrib/xml/acic.cmx: kernel/names.cmx kernel/term.cmx
contrib/xml/cic2acic.cmo: contrib/xml/acic.cmo library/declare.cmi \
library/dischargedhypsmap.cmi contrib/xml/doubleTypeInference.cmi \
kernel/environ.cmi pretyping/evarutil.cmi pretyping/evd.cmi \
@@ -2877,8 +2885,6 @@ contrib/xml/proofTree2Xml.cmx: contrib/xml/acic.cmx contrib/xml/acic2Xml.cmx \
contrib/xml/xml.cmx
contrib/xml/unshare.cmo: contrib/xml/unshare.cmi
contrib/xml/unshare.cmx: contrib/xml/unshare.cmi
-contrib/xml/xml.cmo: contrib/xml/xml.cmi
-contrib/xml/xml.cmx: contrib/xml/xml.cmi
contrib/xml/xmlcommand.cmo: contrib/xml/acic.cmo contrib/xml/acic2Xml.cmo \
contrib/xml/cic2acic.cmo library/decl_kinds.cmo kernel/declarations.cmi \
library/declare.cmi kernel/environ.cmi pretyping/evd.cmi \
@@ -2905,6 +2911,8 @@ 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
+contrib/xml/xml.cmo: contrib/xml/xml.cmi
+contrib/xml/xml.cmx: contrib/xml/xml.cmi
tactics/tauto.cmo: parsing/grammar.cma
tactics/tauto.cmx: parsing/grammar.cma
tactics/eqdecide.cmo: parsing/grammar.cma
diff --git a/contrib/interface/centaur.ml4 b/contrib/interface/centaur.ml4
index fd8d64f07..1a660a89f 100644
--- a/contrib/interface/centaur.ml4
+++ b/contrib/interface/centaur.ml4
@@ -470,7 +470,7 @@ let logical_kill n =
let simulate_solve n tac =
let path = History.get_nth_open_path (current_proof_name()) n in
- solve_nth n (Tacinterp.hide_interp tac);
+ solve_nth n (Tacinterp.hide_interp tac (get_end_tac()));
traverse_to path;
Pfedit.mutate weak_undo_pftreestate;
traverse_to []
diff --git a/contrib/interface/xlate.ml b/contrib/interface/xlate.ml
index c9079a8fc..2ceb5789c 100644
--- a/contrib/interface/xlate.ml
+++ b/contrib/interface/xlate.ml
@@ -1223,7 +1223,7 @@ let xlate_vernac =
| VernacAbort None -> CT_abort ctv_ID_OPT_OR_ALL_NONE
| VernacAbortAll -> CT_abort ctv_ID_OPT_OR_ALL_ALL
| VernacRestart -> CT_restart
- | VernacSolve (n, tac) -> CT_solve (CT_int n, xlate_tactic tac)
+ | VernacSolve (n, tac, b) -> CT_solve (CT_int n, xlate_tactic tac)
| VernacFocus nopt -> CT_focus (xlate_int_opt nopt)
| VernacUnfocus -> CT_unfocus
| VernacExtend ("HintRewrite", orient :: formula_list :: base :: t) ->
diff --git a/parsing/g_proofs.ml4 b/parsing/g_proofs.ml4
index 951e75815..879ce98ae 100644
--- a/parsing/g_proofs.ml4
+++ b/parsing/g_proofs.ml4
@@ -36,6 +36,7 @@ GEXTEND Gram
(*VernacGoal c*)
(* | IDENT "Goal" -> VernacGoal None*)
| "Proof" -> VernacNop
+ | "Proof"; "with"; ta = tactic -> VernacProof ta
(* Used ??
| IDENT "Begin" -> VernacNop
*)
diff --git a/parsing/g_vernac.ml4 b/parsing/g_vernac.ml4
index 57d799a15..b4f7abbb0 100644
--- a/parsing/g_vernac.ml4
+++ b/parsing/g_vernac.ml4
@@ -39,7 +39,9 @@ GEXTEND Gram
| g = gallina_ext; "." -> g
| c = command; "." -> c
| c = syntax; "." -> c
- | n = natural; ":"; v = goal_vernac; "." -> v n
+ | n = natural; ":"; tac = Tactic.tactic; "." -> VernacSolve (n,tac,true)
+ | n = natural; ":"; tac = Tactic.tactic; "!!" -> VernacSolve (n,tac,false)
+ | n = natural; ":"; v = check_command; "." -> v (Some n)
| "["; l = vernac_list_tail -> VernacList l
(* For translation from V7 to V8 *)
@@ -52,10 +54,7 @@ GEXTEND Gram
*)
] ]
;
- goal_vernac:
- [ [ tac = Tactic.tactic -> fun n -> VernacSolve (n,tac)
- | v = check_command -> fun n -> v (Some n) ] ]
- ;
+
check_command:
[ [ IDENT "Eval"; r = Tactic.red_expr; "in"; c = constr ->
fun g -> VernacCheckMayEval (Some r, g, c)
@@ -66,13 +65,8 @@ GEXTEND Gram
[ [ IDENT "Time"; v = vernac -> VernacTime v ] ]
;
vernac: LAST
- [ [ tac = Tactic.tactic; "." ->
- (match tac with
-(* Horrible hack pour LETTOP !
- | VernacSolve (Coqast.Node(_,kind,_))
- when kind = "StartProof" || kind = "TheoremProof" -> ??
-*)
- | _ -> VernacSolve (1,tac))
+ [ [ tac = Tactic.tactic; "." -> VernacSolve (1,tac,true)
+ | tac = Tactic.tactic; "!!" -> VernacSolve (1,tac,false)
| IDENT "Existential"; n = natural; c = constr_body ->
VernacSolveExistential (n,c)
] ]
diff --git a/proofs/pfedit.ml b/proofs/pfedit.ml
index 6f682f113..b8a61e0ec 100644
--- a/proofs/pfedit.ml
+++ b/proofs/pfedit.ml
@@ -33,6 +33,7 @@ open Safe_typing
(*********************************************************************)
type proof_topstate = {
+ mutable top_end_tac : tactic option;
top_hyps : named_context * named_context;
top_goal : goal;
top_strength : Decl_kinds.goal_kind;
@@ -69,6 +70,8 @@ let get_state () =
let get_topstate () = snd(get_state())
let get_pftreestate () = fst(get_state())
+let get_end_tac () = let ts = get_topstate () in ts.top_end_tac
+
let get_goal_context n =
let pftree = get_pftreestate () in
let goal = nth_goal_of_pftreestate n pftree in
@@ -208,7 +211,14 @@ let check_no_pending_proofs () =
let delete_current_proof () = delete_proof_gen (get_current_proof_name ())
let delete_all_proofs = init_proofs
-
+
+(*********************************************************************)
+(* Modifying the end tactic of the current profftree *)
+(*********************************************************************)
+let set_end_tac tac =
+ let top = get_topstate () in
+ top.top_end_tac <- Some tac
+
(*********************************************************************)
(* Modifying the current prooftree *)
(*********************************************************************)
@@ -216,6 +226,7 @@ let delete_all_proofs = init_proofs
let start_proof na str sign concl hook =
let top_goal = mk_goal sign concl in
let ts = {
+ top_end_tac = None;
top_hyps = (sign,empty_named_context);
top_goal = top_goal;
top_strength = str;
@@ -224,9 +235,10 @@ let start_proof na str sign concl hook =
start(na,ts);
set_current_proof na
+
let solve_nth k tac =
- let pft = get_pftreestate() in
- if not (List.mem (-1) (cursor_of_pftreestate pft)) then
+ let pft = get_pftreestate () in
+ if not (List.mem (-1) (cursor_of_pftreestate pft)) then
mutate (solve_nth_pftreestate k tac)
else
error "cannot apply a tactic when we are descended behind a tactic-node"
diff --git a/proofs/pfedit.mli b/proofs/pfedit.mli
index 8cf1cffe1..9585e7b3c 100644
--- a/proofs/pfedit.mli
+++ b/proofs/pfedit.mli
@@ -106,6 +106,9 @@ val set_xml_cook_proof : (pftreestate -> unit) -> unit
val get_pftreestate : unit -> pftreestate
+(* [get_end_tac ()] returns the current tactic to apply to all new subgoal *)
+val get_end_tac : unit -> tactic option
+
(* [get_goal_context n] returns the context of the [n]th subgoal of
the current focused proof or raises a [UserError] if there is no
focused proof or if there is no more subgoals *)
@@ -125,6 +128,11 @@ val get_current_proof_name : unit -> identifier
val get_all_proof_names : unit -> identifier list
+(*s [set_end_tac tac] applies tactic [tac] to all subgoal generate
+ by [solve_nth] *)
+
+val set_end_tac : tactic -> unit
+
(*s [solve_nth n tac] applies tactic [tac] to the [n]th subgoal of the
current focused proof or raises a UserError if no proof is focused or
if there is no [n]th subgoal *)
diff --git a/tactics/tacinterp.ml b/tactics/tacinterp.ml
index a09bfbd12..efc2a9b82 100644
--- a/tactics/tacinterp.ml
+++ b/tactics/tacinterp.ml
@@ -1695,7 +1695,10 @@ let interp_tacarg sign ast = (*unvarg*) (val_interp sign ast)
let interp = fun ast -> tac_interp [] [] !debug ast
(* Hides interpretation for pretty-print *)
-let hide_interp t = abstract_tactic_expr (TacArg (Tacexp t)) (interp t)
+let hide_interp t ot =
+ match ot with
+ | None -> abstract_tactic_expr (TacArg (Tacexp t)) (interp t)
+ | Some t' -> abstract_tactic_expr (TacArg (Tacexp t)) (tclTHEN (interp t) t')
(* For bad tactic calls *)
let bad_tactic_args s =
diff --git a/tactics/tacinterp.mli b/tactics/tacinterp.mli
index b4b666fa7..c22ce9829 100644
--- a/tactics/tacinterp.mli
+++ b/tactics/tacinterp.mli
@@ -103,7 +103,8 @@ val constr_interp : interp_sign -> constr_expr -> constr
val interp : raw_tactic_expr -> tactic
(* Hides interpretation for pretty-print *)
-val hide_interp : raw_tactic_expr -> tactic
+
+val hide_interp : raw_tactic_expr -> tactic option -> tactic
(* Adds an interpretation function *)
val interp_add : string * (interp_sign -> Coqast.t -> value) -> unit
diff --git a/toplevel/vernacentries.ml b/toplevel/vernacentries.ml
index 7213727c2..99b2444c0 100644
--- a/toplevel/vernacentries.ml
+++ b/toplevel/vernacentries.ml
@@ -534,11 +534,14 @@ let vernac_identity_coercion stre id qids qidt =
(***********)
(* Solving *)
-
-let vernac_solve n tcom =
+let vernac_solve n tcom b =
if not (refining ()) then
error "Unknown command of the non proof-editing mode";
- solve_nth n (Tacinterp.hide_interp tcom);
+ begin
+ if b then
+ solve_nth n (Tacinterp.hide_interp tcom (get_end_tac ()))
+ else solve_nth n (Tacinterp.hide_interp tcom None)
+ end;
print_subgoals();
(* in case a strict subtree was completed,
go back to the top of the prooftree *)
@@ -551,10 +554,16 @@ let vernac_solve n tcom =
machine, and enables to instantiate existential variables when
there are no more goals to solve. It cannot be a tactic since
all tactics fail if there are no further goals to prove. *)
-
+
let vernac_solve_existential = instantiate_nth_evar_com
+let vernac_set_end_tac tac =
+ if not (refining ()) then
+ error "Unknown command of the non proof-editing mode";
+ set_end_tac (Tacinterp.interp tac)
+
+
(*****************************)
(* Auxiliary file management *)
@@ -1074,7 +1083,7 @@ let interp c = match c with
| VernacIdentityCoercion (str,id,s,t) -> vernac_identity_coercion str id s t
(* Solving *)
- | VernacSolve (n,tac) -> vernac_solve n tac
+ | VernacSolve (n,tac,b) -> vernac_solve n tac b
| VernacSolveExistential (n,c) -> vernac_solve_existential n c
(* Auxiliary file and library management *)
@@ -1129,7 +1138,7 @@ let interp c = match c with
| VernacShow s -> vernac_show s
| VernacCheckGuard -> vernac_check_guard ()
| VernacDebug b -> vernac_debug b
-
+ | VernacProof tac -> vernac_set_end_tac tac
(* Toplevel control *)
| VernacToplevelControl e -> raise e
diff --git a/toplevel/vernacexpr.ml b/toplevel/vernacexpr.ml
index adc46d2d1..a7ee9a57b 100644
--- a/toplevel/vernacexpr.ml
+++ b/toplevel/vernacexpr.ml
@@ -199,7 +199,7 @@ type vernac_expr =
module_binder list * module_type_ast option
(* Solving *)
- | VernacSolve of int * raw_tactic_expr
+ | VernacSolve of int * raw_tactic_expr * bool
| VernacSolveExistential of int * constr_expr
(* Auxiliary file and library management *)
@@ -256,7 +256,7 @@ type vernac_expr =
| VernacShow of showable
| VernacCheckGuard
| VernacDebug of bool
-
+ | VernacProof of raw_tactic_expr
(* Toplevel control *)
| VernacToplevelControl of exn