aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar coq <coq@85f007b7-540e-0410-9357-904b9bb8a0f7>2005-05-24 12:33:26 +0000
committerGravatar coq <coq@85f007b7-540e-0410-9357-904b9bb8a0f7>2005-05-24 12:33:26 +0000
commitd2331067061699e2cd105bf88d8361ed45fa6f3d (patch)
tree29fae1802a8b1f2477452efa90ff7d2d87da7f3a
parent2d7204a2001b52ad4d5e5933b19ba23fc3934320 (diff)
dp: ajout du prouveur Zenon
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@7066 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--.depend279
-rw-r--r--Makefile3
-rw-r--r--contrib/dp/dp.ml126
-rw-r--r--contrib/dp/dp.mli1
-rw-r--r--contrib/dp/dp_simplify.ml16
-rw-r--r--contrib/dp/dp_zenon.ml103
-rw-r--r--contrib/dp/dp_zenon.mli4
-rw-r--r--contrib/dp/g_dp.ml44
8 files changed, 350 insertions, 186 deletions
diff --git a/.depend b/.depend
index cfc08775d..6d683a519 100644
--- a/.depend
+++ b/.depend
@@ -53,12 +53,12 @@ kernel/indtypes.cmi: kernel/univ.cmi kernel/typeops.cmi kernel/term.cmi \
kernel/declarations.cmi
kernel/inductive.cmi: kernel/univ.cmi kernel/term.cmi kernel/names.cmi \
kernel/environ.cmi kernel/declarations.cmi
-kernel/mod_subst.cmi: kernel/term.cmi lib/pp.cmi kernel/names.cmi
-kernel/mod_typing.cmi: kernel/environ.cmi kernel/entries.cmi \
- kernel/declarations.cmi
kernel/modops.cmi: lib/util.cmi kernel/univ.cmi kernel/names.cmi \
kernel/mod_subst.cmi kernel/environ.cmi kernel/entries.cmi \
kernel/declarations.cmi
+kernel/mod_subst.cmi: kernel/term.cmi lib/pp.cmi kernel/names.cmi
+kernel/mod_typing.cmi: kernel/environ.cmi kernel/entries.cmi \
+ kernel/declarations.cmi
kernel/names.cmi: lib/predicate.cmi lib/pp.cmi
kernel/reduction.cmi: kernel/univ.cmi kernel/term.cmi kernel/sign.cmi \
kernel/environ.cmi
@@ -82,9 +82,6 @@ kernel/vm.cmi: kernel/term.cmi kernel/names.cmi kernel/cemitcodes.cmi \
kernel/cbytecodes.cmi
lib/bigint.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 lib/compat.cmo
library/declare.cmi: kernel/term.cmi kernel/sign.cmi kernel/safe_typing.cmi \
library/nametab.cmi kernel/names.cmi library/libnames.cmi \
kernel/indtypes.cmi kernel/entries.cmi kernel/declarations.cmi \
@@ -115,6 +112,9 @@ library/library.cmi: lib/util.cmi lib/system.cmi lib/pp.cmi kernel/names.cmi \
library/nameops.cmi: kernel/term.cmi lib/pp.cmi kernel/names.cmi
library/nametab.cmi: lib/util.cmi lib/pp.cmi kernel/names.cmi \
library/libnames.cmi
+lib/rtree.cmi: lib/pp.cmi
+lib/system.cmi: lib/pp.cmi
+lib/util.cmi: lib/pp.cmi lib/compat.cmo
parsing/ast.cmi: lib/util.cmi interp/topconstr.cmi lib/pp.cmi \
kernel/names.cmi kernel/mod_subst.cmi library/libnames.cmi \
interp/genarg.cmi lib/dyn.cmi parsing/coqast.cmi
@@ -349,11 +349,11 @@ toplevel/record.cmi: toplevel/vernacexpr.cmo interp/topconstr.cmi \
toplevel/searchisos.cmi: kernel/term.cmi kernel/names.cmi \
library/libobject.cmi
toplevel/toplevel.cmi: lib/pp.cmi parsing/pcoq.cmi
-toplevel/vernac.cmi: toplevel/vernacexpr.cmo lib/util.cmi parsing/pcoq.cmi
toplevel/vernacentries.cmi: toplevel/vernacinterp.cmi toplevel/vernacexpr.cmo \
interp/topconstr.cmi kernel/term.cmi kernel/names.cmi \
library/libnames.cmi pretyping/evd.cmi kernel/environ.cmi
toplevel/vernacinterp.cmi: proofs/tacexpr.cmo
+toplevel/vernac.cmi: toplevel/vernacexpr.cmo lib/util.cmi parsing/pcoq.cmi
toplevel/whelp.cmi: interp/topconstr.cmi kernel/term.cmi kernel/names.cmi \
kernel/environ.cmi
translate/ppconstrnew.cmi: lib/util.cmi interp/topconstr.cmi kernel/term.cmi \
@@ -374,9 +374,9 @@ contrib/cc/ccalgo.cmi: kernel/term.cmi kernel/names.cmi
contrib/cc/ccproof.cmi: kernel/names.cmi contrib/cc/ccalgo.cmi
contrib/correctness/past.cmi: lib/util.cmi interp/topconstr.cmi \
kernel/term.cmi kernel/names.cmi
-contrib/correctness/pcic.cmi: pretyping/rawterm.cmi
contrib/correctness/pcicenv.cmi: kernel/term.cmi kernel/sign.cmi \
kernel/names.cmi
+contrib/correctness/pcic.cmi: pretyping/rawterm.cmi
contrib/correctness/pdb.cmi: kernel/names.cmi
contrib/correctness/peffect.cmi: lib/pp.cmi kernel/names.cmi
contrib/correctness/penv.cmi: kernel/term.cmi kernel/names.cmi \
@@ -398,6 +398,7 @@ contrib/correctness/putil.cmi: kernel/term.cmi lib/pp.cmi kernel/names.cmi
contrib/correctness/pwp.cmi: kernel/term.cmi
contrib/dp/dp.cmi: proofs/proof_type.cmi library/libnames.cmi
contrib/dp/dp_simplify.cmi: contrib/dp/fol.cmi
+contrib/dp/dp_zenon.cmi: contrib/dp/fol.cmi
contrib/extraction/common.cmi: kernel/names.cmi contrib/extraction/mlutil.cmi \
contrib/extraction/miniml.cmi
contrib/extraction/extract_env.cmi: kernel/names.cmi library/libnames.cmi
@@ -510,6 +511,14 @@ ide/config_lexer.cmo: lib/util.cmi ide/config_parser.cmi
ide/config_lexer.cmx: lib/util.cmx ide/config_parser.cmx
ide/config_parser.cmo: lib/util.cmi ide/config_parser.cmi
ide/config_parser.cmx: lib/util.cmx ide/config_parser.cmi
+ide/coqide.cmo: toplevel/vernacexpr.cmo lib/util.cmi ide/undo.cmi \
+ lib/system.cmi ide/preferences.cmi proofs/pfedit.cmi ide/ideutils.cmi \
+ ide/highlight.cmo ide/find_phrase.cmo ide/coq_commands.cmo ide/coq.cmi \
+ ide/command_windows.cmi ide/blaster_window.cmo ide/coqide.cmi
+ide/coqide.cmx: toplevel/vernacexpr.cmx lib/util.cmx ide/undo.cmx \
+ lib/system.cmx ide/preferences.cmx proofs/pfedit.cmx ide/ideutils.cmx \
+ ide/highlight.cmx ide/find_phrase.cmx ide/coq_commands.cmx ide/coq.cmx \
+ ide/command_windows.cmx ide/blaster_window.cmx ide/coqide.cmi
ide/coq.cmo: toplevel/vernacexpr.cmo toplevel/vernacentries.cmi \
toplevel/vernac.cmi lib/util.cmi pretyping/termops.cmi kernel/term.cmi \
proofs/tacmach.cmi tactics/tacinterp.cmi library/states.cmi \
@@ -534,14 +543,6 @@ ide/coq.cmx: toplevel/vernacexpr.cmx toplevel/vernacentries.cmx \
ide/coq.cmi
ide/coq_tactics.cmo: ide/coq_tactics.cmi
ide/coq_tactics.cmx: ide/coq_tactics.cmi
-ide/coqide.cmo: toplevel/vernacexpr.cmo lib/util.cmi ide/undo.cmi \
- lib/system.cmi ide/preferences.cmi proofs/pfedit.cmi ide/ideutils.cmi \
- ide/highlight.cmo ide/find_phrase.cmo ide/coq_commands.cmo ide/coq.cmi \
- ide/command_windows.cmi ide/blaster_window.cmo ide/coqide.cmi
-ide/coqide.cmx: toplevel/vernacexpr.cmx lib/util.cmx ide/undo.cmx \
- lib/system.cmx ide/preferences.cmx proofs/pfedit.cmx ide/ideutils.cmx \
- ide/highlight.cmx ide/find_phrase.cmx ide/coq_commands.cmx ide/coq.cmx \
- ide/command_windows.cmx ide/blaster_window.cmx ide/coqide.cmi
ide/find_phrase.cmo: ide/ideutils.cmi
ide/find_phrase.cmx: ide/ideutils.cmx
ide/highlight.cmo: ide/ideutils.cmi
@@ -722,6 +723,14 @@ kernel/inductive.cmo: lib/util.cmi kernel/univ.cmi kernel/type_errors.cmi \
kernel/inductive.cmx: lib/util.cmx kernel/univ.cmx kernel/type_errors.cmx \
kernel/term.cmx kernel/sign.cmx kernel/reduction.cmx kernel/names.cmx \
kernel/environ.cmx kernel/declarations.cmx kernel/inductive.cmi
+kernel/modops.cmo: lib/util.cmi kernel/univ.cmi kernel/term.cmi lib/pp.cmi \
+ kernel/names.cmi kernel/mod_subst.cmi kernel/environ.cmi \
+ kernel/entries.cmi kernel/declarations.cmi kernel/cemitcodes.cmi \
+ kernel/cbytegen.cmi kernel/modops.cmi
+kernel/modops.cmx: lib/util.cmx kernel/univ.cmx kernel/term.cmx lib/pp.cmx \
+ kernel/names.cmx kernel/mod_subst.cmx kernel/environ.cmx \
+ kernel/entries.cmx kernel/declarations.cmx kernel/cemitcodes.cmx \
+ kernel/cbytegen.cmx kernel/modops.cmi
kernel/mod_subst.cmo: lib/util.cmi kernel/term.cmi lib/pp.cmi \
kernel/names.cmi kernel/mod_subst.cmi
kernel/mod_subst.cmx: lib/util.cmx kernel/term.cmx lib/pp.cmx \
@@ -736,14 +745,6 @@ kernel/mod_typing.cmx: lib/util.cmx kernel/univ.cmx kernel/typeops.cmx \
kernel/names.cmx kernel/modops.cmx kernel/mod_subst.cmx \
kernel/environ.cmx kernel/entries.cmx kernel/declarations.cmx \
kernel/cemitcodes.cmx kernel/cbytegen.cmx kernel/mod_typing.cmi
-kernel/modops.cmo: lib/util.cmi kernel/univ.cmi kernel/term.cmi lib/pp.cmi \
- kernel/names.cmi kernel/mod_subst.cmi kernel/environ.cmi \
- kernel/entries.cmi kernel/declarations.cmi kernel/cemitcodes.cmi \
- kernel/cbytegen.cmi kernel/modops.cmi
-kernel/modops.cmx: lib/util.cmx kernel/univ.cmx kernel/term.cmx lib/pp.cmx \
- kernel/names.cmx kernel/mod_subst.cmx kernel/environ.cmx \
- kernel/entries.cmx kernel/declarations.cmx kernel/cemitcodes.cmx \
- kernel/cbytegen.cmx kernel/modops.cmi
kernel/names.cmo: lib/util.cmi lib/predicate.cmi lib/pp.cmi lib/options.cmi \
lib/hashcons.cmi kernel/names.cmi
kernel/names.cmx: lib/util.cmx lib/predicate.cmx lib/pp.cmx lib/options.cmx \
@@ -838,10 +839,10 @@ lib/edit.cmo: lib/util.cmi lib/pp.cmi lib/bstack.cmi lib/edit.cmi
lib/edit.cmx: lib/util.cmx lib/pp.cmx lib/bstack.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/util.cmi lib/gmap.cmi lib/gmapl.cmi
lib/gmapl.cmx: lib/util.cmx lib/gmap.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
@@ -850,24 +851,14 @@ lib/heap.cmo: lib/heap.cmi
lib/heap.cmx: lib/heap.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/util.cmi lib/pp.cmi lib/rtree.cmi
-lib/rtree.cmx: lib/util.cmx lib/pp.cmx lib/rtree.cmi
-lib/stamps.cmo: lib/stamps.cmi
-lib/stamps.cmx: lib/stamps.cmi
-lib/system.cmo: lib/util.cmi lib/pp.cmi config/coq_config.cmi lib/system.cmi
-lib/system.cmx: lib/util.cmx lib/pp.cmx config/coq_config.cmx lib/system.cmi
-lib/tlm.cmo: lib/gset.cmi lib/gmap.cmi lib/tlm.cmi
-lib/tlm.cmx: lib/gset.cmx lib/gmap.cmx lib/tlm.cmi
-lib/util.cmo: lib/pp.cmi lib/compat.cmo lib/util.cmi
-lib/util.cmx: lib/pp.cmx lib/compat.cmx lib/util.cmi
library/declare.cmo: lib/util.cmi kernel/univ.cmi kernel/typeops.cmi \
kernel/type_errors.cmi kernel/term.cmi library/summary.cmi \
kernel/sign.cmi kernel/safe_typing.cmi kernel/reduction.cmi lib/pp.cmi \
@@ -982,6 +973,16 @@ library/states.cmx: lib/system.cmx library/summary.cmx library/library.cmx \
library/lib.cmx library/states.cmi
library/summary.cmo: lib/util.cmi lib/pp.cmi lib/dyn.cmi library/summary.cmi
library/summary.cmx: lib/util.cmx lib/pp.cmx lib/dyn.cmx library/summary.cmi
+lib/rtree.cmo: lib/util.cmi lib/pp.cmi lib/rtree.cmi
+lib/rtree.cmx: lib/util.cmx lib/pp.cmx lib/rtree.cmi
+lib/stamps.cmo: lib/stamps.cmi
+lib/stamps.cmx: lib/stamps.cmi
+lib/system.cmo: lib/util.cmi lib/pp.cmi config/coq_config.cmi lib/system.cmi
+lib/system.cmx: lib/util.cmx lib/pp.cmx config/coq_config.cmx lib/system.cmi
+lib/tlm.cmo: lib/gset.cmi lib/gmap.cmi lib/tlm.cmi
+lib/tlm.cmx: lib/gset.cmx lib/gmap.cmx lib/tlm.cmi
+lib/util.cmo: lib/pp.cmi lib/compat.cmo lib/util.cmi
+lib/util.cmx: lib/pp.cmx lib/compat.cmx lib/util.cmi
parsing/argextend.cmo: toplevel/vernacexpr.cmo lib/util.cmi \
parsing/q_util.cmi parsing/q_coqast.cmo parsing/pcoq.cmi \
interp/genarg.cmi parsing/ast.cmi
@@ -2344,20 +2345,6 @@ toplevel/toplevel.cmx: toplevel/vernacexpr.cmx toplevel/vernac.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: toplevel/vernacinterp.cmi toplevel/vernacexpr.cmo \
- toplevel/vernacentries.cmi lib/util.cmi proofs/tacmach.cmi \
- tactics/tacinterp.cmi lib/system.cmi library/states.cmi \
- proofs/refiner.cmi translate/ppvernacnew.cmi lib/pp.cmi proofs/pfedit.cmi \
- parsing/pcoq.cmi lib/options.cmi kernel/names.cmi library/library.cmi \
- library/lib.cmi parsing/lexer.cmi parsing/coqast.cmi \
- interp/constrintern.cmi interp/constrextern.cmi toplevel/vernac.cmi
-toplevel/vernac.cmx: toplevel/vernacinterp.cmx toplevel/vernacexpr.cmx \
- toplevel/vernacentries.cmx lib/util.cmx proofs/tacmach.cmx \
- tactics/tacinterp.cmx lib/system.cmx library/states.cmx \
- proofs/refiner.cmx translate/ppvernacnew.cmx lib/pp.cmx proofs/pfedit.cmx \
- parsing/pcoq.cmx lib/options.cmx kernel/names.cmx library/library.cmx \
- library/lib.cmx parsing/lexer.cmx parsing/coqast.cmx \
- interp/constrintern.cmx interp/constrextern.cmx toplevel/vernac.cmi
toplevel/vernacentries.cmo: kernel/vm.cmi toplevel/vernacinterp.cmi \
toplevel/vernacexpr.cmo kernel/vconv.cmi lib/util.cmi kernel/univ.cmi \
kernel/typeops.cmi interp/topconstr.cmi kernel/term.cmi \
@@ -2420,6 +2407,20 @@ toplevel/vernacinterp.cmx: toplevel/vernacexpr.cmx lib/util.cmx \
lib/options.cmx kernel/names.cmx library/libnames.cmx toplevel/himsg.cmx \
parsing/extend.cmx parsing/coqast.cmx parsing/ast.cmx \
toplevel/vernacinterp.cmi
+toplevel/vernac.cmo: toplevel/vernacinterp.cmi toplevel/vernacexpr.cmo \
+ toplevel/vernacentries.cmi lib/util.cmi proofs/tacmach.cmi \
+ tactics/tacinterp.cmi lib/system.cmi library/states.cmi \
+ proofs/refiner.cmi translate/ppvernacnew.cmi lib/pp.cmi proofs/pfedit.cmi \
+ parsing/pcoq.cmi lib/options.cmi kernel/names.cmi library/library.cmi \
+ library/lib.cmi parsing/lexer.cmi parsing/coqast.cmi \
+ interp/constrintern.cmi interp/constrextern.cmi toplevel/vernac.cmi
+toplevel/vernac.cmx: toplevel/vernacinterp.cmx toplevel/vernacexpr.cmx \
+ toplevel/vernacentries.cmx lib/util.cmx proofs/tacmach.cmx \
+ tactics/tacinterp.cmx lib/system.cmx library/states.cmx \
+ proofs/refiner.cmx translate/ppvernacnew.cmx lib/pp.cmx proofs/pfedit.cmx \
+ parsing/pcoq.cmx lib/options.cmx kernel/names.cmx library/library.cmx \
+ library/lib.cmx parsing/lexer.cmx parsing/coqast.cmx \
+ interp/constrintern.cmx interp/constrextern.cmx toplevel/vernac.cmi
toplevel/whelp.cmo: toplevel/vernacinterp.cmi lib/util.cmi kernel/term.cmi \
lib/system.cmi interp/syntax_def.cmi pretyping/rawterm.cmi lib/pp.cmi \
parsing/pcoq.cmi lib/options.cmi library/nametab.cmi kernel/names.cmi \
@@ -2522,6 +2523,12 @@ contrib/cc/cctac.cmx: lib/util.cmx pretyping/termops.cmx kernel/term.cmx \
pretyping/evd.cmx parsing/egrammar.cmx kernel/declarations.cmx \
interp/coqlib.cmx toplevel/cerrors.cmx contrib/cc/ccproof.cmx \
contrib/cc/ccalgo.cmx
+contrib/correctness/pcicenv.cmo: kernel/univ.cmi kernel/term.cmi \
+ kernel/sign.cmi kernel/names.cmi library/global.cmi \
+ contrib/correctness/pcicenv.cmi
+contrib/correctness/pcicenv.cmx: kernel/univ.cmx kernel/term.cmx \
+ kernel/sign.cmx kernel/names.cmx library/global.cmx \
+ contrib/correctness/pcicenv.cmi
contrib/correctness/pcic.cmo: toplevel/vernacexpr.cmo lib/util.cmi \
kernel/typeops.cmi interp/topconstr.cmi pretyping/termops.cmi \
kernel/term.cmi kernel/sign.cmi toplevel/record.cmi pretyping/rawterm.cmi \
@@ -2536,12 +2543,6 @@ contrib/correctness/pcic.cmx: toplevel/vernacexpr.cmx lib/util.cmx \
library/libnames.cmx kernel/indtypes.cmx library/global.cmx \
kernel/entries.cmx pretyping/detyping.cmx library/declare.cmx \
kernel/declarations.cmx contrib/correctness/pcic.cmi
-contrib/correctness/pcicenv.cmo: kernel/univ.cmi kernel/term.cmi \
- kernel/sign.cmi kernel/names.cmi library/global.cmi \
- contrib/correctness/pcicenv.cmi
-contrib/correctness/pcicenv.cmx: kernel/univ.cmx kernel/term.cmx \
- kernel/sign.cmx kernel/names.cmx library/global.cmx \
- contrib/correctness/pcicenv.cmi
contrib/correctness/pdb.cmo: pretyping/termops.cmi kernel/term.cmi \
library/nametab.cmi kernel/names.cmi library/global.cmi \
interp/constrintern.cmi contrib/correctness/pdb.cmi
@@ -2669,17 +2670,21 @@ contrib/dp/dp.cmo: lib/util.cmi pretyping/typing.cmi pretyping/termops.cmi \
proofs/tacmach.cmi library/summary.cmi lib/pp.cmi library/nametab.cmi \
kernel/names.cmi library/nameops.cmi library/libnames.cmi \
tactics/hipattern.cmi library/global.cmi contrib/dp/fol.cmi \
- pretyping/evd.cmi kernel/environ.cmi contrib/dp/dp_simplify.cmi \
- kernel/declarations.cmi interp/coqlib.cmi contrib/dp/dp.cmi
+ pretyping/evd.cmi kernel/environ.cmi contrib/dp/dp_zenon.cmi \
+ contrib/dp/dp_simplify.cmi kernel/declarations.cmi interp/coqlib.cmi \
+ contrib/dp/dp.cmi
contrib/dp/dp.cmx: lib/util.cmx pretyping/typing.cmx pretyping/termops.cmx \
kernel/term.cmx tactics/tactics.cmx tactics/tacticals.cmx \
proofs/tacmach.cmx library/summary.cmx lib/pp.cmx library/nametab.cmx \
kernel/names.cmx library/nameops.cmx library/libnames.cmx \
tactics/hipattern.cmx library/global.cmx contrib/dp/fol.cmi \
- pretyping/evd.cmx kernel/environ.cmx contrib/dp/dp_simplify.cmx \
- kernel/declarations.cmx interp/coqlib.cmx contrib/dp/dp.cmi
+ pretyping/evd.cmx kernel/environ.cmx contrib/dp/dp_zenon.cmx \
+ contrib/dp/dp_simplify.cmx kernel/declarations.cmx interp/coqlib.cmx \
+ contrib/dp/dp.cmi
contrib/dp/dp_simplify.cmo: contrib/dp/fol.cmi contrib/dp/dp_simplify.cmi
contrib/dp/dp_simplify.cmx: contrib/dp/fol.cmi contrib/dp/dp_simplify.cmi
+contrib/dp/dp_zenon.cmo: contrib/dp/fol.cmi contrib/dp/dp_zenon.cmi
+contrib/dp/dp_zenon.cmx: contrib/dp/fol.cmi contrib/dp/dp_zenon.cmi
contrib/dp/g_dp.cmo: toplevel/vernacinterp.cmi lib/util.cmi \
tactics/tactics.cmi tactics/tacinterp.cmi proofs/tacexpr.cmo \
proofs/refiner.cmi parsing/pptactic.cmi lib/pp.cmi parsing/pcoq.cmi \
@@ -3156,6 +3161,14 @@ contrib/interface/pbp.cmx: lib/util.cmx pretyping/typing.cmx \
proofs/logic.cmx library/libnames.cmx tactics/hipattern.cmx \
library/global.cmx interp/genarg.cmx pretyping/evd.cmx kernel/environ.cmx \
interp/coqlib.cmx contrib/interface/pbp.cmi
+contrib/interface/showproof_ct.cmo: contrib/interface/xlate.cmi \
+ contrib/interface/vtp.cmi contrib/interface/translate.cmi \
+ parsing/printer.cmi lib/pp.cmi toplevel/metasyntax.cmi library/global.cmi \
+ parsing/esyntax.cmi contrib/interface/ascent.cmi
+contrib/interface/showproof_ct.cmx: contrib/interface/xlate.cmx \
+ contrib/interface/vtp.cmx contrib/interface/translate.cmx \
+ parsing/printer.cmx lib/pp.cmx toplevel/metasyntax.cmx library/global.cmx \
+ parsing/esyntax.cmx contrib/interface/ascent.cmi
contrib/interface/showproof.cmo: toplevel/vernacinterp.cmi lib/util.cmi \
pretyping/typing.cmi contrib/interface/translate.cmi \
pretyping/termops.cmi parsing/termast.cmi kernel/term.cmi \
@@ -3180,14 +3193,6 @@ contrib/interface/showproof.cmx: toplevel/vernacinterp.cmx lib/util.cmx \
pretyping/evd.cmx kernel/environ.cmx kernel/declarations.cmx \
parsing/coqast.cmx interp/constrintern.cmx pretyping/clenv.cmx \
contrib/interface/showproof.cmi
-contrib/interface/showproof_ct.cmo: contrib/interface/xlate.cmi \
- contrib/interface/vtp.cmi contrib/interface/translate.cmi \
- parsing/printer.cmi lib/pp.cmi toplevel/metasyntax.cmi library/global.cmi \
- parsing/esyntax.cmi contrib/interface/ascent.cmi
-contrib/interface/showproof_ct.cmx: contrib/interface/xlate.cmx \
- contrib/interface/vtp.cmx contrib/interface/translate.cmx \
- parsing/printer.cmx lib/pp.cmx toplevel/metasyntax.cmx library/global.cmx \
- parsing/esyntax.cmx contrib/interface/ascent.cmi
contrib/interface/translate.cmo: contrib/interface/xlate.cmi \
contrib/interface/vtp.cmi toplevel/vernacinterp.cmi lib/util.cmi \
parsing/termast.cmi kernel/term.cmi proofs/tacmach.cmi kernel/sign.cmi \
@@ -3368,18 +3373,12 @@ contrib/romega/refl_omega.cmx: lib/util.cmx kernel/term.cmx \
parsing/printer.cmx lib/pp.cmx lib/options.cmx contrib/omega/omega.cmx \
kernel/names.cmx proofs/logic.cmx interp/coqlib.cmx \
contrib/romega/const_omega.cmx lib/bigint.cmx
-contrib/xml/acic.cmo: kernel/term.cmi kernel/names.cmi
-contrib/xml/acic.cmx: kernel/term.cmx kernel/names.cmx
contrib/xml/acic2Xml.cmo: contrib/xml/xml.cmi lib/util.cmi kernel/term.cmi \
kernel/names.cmi contrib/xml/cic2acic.cmo contrib/xml/acic.cmo
contrib/xml/acic2Xml.cmx: contrib/xml/xml.cmx lib/util.cmx kernel/term.cmx \
kernel/names.cmx contrib/xml/cic2acic.cmx contrib/xml/acic.cmx
-contrib/xml/cic2Xml.cmo: contrib/xml/xml.cmi contrib/xml/unshare.cmi \
- tactics/tacinterp.cmi contrib/xml/cic2acic.cmo contrib/xml/acic2Xml.cmo \
- contrib/xml/acic.cmo
-contrib/xml/cic2Xml.cmx: contrib/xml/xml.cmx contrib/xml/unshare.cmx \
- tactics/tacinterp.cmx contrib/xml/cic2acic.cmx contrib/xml/acic2Xml.cmx \
- contrib/xml/acic.cmx
+contrib/xml/acic.cmo: kernel/term.cmi kernel/names.cmi
+contrib/xml/acic.cmx: kernel/term.cmx kernel/names.cmx
contrib/xml/cic2acic.cmo: lib/util.cmi contrib/xml/unshare.cmi \
kernel/univ.cmi pretyping/termops.cmi kernel/term.cmi \
pretyping/reductionops.cmi parsing/printer.cmi lib/pp.cmi \
@@ -3398,6 +3397,12 @@ contrib/xml/cic2acic.cmx: lib/util.cmx contrib/xml/unshare.cmx \
kernel/environ.cmx contrib/xml/doubleTypeInference.cmx \
library/dischargedhypsmap.cmx library/declare.cmx kernel/declarations.cmx \
contrib/xml/acic.cmx
+contrib/xml/cic2Xml.cmo: contrib/xml/xml.cmi contrib/xml/unshare.cmi \
+ tactics/tacinterp.cmi contrib/xml/cic2acic.cmo contrib/xml/acic2Xml.cmo \
+ contrib/xml/acic.cmo
+contrib/xml/cic2Xml.cmx: contrib/xml/xml.cmx contrib/xml/unshare.cmx \
+ tactics/tacinterp.cmx contrib/xml/cic2acic.cmx contrib/xml/acic2Xml.cmx \
+ contrib/xml/acic.cmx
contrib/xml/doubleTypeInference.cmo: lib/util.cmi contrib/xml/unshare.cmi \
kernel/typeops.cmi pretyping/termops.cmi kernel/term.cmi \
pretyping/retyping.cmi pretyping/reductionops.cmi kernel/reduction.cmi \
@@ -3440,8 +3445,6 @@ contrib/xml/proofTree2Xml.cmx: contrib/xml/xml.cmx lib/util.cmx \
contrib/xml/cic2acic.cmx contrib/xml/acic2Xml.cmx contrib/xml/acic.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/xml.cmi toplevel/vernac.cmi \
lib/util.cmi contrib/xml/unshare.cmi kernel/term.cmi proofs/tacmach.cmi \
kernel/sign.cmi pretyping/recordops.cmi proofs/proof_trees.cmi \
@@ -3472,10 +3475,8 @@ contrib/xml/xmlentries.cmx: contrib/xml/xmlcommand.cmx \
toplevel/vernacinterp.cmx lib/util.cmx lib/pp.cmx parsing/pcoq.cmx \
interp/genarg.cmx parsing/extend.cmx parsing/egrammar.cmx \
toplevel/cerrors.cmx
-ide/utils/configwin.cmo: ide/utils/configwin_types.cmo \
- ide/utils/configwin_ihm.cmo ide/utils/configwin.cmi
-ide/utils/configwin.cmx: ide/utils/configwin_types.cmx \
- ide/utils/configwin_ihm.cmx ide/utils/configwin.cmi
+contrib/xml/xml.cmo: contrib/xml/xml.cmi
+contrib/xml/xml.cmx: contrib/xml/xml.cmi
ide/utils/configwin_html_config.cmo: ide/utils/uoptions.cmi \
ide/utils/configwin_types.cmo ide/utils/configwin_messages.cmo \
ide/utils/configwin_ihm.cmo
@@ -3486,6 +3487,10 @@ ide/utils/configwin_ihm.cmo: ide/utils/uoptions.cmi ide/utils/okey.cmi \
ide/utils/configwin_types.cmo ide/utils/configwin_messages.cmo
ide/utils/configwin_ihm.cmx: ide/utils/uoptions.cmx ide/utils/okey.cmx \
ide/utils/configwin_types.cmx ide/utils/configwin_messages.cmx
+ide/utils/configwin.cmo: ide/utils/configwin_types.cmo \
+ ide/utils/configwin_ihm.cmo ide/utils/configwin.cmi
+ide/utils/configwin.cmx: ide/utils/configwin_types.cmx \
+ ide/utils/configwin_ihm.cmx ide/utils/configwin.cmi
ide/utils/configwin_types.cmo: ide/utils/uoptions.cmi \
ide/utils/configwin_keys.cmo
ide/utils/configwin_types.cmx: ide/utils/uoptions.cmx \
@@ -3617,72 +3622,58 @@ tools/coq_makefile.cmx:
tools/coq-tex.cmo:
tools/coq-tex.cmx:
coq_fix_code.o: kernel/byterun/coq_fix_code.c \
- /home/logical/local/lib/ocaml/caml/config.h \
- /home/logical/local/lib/ocaml/caml/compatibility.h \
- /home/logical/local/lib/ocaml/caml/misc.h \
- /home/logical/local/lib/ocaml/caml/mlvalues.h \
- /home/logical/local/lib/ocaml/caml/fail.h \
- /home/logical/local/lib/ocaml/caml/memory.h \
+ /usr/lib/ocaml/3.08.3/caml/config.h \
+ /usr/lib/ocaml/3.08.3/caml/compatibility.h \
+ /usr/lib/ocaml/3.08.3/caml/misc.h /usr/lib/ocaml/3.08.3/caml/mlvalues.h \
+ /usr/lib/ocaml/3.08.3/caml/fail.h /usr/lib/ocaml/3.08.3/caml/memory.h \
kernel/byterun/coq_instruct.h kernel/byterun/coq_fix_code.h
coq_interp.o: kernel/byterun/coq_interp.c kernel/byterun/coq_gc.h \
- /home/logical/local/lib/ocaml/caml/mlvalues.h \
- /home/logical/local/lib/ocaml/caml/compatibility.h \
- /home/logical/local/lib/ocaml/caml/config.h \
- /home/logical/local/lib/ocaml/caml/misc.h \
- /home/logical/local/lib/ocaml/caml/alloc.h \
- kernel/byterun/coq_instruct.h kernel/byterun/coq_fix_code.h \
- kernel/byterun/coq_memory.h /home/logical/local/lib/ocaml/caml/fail.h \
- /home/logical/local/lib/ocaml/caml/memory.h kernel/byterun/coq_values.h \
- kernel/byterun/coq_jumptbl.h
+ /usr/lib/ocaml/3.08.3/caml/mlvalues.h \
+ /usr/lib/ocaml/3.08.3/caml/compatibility.h \
+ /usr/lib/ocaml/3.08.3/caml/config.h /usr/lib/ocaml/3.08.3/caml/misc.h \
+ /usr/lib/ocaml/3.08.3/caml/alloc.h kernel/byterun/coq_instruct.h \
+ kernel/byterun/coq_fix_code.h kernel/byterun/coq_memory.h \
+ /usr/lib/ocaml/3.08.3/caml/fail.h /usr/lib/ocaml/3.08.3/caml/memory.h \
+ kernel/byterun/coq_values.h kernel/byterun/coq_jumptbl.h
coq_memory.o: kernel/byterun/coq_memory.c kernel/byterun/coq_gc.h \
- /home/logical/local/lib/ocaml/caml/mlvalues.h \
- /home/logical/local/lib/ocaml/caml/compatibility.h \
- /home/logical/local/lib/ocaml/caml/config.h \
- /home/logical/local/lib/ocaml/caml/misc.h \
- /home/logical/local/lib/ocaml/caml/alloc.h \
- kernel/byterun/coq_instruct.h kernel/byterun/coq_fix_code.h \
- kernel/byterun/coq_memory.h /home/logical/local/lib/ocaml/caml/fail.h \
- /home/logical/local/lib/ocaml/caml/memory.h
+ /usr/lib/ocaml/3.08.3/caml/mlvalues.h \
+ /usr/lib/ocaml/3.08.3/caml/compatibility.h \
+ /usr/lib/ocaml/3.08.3/caml/config.h /usr/lib/ocaml/3.08.3/caml/misc.h \
+ /usr/lib/ocaml/3.08.3/caml/alloc.h kernel/byterun/coq_instruct.h \
+ kernel/byterun/coq_fix_code.h kernel/byterun/coq_memory.h \
+ /usr/lib/ocaml/3.08.3/caml/fail.h /usr/lib/ocaml/3.08.3/caml/memory.h
coq_values.o: kernel/byterun/coq_values.c kernel/byterun/coq_fix_code.h \
- /home/logical/local/lib/ocaml/caml/mlvalues.h \
- /home/logical/local/lib/ocaml/caml/compatibility.h \
- /home/logical/local/lib/ocaml/caml/config.h \
- /home/logical/local/lib/ocaml/caml/misc.h kernel/byterun/coq_instruct.h \
- kernel/byterun/coq_memory.h /home/logical/local/lib/ocaml/caml/fail.h \
- /home/logical/local/lib/ocaml/caml/memory.h kernel/byterun/coq_values.h \
- /home/logical/local/lib/ocaml/caml/alloc.h
+ /usr/lib/ocaml/3.08.3/caml/mlvalues.h \
+ /usr/lib/ocaml/3.08.3/caml/compatibility.h \
+ /usr/lib/ocaml/3.08.3/caml/config.h /usr/lib/ocaml/3.08.3/caml/misc.h \
+ kernel/byterun/coq_instruct.h kernel/byterun/coq_memory.h \
+ /usr/lib/ocaml/3.08.3/caml/fail.h /usr/lib/ocaml/3.08.3/caml/memory.h \
+ kernel/byterun/coq_values.h /usr/lib/ocaml/3.08.3/caml/alloc.h
coq_fix_code.d.o: kernel/byterun/coq_fix_code.c \
- /home/logical/local/lib/ocaml/caml/config.h \
- /home/logical/local/lib/ocaml/caml/compatibility.h \
- /home/logical/local/lib/ocaml/caml/misc.h \
- /home/logical/local/lib/ocaml/caml/mlvalues.h \
- /home/logical/local/lib/ocaml/caml/fail.h \
- /home/logical/local/lib/ocaml/caml/memory.h \
+ /usr/lib/ocaml/3.08.3/caml/config.h \
+ /usr/lib/ocaml/3.08.3/caml/compatibility.h \
+ /usr/lib/ocaml/3.08.3/caml/misc.h /usr/lib/ocaml/3.08.3/caml/mlvalues.h \
+ /usr/lib/ocaml/3.08.3/caml/fail.h /usr/lib/ocaml/3.08.3/caml/memory.h \
kernel/byterun/coq_instruct.h kernel/byterun/coq_fix_code.h
coq_interp.d.o: kernel/byterun/coq_interp.c kernel/byterun/coq_gc.h \
- /home/logical/local/lib/ocaml/caml/mlvalues.h \
- /home/logical/local/lib/ocaml/caml/compatibility.h \
- /home/logical/local/lib/ocaml/caml/config.h \
- /home/logical/local/lib/ocaml/caml/misc.h \
- /home/logical/local/lib/ocaml/caml/alloc.h \
- kernel/byterun/coq_instruct.h kernel/byterun/coq_fix_code.h \
- kernel/byterun/coq_memory.h /home/logical/local/lib/ocaml/caml/fail.h \
- /home/logical/local/lib/ocaml/caml/memory.h kernel/byterun/coq_values.h \
- kernel/byterun/coq_jumptbl.h
+ /usr/lib/ocaml/3.08.3/caml/mlvalues.h \
+ /usr/lib/ocaml/3.08.3/caml/compatibility.h \
+ /usr/lib/ocaml/3.08.3/caml/config.h /usr/lib/ocaml/3.08.3/caml/misc.h \
+ /usr/lib/ocaml/3.08.3/caml/alloc.h kernel/byterun/coq_instruct.h \
+ kernel/byterun/coq_fix_code.h kernel/byterun/coq_memory.h \
+ /usr/lib/ocaml/3.08.3/caml/fail.h /usr/lib/ocaml/3.08.3/caml/memory.h \
+ kernel/byterun/coq_values.h kernel/byterun/coq_jumptbl.h
coq_memory.d.o: kernel/byterun/coq_memory.c kernel/byterun/coq_gc.h \
- /home/logical/local/lib/ocaml/caml/mlvalues.h \
- /home/logical/local/lib/ocaml/caml/compatibility.h \
- /home/logical/local/lib/ocaml/caml/config.h \
- /home/logical/local/lib/ocaml/caml/misc.h \
- /home/logical/local/lib/ocaml/caml/alloc.h \
- kernel/byterun/coq_instruct.h kernel/byterun/coq_fix_code.h \
- kernel/byterun/coq_memory.h /home/logical/local/lib/ocaml/caml/fail.h \
- /home/logical/local/lib/ocaml/caml/memory.h
+ /usr/lib/ocaml/3.08.3/caml/mlvalues.h \
+ /usr/lib/ocaml/3.08.3/caml/compatibility.h \
+ /usr/lib/ocaml/3.08.3/caml/config.h /usr/lib/ocaml/3.08.3/caml/misc.h \
+ /usr/lib/ocaml/3.08.3/caml/alloc.h kernel/byterun/coq_instruct.h \
+ kernel/byterun/coq_fix_code.h kernel/byterun/coq_memory.h \
+ /usr/lib/ocaml/3.08.3/caml/fail.h /usr/lib/ocaml/3.08.3/caml/memory.h
coq_values.d.o: kernel/byterun/coq_values.c kernel/byterun/coq_fix_code.h \
- /home/logical/local/lib/ocaml/caml/mlvalues.h \
- /home/logical/local/lib/ocaml/caml/compatibility.h \
- /home/logical/local/lib/ocaml/caml/config.h \
- /home/logical/local/lib/ocaml/caml/misc.h kernel/byterun/coq_instruct.h \
- kernel/byterun/coq_memory.h /home/logical/local/lib/ocaml/caml/fail.h \
- /home/logical/local/lib/ocaml/caml/memory.h kernel/byterun/coq_values.h \
- /home/logical/local/lib/ocaml/caml/alloc.h
+ /usr/lib/ocaml/3.08.3/caml/mlvalues.h \
+ /usr/lib/ocaml/3.08.3/caml/compatibility.h \
+ /usr/lib/ocaml/3.08.3/caml/config.h /usr/lib/ocaml/3.08.3/caml/misc.h \
+ kernel/byterun/coq_instruct.h kernel/byterun/coq_memory.h \
+ /usr/lib/ocaml/3.08.3/caml/fail.h /usr/lib/ocaml/3.08.3/caml/memory.h \
+ kernel/byterun/coq_values.h /usr/lib/ocaml/3.08.3/caml/alloc.h
diff --git a/Makefile b/Makefile
index 1deb32175..593a2e5ef 100644
--- a/Makefile
+++ b/Makefile
@@ -246,7 +246,8 @@ RINGCMO=\
contrib/ring/ring.cmo contrib/ring/g_ring.cmo
DPCMO=\
- contrib/dp/dp_simplify.cmo contrib/dp/dp.cmo contrib/dp/g_dp.cmo
+ contrib/dp/dp_simplify.cmo contrib/dp/dp_zenon.cmo \
+ contrib/dp/dp.cmo contrib/dp/g_dp.cmo
FIELDCMO=\
contrib/field/field.cmo
diff --git a/contrib/dp/dp.ml b/contrib/dp/dp.ml
index 9dc538c78..975c1e59c 100644
--- a/contrib/dp/dp.ml
+++ b/contrib/dp/dp.ml
@@ -70,7 +70,8 @@ let rename_global r =
loop (Nametab.id_of_global r)
let foralls =
- List.fold_right (fun (x,t) p -> Forall (rename_global (VarRef x), t, p))
+ List.fold_right
+ (fun (x,t) p -> Forall (rename_global (VarRef x), t, p))
let fresh_var = function
| Anonymous -> rename_global (VarRef (id_of_string "x"))
@@ -146,7 +147,35 @@ let lookup_local r = match Hashtbl.find locals r with
| Gnot_fo -> raise NotFO
| Gfo d -> d
-(* assumption: t:Set *)
+let iter_all_constructors i f =
+ let _, oib = Global.lookup_inductive i in
+ Array.iteri
+ (fun j tj -> f (mkConstruct (i, j+1)))
+ oib.mind_nf_lc
+
+(* injection c [t1,...,tn] adds the injection axiom
+ forall x1:t1,...,xn:tn,y1:t1,...,yn:tn.
+ c(x1,...,xn)=c(y1,...,yn) -> x1=y1 /\ ... /\ xn=yn *)
+
+let injection c l =
+ let i = ref 0 in
+ let var s = incr i; id_of_string (s ^ string_of_int !i) in
+ let xl = List.map (fun t -> rename_global (VarRef (var "x")), t) l in
+ i := 0;
+ let yl = List.map (fun t -> rename_global (VarRef (var "y")), t) l in
+ let f =
+ List.fold_right2
+ (fun (x,_) (y,_) p -> And (Fatom (Eq (App (x,[]),App (y,[]))), p))
+ xl yl True
+ in
+ let vars = List.map (fun (x,_) -> App(x,[])) in
+ let f = Imp (Fatom (Eq (App (c, vars xl), App (c, vars yl))), f) in
+ let foralls = List.fold_right (fun (x,t) p -> Forall (x, t, p)) in
+ let f = foralls xl (foralls yl f) in
+ let ax = Assert ("injection_" ^ c, f) in
+ globals_stack := ax :: !globals_stack
+
+(* assumption: t:Set or Type *)
let rec tr_type env ty =
if ty = Lazy.force coq_Z then [], "INT"
else if is_Prop ty then [], "BOOLEAN"
@@ -159,34 +188,35 @@ let rec tr_type env ty =
end
| _ -> assert false
end
- else let r = global_of_constr ty in
- try
- begin match lookup_global r with
- | DeclType id -> [], id
- | _ -> assert false (* ty is a type for sure ? *)
- end
- with Not_found ->
- let id = rename_global r in
- let d = DeclType id in
- add_global r (Gfo d);
- globals_stack := d :: !globals_stack;
- [], id
- (*begin match r with
- | IndRef i ->
- let _, oib = Global.lookup_inductive i in
- let construct_types = oib.mind_nf_lc in
- let rec axiomatize_all_constr l =
- begin match l with
- | [] -> ()
- | r::l' ->
- axiomatize_body env r (rename_global r)
- (tr_global_type r);
- axiomatize_all_constr l'
- end in
- axiomatize_all_constr (list_of_array construct_types);
- [], id
- | _ -> assert false (* TODO constant type definition ? *)
- end*)
+ else
+ try let r = global_of_constr ty in
+ (try
+ begin match lookup_global r with
+ | DeclType id -> [], id
+ | _ -> assert false (* assumption: t:Set *)
+ end
+ with Not_found ->
+ begin match r with
+ | IndRef i ->
+ let id = rename_global r in
+ let d = DeclType id in
+ add_global r (Gfo d);
+ globals_stack := d :: !globals_stack;
+ iter_all_constructors i
+ (fun c ->
+ let rc = global_of_constr c in
+ try
+ begin match tr_global env rc with
+ | DeclVar (idc, [], _) -> ()
+ | DeclVar (idc, al, _) -> injection idc al
+ | _ -> assert false
+ end
+ with NotFO ->
+ ());
+ [], id
+ | _ -> raise NotFO (* constant type definition *)
+ end)
+ with Not_found -> raise NotFO
and tr_global_type env id ty =
if is_Prop ty then
@@ -198,8 +228,8 @@ and tr_global_type env id ty =
if is_Prop s then
Assert (id, tr_formula [] env ty)
else
- let l,t = tr_type env ty in
- if is_Set s then DeclVar (id, l, t)
+ let l,t = tr_type env ty in
+ if is_Set s then DeclVar(id, l, t)
else if t = "BOOLEAN" then
DeclPred(id, l)
else raise NotFO
@@ -215,8 +245,11 @@ and tr_global env r = match r with
let ty = Global.type_of_global r in
let id = rename_global r in
let d = tr_global_type env id ty in
- add_global r (Gfo d);
- globals_stack := d :: !globals_stack;
+ (* r can be already declared if it is a constructor *)
+ if not (mem_global r) then begin
+ add_global r (Gfo d);
+ globals_stack := d :: !globals_stack
+ end;
begin try axiomatize_body env r id d with NotFO -> () end;
d
with NotFO ->
@@ -224,7 +257,7 @@ and tr_global env r = match r with
raise NotFO
and axiomatize_body env r id d = match r with
- | VarRef ident ->
+ | VarRef _ ->
assert false
| ConstRef c ->
begin match (Global.lookup_constant c).const_body with
@@ -247,7 +280,8 @@ and axiomatize_body env r id d = match r with
let t = substl (List.map mkVar vars) t in
let t,vars,env = eta_expanse t vars env (n-k) in
let vars = List.rev vars in
- let fol_var x = Fol.App (rename_global (VarRef x), []) in
+ let fol_var x =
+ Fol.App (rename_global (VarRef x), []) in
let fol_vars = List.map fol_var vars in
let vars = List.combine vars l in
let bv = List.map fst vars in
@@ -270,6 +304,22 @@ and axiomatize_body env r id d = match r with
| None ->
() (* Coq axiom *)
end
+ | IndRef i ->
+ begin match d with
+ | DeclPred _ ->
+ iter_all_constructors i
+ (fun c ->
+ let rc = reference_of_constr c in
+ try
+ begin match tr_global env rc with
+ | Assert _ -> ()
+ | _ -> assert false
+ end
+ with NotFO ->
+ ())
+ | DeclType _ -> raise NotFO
+ | _ -> assert false
+ end
| _ -> ()
@@ -384,12 +434,13 @@ let tr_goal gl =
hyps, c
-type prover = Simplify | CVCLite | Harvey
+type prover = Simplify | CVCLite | Harvey | Zenon
let call_prover prover q = match prover with
| Simplify -> Dp_simplify.call q
| CVCLite -> error "CVC Lite not yet interfaced"
| Harvey -> error "haRVey not yet interfaced"
+ | Zenon -> Dp_zenon.call q
let dp prover gl =
let concl_type = pf_type_of gl (pf_concl gl) in
@@ -409,6 +460,7 @@ let dp prover gl =
let simplify = tclTHEN intros (dp Simplify)
let cvc_lite = dp CVCLite
let harvey = dp Harvey
+let zenon = tclTHEN intros (dp Zenon)
let dp_hint l =
let env = Global.env () in
diff --git a/contrib/dp/dp.mli b/contrib/dp/dp.mli
index c5517cac8..3dad469c6 100644
--- a/contrib/dp/dp.mli
+++ b/contrib/dp/dp.mli
@@ -5,6 +5,7 @@ open Proof_type
val simplify : tactic
val cvc_lite : tactic
val harvey : tactic
+val zenon : tactic
val dp_hint : reference list -> unit
diff --git a/contrib/dp/dp_simplify.ml b/contrib/dp/dp_simplify.ml
index c330b9617..0a7bd0701 100644
--- a/contrib/dp/dp_simplify.ml
+++ b/contrib/dp/dp_simplify.ml
@@ -66,12 +66,20 @@ let rec print_predicate fmt p =
| Exists _ ->
assert false (*TODO*)
+let rec string_of_type_list = function
+ | [] -> ""
+ | e :: l' -> e ^ " -> " ^ (string_of_type_list l')
+
let print_query fmt (decls,concl) =
let print_decl = function
- | DeclVar (id, _, _) ->
- fprintf fmt "@[;; %s: <var>@]@\n" id
- | DeclPred (id, _) ->
- fprintf fmt "@[;; %s: <predicate>@]@\n" id
+ | DeclVar (id, [], t) ->
+ fprintf fmt "@[;; %s: %s@]@\n" id t
+ | DeclVar (id, l, t) ->
+ fprintf fmt "@[;; %s: %s%s@]@\n"
+ id (string_of_type_list l) t
+ | DeclPred (id, l) ->
+ fprintf fmt "@[;; %s: %sBOOLEAN@]@\n"
+ id (string_of_type_list l)
| DeclType id ->
fprintf fmt "@[;; %s: TYPE@]@\n" id
| Assert (id, f) ->
diff --git a/contrib/dp/dp_zenon.ml b/contrib/dp/dp_zenon.ml
new file mode 100644
index 000000000..ef9499bf9
--- /dev/null
+++ b/contrib/dp/dp_zenon.ml
@@ -0,0 +1,103 @@
+
+open Format
+open Fol
+
+let rec print_list sep print fmt = function
+ | [] -> ()
+ | [x] -> print fmt x
+ | x :: r -> print fmt x; sep fmt (); print_list sep print fmt r
+
+let space fmt () = fprintf fmt "@ "
+
+let rec print_term fmt = function
+ | Cst n ->
+ fprintf fmt "%d" n
+ | Plus (a, b) ->
+ fprintf fmt "@[(+@ %a@ %a)@]" print_term a print_term b
+ | Moins (a, b) ->
+ fprintf fmt "@[(-@ %a@ %a)@]" print_term a print_term b
+ | Mult (a, b) ->
+ fprintf fmt "@[(*@ %a@ %a)@]" (**) print_term a print_term b
+ | Div (a, b) ->
+ fprintf fmt "@[(/@ %a@ %a)@]" print_term a print_term b
+ | App (id, []) ->
+ fprintf fmt "%s" id
+ | App (id, tl) ->
+ fprintf fmt "@[(%s@ %a)@]" id print_terms tl
+
+and print_terms fmt tl =
+ print_list space print_term fmt tl
+
+let rec print_predicate fmt p =
+ let pp = print_predicate in
+ match p with
+ | True ->
+ fprintf fmt "True"
+ | False ->
+ fprintf fmt "False"
+ | Fatom (Eq (a, b)) ->
+ fprintf fmt "@[(= %a@ %a)@]" print_term a print_term b
+ | Fatom (Le (a, b)) ->
+ fprintf fmt "@[(<= %a@ %a)@]" print_term a print_term b
+ | Fatom (Lt (a, b))->
+ fprintf fmt "@[(< %a@ %a)@]" print_term a print_term b
+ | Fatom (Ge (a, b)) ->
+ fprintf fmt "@[(>= %a@ %a)@]" print_term a print_term b
+ | Fatom (Gt (a, b)) ->
+ fprintf fmt "@[(> %a@ %a)@]" print_term a print_term b
+ | Fatom (Pred (id, tl)) ->
+ fprintf fmt "@[(%s@ %a)@]" id print_terms tl
+ | Imp (a, b) ->
+ fprintf fmt "@[(=>@ %a@ %a)@]" pp a pp b
+ | And (a, b) ->
+ fprintf fmt "@[(/\\@ %a@ %a)@]" pp a pp b
+ | Or (a, b) ->
+ fprintf fmt "@[(\\/@ %a@ %a)@]" pp a pp b
+ | Not a ->
+ fprintf fmt "@[(-.@ %a)@]" pp a
+ | Forall (id, t, p) ->
+ fprintf fmt "@[(A. ((%s \"%s\")@ %a))@]" id t pp p
+ | Exists (id, t, p) ->
+ fprintf fmt "@[(E. ((%s \"%s\")@ %a))@]" id t pp p
+
+let rec string_of_type_list = function
+ | [] -> ""
+ | e :: l' -> e ^ " -> " ^ (string_of_type_list l')
+
+let print_query fmt (decls,concl) =
+ let print_decl = function
+ | DeclVar (id, [], t) ->
+ fprintf fmt "@[;; %s: %s@]@\n" id t
+ | DeclVar (id, l, t) ->
+ fprintf fmt "@[;; %s: %s%s@]@\n"
+ id (string_of_type_list l) t
+ | DeclPred (id, l) ->
+ fprintf fmt "@[;; %s: %sBOOLEAN@]@\n"
+ id (string_of_type_list l)
+ | DeclType id ->
+ fprintf fmt "@[;; %s: TYPE@]@\n" id
+ | Assert (id, f) ->
+ fprintf fmt "@[\"%s\" %a@]@\n" id print_predicate f
+ in
+ List.iter print_decl decls;
+ fprintf fmt "$goal %a@." print_predicate concl
+
+let call q =
+ let f = Filename.temp_file "coq_dp" ".sx" in
+ let c = open_out f in
+ let fmt = formatter_of_out_channel c in
+ fprintf fmt "@[%a@]@." print_query q;
+ close_out c;
+ ignore (Sys.command (sprintf "cat %s" f));
+ let cmd =
+ sprintf "timeout 10 zenon %s > out 2>&1 && grep -q PROOF-FOUND out" f
+ in
+ prerr_endline cmd; flush stderr;
+ let out = Sys.command cmd in
+ if out = 0 then Valid
+ else if out = 1 then Invalid
+ else if out = 137 then Timeout
+ else Util.anomaly "malformed Zenon input file"
+ (* TODO: effacer le fichier f et le fichier out *)
+
+
diff --git a/contrib/dp/dp_zenon.mli b/contrib/dp/dp_zenon.mli
new file mode 100644
index 000000000..03b6d3475
--- /dev/null
+++ b/contrib/dp/dp_zenon.mli
@@ -0,0 +1,4 @@
+
+open Fol
+
+val call : query -> prover_answer
diff --git a/contrib/dp/g_dp.ml4 b/contrib/dp/g_dp.ml4
index e6667a95b..074df6722 100644
--- a/contrib/dp/g_dp.ml4
+++ b/contrib/dp/g_dp.ml4
@@ -24,6 +24,10 @@ TACTIC EXTEND Harvey
[ "harvey" ] -> [ harvey ]
END
+TACTIC EXTEND Zenon
+ [ "zenon" ] -> [ zenon ]
+END
+
(* should be part of basic tactics syntax *)
TACTIC EXTEND admit
[ "admit" ] -> [ Tactics.admit_as_an_axiom ]