├── .dir-locals.el ├── .gitignore ├── .mailmap ├── .merlin ├── CHANGES ├── COMPATIBILITY ├── COPYRIGHT ├── CREDITS ├── INSTALL ├── INSTALL.doc ├── INSTALL.ide ├── INSTALL.macosx ├── LICENSE ├── Makefile ├── Makefile.build ├── Makefile.common ├── Makefile.doc ├── README.doc ├── README.md ├── README.win ├── TODO ├── _tags ├── build ├── checker ├── .depend ├── Makefile ├── check.ml ├── check.mllib ├── check_stat.ml ├── check_stat.mli ├── checker.ml ├── cic.mli ├── closure.ml ├── closure.mli ├── declarations.ml ├── declarations.mli ├── environ.ml ├── environ.mli ├── include ├── indtypes.ml ├── indtypes.mli ├── inductive.ml ├── inductive.mli ├── main.ml ├── mod_checking.ml ├── mod_checking.mli ├── modops.ml ├── modops.mli ├── print.ml ├── reduction.ml ├── reduction.mli ├── safe_typing.ml ├── safe_typing.mli ├── subtyping.ml ├── subtyping.mli ├── term.ml ├── term.mli ├── type_errors.ml ├── type_errors.mli ├── typeops.ml ├── typeops.mli ├── univ.ml ├── univ.mli ├── validate.ml ├── values.ml └── votour.ml ├── compile.sh ├── config └── coq_config.mli ├── configure ├── configure.ml ├── coq-win32.itarget ├── coq.itarget ├── dev ├── Makefile.oug ├── README ├── TODO ├── base_db ├── base_include ├── db ├── db_printers.ml ├── doc │ ├── about-hints │ ├── build-system.dev.txt │ ├── build-system.txt │ ├── changes.txt │ ├── cic.dtd │ ├── coq-src-description.txt │ ├── debugging.txt │ ├── extensions.txt │ ├── minicoq.tex │ ├── naming-conventions.tex │ ├── newsyntax.tex │ ├── notes-on-conversion │ ├── old_svn_branches.txt │ ├── perf-analysis │ ├── style.txt │ ├── transition-V5.10-V6 │ ├── transition-V6-V7 │ ├── translate.txt │ ├── unification.txt │ ├── universes.txt │ ├── univpoly.txt │ └── versions-history.tex ├── dynlink.ml ├── header ├── include ├── macosify_accel.sh ├── make-installer-win32.sh ├── make-sdk-win32.sh ├── nsis │ ├── FileAssociation.nsh │ └── coq.nsi ├── ocamldebug-coq.run ├── ocamldoc │ ├── docintro │ └── html │ │ └── style.css ├── ocamlopt_shared_os5fix.sh ├── printers.mllib ├── set_raw_db ├── tools │ ├── Makefile.common │ ├── Makefile.devel │ ├── Makefile.dir │ ├── Makefile.subdir │ ├── change-header │ └── objects.el ├── top_printers.ml ├── v8-syntax │ ├── check-grammar │ ├── memo-v8.tex │ └── syntax-v8.tex └── vm_printers.ml ├── doc ├── LICENSE ├── Makefile.rt ├── RecTutorial │ ├── RecTutorial.tex │ ├── RecTutorial.v │ ├── coqartmacros.tex │ ├── manbiblio.bib │ ├── morebib.bib │ └── recmacros.tex ├── common │ ├── macros.tex │ ├── styles │ │ └── html │ │ │ ├── coqremote │ │ │ ├── cover.html │ │ │ ├── footer.html │ │ │ ├── header.html │ │ │ ├── hevea.css │ │ │ └── styles.hva │ │ │ └── simple │ │ │ ├── cover.html │ │ │ ├── footer.html │ │ │ ├── header.html │ │ │ ├── hevea.css │ │ │ ├── style.css │ │ │ └── styles.hva │ └── title.tex ├── faq │ ├── FAQ.tex │ ├── axioms.eps │ ├── axioms.fig │ ├── axioms.png │ ├── fk.bib │ ├── hevea.sty │ └── interval_discr.v ├── refman │ ├── AddRefMan-pre.tex │ ├── AsyncProofs.tex │ ├── CanonicalStructures.tex │ ├── Cases.tex │ ├── Classes.tex │ ├── Coercion.tex │ ├── Extraction.tex │ ├── Micromega.tex │ ├── Misc.tex │ ├── Natural.tex │ ├── Nsatz.tex │ ├── Omega.tex │ ├── Polynom.tex │ ├── Program.tex │ ├── RefMan-add.tex │ ├── RefMan-cic.tex │ ├── RefMan-coi.tex │ ├── RefMan-com.tex │ ├── RefMan-decl.tex │ ├── RefMan-ext.tex │ ├── RefMan-gal.tex │ ├── RefMan-ide.tex │ ├── RefMan-ind.tex │ ├── RefMan-int.tex │ ├── RefMan-lib.tex │ ├── RefMan-ltac.tex │ ├── RefMan-mod.tex │ ├── RefMan-modr.tex │ ├── RefMan-oth.tex │ ├── RefMan-pre.tex │ ├── RefMan-pro.tex │ ├── RefMan-sch.tex │ ├── RefMan-syn.tex │ ├── RefMan-tac.tex │ ├── RefMan-tacex.tex │ ├── RefMan-tus.tex │ ├── RefMan-uti.tex │ ├── Reference-Manual.tex │ ├── Setoid.tex │ ├── Universes.tex │ ├── biblio.bib │ ├── coqdoc.tex │ ├── coqide-queries.eps │ ├── coqide-queries.png │ ├── coqide.eps │ ├── coqide.png │ ├── headers.hva │ ├── headers.sty │ ├── hevea.sty │ ├── index.html │ └── menu.html ├── rt │ ├── RefMan-cover.tex │ └── Tutorial-cover.tex ├── stdlib │ ├── Library.tex │ ├── hidden-files │ ├── index-list.html.template │ └── make-library-index ├── tools │ ├── Translator.tex │ ├── latex_filter │ └── show_latex_messages └── tutorial │ └── Tutorial.tex ├── grammar ├── argextend.ml4 ├── grammar.mllib ├── q_constr.ml4 ├── q_coqast.ml4 ├── q_util.ml4 ├── q_util.mli ├── tacextend.ml4 └── vernacextend.ml4 ├── ide ├── .merlin ├── FAQ ├── MacOS │ ├── Info.plist.template │ ├── coqfile.icns │ ├── coqide.icns │ ├── default_accel_map │ └── relatify_with-respect-to_.sh ├── config_lexer.mll ├── coq-ssreflect.lang ├── coq.ico ├── coq.lang ├── coq.ml ├── coq.mli ├── coq.png ├── coq2.ico ├── coqOps.ml ├── coqOps.mli ├── coq_commands.ml ├── coq_icon.rc ├── coq_lex.mll ├── coq_style.xml ├── coqide.ml ├── coqide.mli ├── coqide_main.ml4 ├── coqide_ui.ml ├── coqidetop.mllib ├── document.ml ├── document.mli ├── fileOps.ml ├── fileOps.mli ├── gtk_parsing.ml ├── ide.mllib ├── ide_slave.ml ├── ide_win32_stubs.c ├── ideutils.ml ├── ideutils.mli ├── interface.mli ├── macos_prehook.ml ├── minilib.ml ├── minilib.mli ├── nanoPG.ml ├── preferences.ml ├── preferences.mli ├── project_file.ml4 ├── sentence.ml ├── sentence.mli ├── session.ml ├── session.mli ├── tags.ml ├── tags.mli ├── utf8_convert.mll ├── utils │ ├── config_file.ml │ ├── config_file.mli │ ├── configwin.ml │ ├── configwin.mli │ ├── configwin_ihm.ml │ ├── configwin_keys.ml │ ├── configwin_messages.ml │ ├── configwin_types.ml │ ├── editable_cells.ml │ ├── okey.ml │ └── okey.mli ├── wg_Command.ml ├── wg_Command.mli ├── wg_Completion.ml ├── wg_Completion.mli ├── wg_Detachable.ml ├── wg_Detachable.mli ├── wg_Find.ml ├── wg_Find.mli ├── wg_MessageView.ml ├── wg_MessageView.mli ├── wg_Notebook.ml ├── wg_Notebook.mli ├── wg_ProofView.ml ├── wg_ProofView.mli ├── wg_ScriptView.ml ├── wg_ScriptView.mli ├── xmlprotocol.ml └── xmlprotocol.mli ├── input.v ├── install.sh ├── interp ├── constrarg.ml ├── constrarg.mli ├── constrexpr_ops.ml ├── constrexpr_ops.mli ├── constrextern.ml ├── constrextern.mli ├── constrintern.ml ├── constrintern.mli ├── coqlib.ml ├── coqlib.mli ├── doc.tex ├── dumpglob.ml ├── dumpglob.mli ├── genintern.ml ├── genintern.mli ├── implicit_quantifiers.ml ├── implicit_quantifiers.mli ├── interp.mllib ├── modintern.ml ├── modintern.mli ├── notation.ml ├── notation.mli ├── notation_ops.ml ├── notation_ops.mli ├── ppextend.ml ├── ppextend.mli ├── reserve.ml ├── reserve.mli ├── smartlocate.ml ├── smartlocate.mli ├── stdarg.ml ├── stdarg.mli ├── syntax_def.ml ├── syntax_def.mli ├── topconstr.ml └── topconstr.mli ├── intf ├── constrexpr.mli ├── decl_kinds.mli ├── evar_kinds.mli ├── extend.mli ├── genredexpr.mli ├── glob_term.mli ├── locus.mli ├── misctypes.mli ├── notation_term.mli ├── pattern.mli ├── tacexpr.mli └── vernacexpr.mli ├── kernel ├── byterun │ ├── coq_fix_code.c │ ├── coq_fix_code.h │ ├── coq_gc.h │ ├── coq_instruct.h │ ├── coq_interp.c │ ├── coq_interp.h │ ├── coq_memory.c │ ├── coq_memory.h │ ├── coq_values.c │ ├── coq_values.h │ ├── int64_emul.h │ ├── int64_native.h │ └── libcoqrun.clib ├── cbytecodes.ml ├── cbytecodes.mli ├── cbytegen.ml ├── cbytegen.mli ├── cemitcodes.ml ├── cemitcodes.mli ├── closure.ml ├── closure.mli ├── constr.ml ├── constr.mli ├── context.ml ├── context.mli ├── conv_oracle.ml ├── conv_oracle.mli ├── cooking.ml ├── cooking.mli ├── csymtable.ml ├── csymtable.mli ├── declarations.mli ├── declareops.ml ├── declareops.mli ├── doc.tex ├── entries.mli ├── environ.ml ├── environ.mli ├── esubst.ml ├── esubst.mli ├── evar.ml ├── evar.mli ├── fast_typeops.ml ├── fast_typeops.mli ├── indtypes.ml ├── indtypes.mli ├── inductive.ml ├── inductive.mli ├── kernel.mllib ├── make-opcodes ├── mod_subst.ml ├── mod_subst.mli ├── mod_typing.ml ├── mod_typing.mli ├── modops.ml ├── modops.mli ├── names.ml ├── names.mli ├── nativecode.ml ├── nativecode.mli ├── nativeconv.ml ├── nativeconv.mli ├── nativeinstr.mli ├── nativelambda.ml ├── nativelambda.mli ├── nativelib.ml ├── nativelib.mli ├── nativelibrary.ml ├── nativelibrary.mli ├── nativevalues.ml ├── nativevalues.mli ├── opaqueproof.ml ├── opaqueproof.mli ├── pre_env.ml ├── pre_env.mli ├── primitives.ml ├── primitives.mli ├── reduction.ml ├── reduction.mli ├── retroknowledge.ml ├── retroknowledge.mli ├── safe_typing.ml ├── safe_typing.mli ├── sorts.ml ├── sorts.mli ├── subtyping.ml ├── subtyping.mli ├── term.ml ├── term.mli ├── term_typing.ml ├── term_typing.mli ├── type_errors.ml ├── type_errors.mli ├── typeops.ml ├── typeops.mli ├── uint31.ml ├── uint31.mli ├── univ.ml ├── univ.mli ├── vars.ml ├── vars.mli ├── vconv.ml ├── vconv.mli ├── vm.ml └── vm.mli ├── lib ├── aux_file.ml ├── aux_file.mli ├── backtrace.ml ├── backtrace.mli ├── bigint.ml ├── bigint.mli ├── cArray.ml ├── cArray.mli ├── cList.ml ├── cList.mli ├── cMap.ml ├── cMap.mli ├── cObj.ml ├── cObj.mli ├── cSet.ml ├── cSet.mli ├── cSig.mli ├── cStack.ml ├── cStack.mli ├── cString.ml ├── cString.mli ├── cThread.ml ├── cThread.mli ├── cUnix.ml ├── cUnix.mli ├── canary.ml ├── canary.mli ├── clib.mllib ├── control.ml ├── control.mli ├── deque.ml ├── deque.mli ├── doc.tex ├── dyn.ml ├── dyn.mli ├── envars.ml ├── envars.mli ├── ephemeron.ml ├── ephemeron.mli ├── errors.ml ├── errors.mli ├── exninfo.ml ├── exninfo.mli ├── explore.ml ├── explore.mli ├── feedback.ml ├── feedback.mli ├── flags.ml ├── flags.mli ├── future.ml ├── future.mli ├── genarg.ml ├── genarg.mli ├── hMap.ml ├── hMap.mli ├── hashcons.ml ├── hashcons.mli ├── hashset.ml ├── hashset.mli ├── heap.ml ├── heap.mli ├── hook.ml ├── hook.mli ├── iArray.ml ├── iArray.mli ├── iStream.ml ├── iStream.mli ├── int.ml ├── int.mli ├── lib.mllib ├── loc.ml ├── loc.mli ├── monad.ml ├── monad.mli ├── option.ml ├── option.mli ├── pp.ml ├── pp.mli ├── pp_control.ml ├── pp_control.mli ├── predicate.ml ├── predicate.mli ├── profile.ml ├── profile.mli ├── remoteCounter.ml ├── remoteCounter.mli ├── richpp.ml ├── richpp.mli ├── rtree.ml ├── rtree.mli ├── segmenttree.ml ├── segmenttree.mli ├── serialize.ml ├── serialize.mli ├── spawn.ml ├── spawn.mli ├── stateid.ml ├── stateid.mli ├── store.ml ├── store.mli ├── system.ml ├── system.mli ├── terminal.ml ├── terminal.mli ├── trie.ml ├── trie.mli ├── unicode.ml ├── unicode.mli ├── unicodetable.ml ├── unionfind.ml ├── unionfind.mli ├── util.ml ├── util.mli ├── xml_datatype.mli ├── xml_lexer.mli ├── xml_lexer.mll ├── xml_parser.ml ├── xml_parser.mli ├── xml_printer.ml └── xml_printer.mli ├── library ├── assumptions.ml ├── assumptions.mli ├── declare.ml ├── declare.mli ├── declaremods.ml ├── declaremods.mli ├── decls.ml ├── decls.mli ├── dischargedhypsmap.ml ├── dischargedhypsmap.mli ├── doc.tex ├── global.ml ├── global.mli ├── globnames.ml ├── globnames.mli ├── goptions.ml ├── goptions.mli ├── heads.ml ├── heads.mli ├── impargs.ml ├── impargs.mli ├── keys.ml ├── keys.mli ├── kindops.ml ├── kindops.mli ├── lib.ml ├── lib.mli ├── libnames.ml ├── libnames.mli ├── libobject.ml ├── libobject.mli ├── library.ml ├── library.mli ├── library.mllib ├── loadpath.ml ├── loadpath.mli ├── nameops.ml ├── nameops.mli ├── nametab.ml ├── nametab.mli ├── states.ml ├── states.mli ├── summary.ml ├── summary.mli ├── universes.ml └── universes.mli ├── man ├── coq-interface.1 ├── coq-parser.1 ├── coq-tex.1 ├── coq_makefile.1 ├── coqc.1 ├── coqchk.1 ├── coqdep.1 ├── coqdoc.1 ├── coqide.1 ├── coqmktop.1 ├── coqtop.1 ├── coqtop.byte.1 ├── coqtop.opt.1 ├── coqwc.1 └── gallina.1 ├── myocamlbuild.ml ├── parsing ├── compat.ml4 ├── doc.tex ├── egramcoq.ml ├── egramcoq.mli ├── egramml.ml ├── egramml.mli ├── g_constr.ml4 ├── g_ltac.ml4 ├── g_prim.ml4 ├── g_proofs.ml4 ├── g_tactic.ml4 ├── g_vernac.ml4 ├── g_xml.ml4 ├── highparsing.mllib ├── lexer.ml4 ├── lexer.mli ├── parsing.mllib ├── pcoq.ml4 ├── pcoq.mli ├── tok.ml └── tok.mli ├── plugins ├── Derive │ ├── Derive.v │ ├── derive.ml │ ├── derive.mli │ ├── derive_plugin.mllib │ ├── g_derive.ml4 │ └── vo.itarget ├── btauto │ ├── Algebra.v │ ├── Btauto.v │ ├── Reflect.v │ ├── btauto_plugin.mllib │ ├── g_btauto.ml4 │ ├── refl_btauto.ml │ └── vo.itarget ├── cc │ ├── README │ ├── cc_plugin.mllib │ ├── ccalgo.ml │ ├── ccalgo.mli │ ├── ccproof.ml │ ├── ccproof.mli │ ├── cctac.ml │ ├── cctac.mli │ └── g_congruence.ml4 ├── decl_mode │ ├── decl_expr.mli │ ├── decl_interp.ml │ ├── decl_interp.mli │ ├── decl_mode.ml │ ├── decl_mode.mli │ ├── decl_mode_plugin.mllib │ ├── decl_proof_instr.ml │ ├── decl_proof_instr.mli │ ├── g_decl_mode.ml4 │ ├── ppdecl_proof.ml │ └── ppdecl_proof.mli ├── extraction │ ├── CHANGES │ ├── ExtrOcamlBasic.v │ ├── ExtrOcamlBigIntConv.v │ ├── ExtrOcamlIntConv.v │ ├── ExtrOcamlNatBigInt.v │ ├── ExtrOcamlNatInt.v │ ├── ExtrOcamlString.v │ ├── ExtrOcamlZBigInt.v │ ├── ExtrOcamlZInt.v │ ├── README │ ├── big.ml │ ├── common.ml │ ├── common.mli │ ├── extract_env.ml │ ├── extract_env.mli │ ├── extraction.ml │ ├── extraction.mli │ ├── extraction_plugin.mllib │ ├── g_extraction.ml4 │ ├── haskell.ml │ ├── haskell.mli │ ├── miniml.mli │ ├── mlutil.ml │ ├── mlutil.mli │ ├── modutil.ml │ ├── modutil.mli │ ├── ocaml.ml │ ├── ocaml.mli │ ├── rust.ml │ ├── rust.mli │ ├── scheme.ml │ ├── scheme.mli │ ├── table.ml │ ├── table.mli │ └── vo.itarget ├── firstorder │ ├── formula.ml │ ├── formula.mli │ ├── g_ground.ml4 │ ├── ground.ml │ ├── ground.mli │ ├── ground_plugin.mllib │ ├── instances.ml │ ├── instances.mli │ ├── rules.ml │ ├── rules.mli │ ├── sequent.ml │ ├── sequent.mli │ ├── unify.ml │ └── unify.mli ├── fourier │ ├── Fourier.v │ ├── Fourier_util.v │ ├── fourier.ml │ ├── fourierR.ml │ ├── fourier_plugin.mllib │ ├── g_fourier.ml4 │ └── vo.itarget ├── funind │ ├── Recdef.v │ ├── functional_principles_proofs.ml │ ├── functional_principles_proofs.mli │ ├── functional_principles_types.ml │ ├── functional_principles_types.mli │ ├── g_indfun.ml4 │ ├── glob_term_to_relation.ml │ ├── glob_term_to_relation.mli │ ├── glob_termops.ml │ ├── glob_termops.mli │ ├── indfun.ml │ ├── indfun.mli │ ├── indfun_common.ml │ ├── indfun_common.mli │ ├── invfun.ml │ ├── merge.ml │ ├── recdef.ml │ ├── recdef.mli │ ├── recdef_plugin.mllib │ └── vo.itarget ├── micromega │ ├── Env.v │ ├── EnvRing.v │ ├── LICENSE.sos │ ├── Lia.v │ ├── MExtraction.v │ ├── OrderedRing.v │ ├── Psatz.v │ ├── QMicromega.v │ ├── RMicromega.v │ ├── Refl.v │ ├── RingMicromega.v │ ├── Tauto.v │ ├── VarMap.v │ ├── ZCoeff.v │ ├── ZMicromega.v │ ├── certificate.ml │ ├── coq_micromega.ml │ ├── csdpcert.ml │ ├── g_micromega.ml4 │ ├── mfourier.ml │ ├── micromega.ml │ ├── micromega.mli │ ├── micromega_plugin.mllib │ ├── mutils.ml │ ├── persistent_cache.ml │ ├── polynomial.ml │ ├── sos.ml │ ├── sos.mli │ ├── sos_lib.ml │ ├── sos_types.ml │ └── vo.itarget ├── nsatz │ ├── Nsatz.v │ ├── ideal.ml │ ├── nsatz.ml4 │ ├── nsatz_plugin.mllib │ ├── polynom.ml │ ├── polynom.mli │ ├── utile.ml │ ├── utile.mli │ └── vo.itarget ├── omega │ ├── Omega.v │ ├── OmegaLemmas.v │ ├── OmegaPlugin.v │ ├── PreOmega.v │ ├── coq_omega.ml │ ├── g_omega.ml4 │ ├── omega.ml │ ├── omega_plugin.mllib │ └── vo.itarget ├── plugins.itarget ├── pluginsbyte.itarget ├── pluginsdyn.itarget ├── pluginsopt.itarget ├── pluginsvo.itarget ├── quote │ ├── Quote.v │ ├── g_quote.ml4 │ ├── quote.ml │ ├── quote_plugin.mllib │ └── vo.itarget ├── romega │ ├── README │ ├── ROmega.v │ ├── ReflOmegaCore.v │ ├── const_omega.ml │ ├── const_omega.mli │ ├── g_romega.ml4 │ ├── refl_omega.ml │ ├── romega_plugin.mllib │ └── vo.itarget ├── rtauto │ ├── Bintree.v │ ├── Rtauto.v │ ├── g_rtauto.ml4 │ ├── proof_search.ml │ ├── proof_search.mli │ ├── refl_tauto.ml │ ├── refl_tauto.mli │ ├── rtauto_plugin.mllib │ └── vo.itarget ├── setoid_ring │ ├── Algebra_syntax.v │ ├── ArithRing.v │ ├── BinList.v │ ├── Cring.v │ ├── Field.v │ ├── Field_tac.v │ ├── Field_theory.v │ ├── InitialRing.v │ ├── Integral_domain.v │ ├── NArithRing.v │ ├── Ncring.v │ ├── Ncring_initial.v │ ├── Ncring_polynom.v │ ├── Ncring_tac.v │ ├── RealField.v │ ├── Ring.v │ ├── Ring_base.v │ ├── Ring_polynom.v │ ├── Ring_tac.v │ ├── Ring_theory.v │ ├── Rings_Q.v │ ├── Rings_R.v │ ├── Rings_Z.v │ ├── ZArithRing.v │ ├── newring.ml4 │ ├── newring_plugin.mllib │ └── vo.itarget ├── syntax │ ├── ascii_syntax.ml │ ├── ascii_syntax_plugin.mllib │ ├── nat_syntax.ml │ ├── nat_syntax_plugin.mllib │ ├── numbers_syntax.ml │ ├── numbers_syntax_plugin.mllib │ ├── r_syntax.ml │ ├── r_syntax_plugin.mllib │ ├── string_syntax.ml │ ├── string_syntax_plugin.mllib │ ├── z_syntax.ml │ └── z_syntax_plugin.mllib └── xml │ └── README ├── pretyping ├── arguments_renaming.ml ├── arguments_renaming.mli ├── cases.ml ├── cases.mli ├── cbv.ml ├── cbv.mli ├── classops.ml ├── classops.mli ├── coercion.ml ├── coercion.mli ├── constrMatching.ml ├── constrMatching.mli ├── detyping.ml ├── detyping.mli ├── doc.tex ├── evarconv.ml ├── evarconv.mli ├── evarsolve.ml ├── evarsolve.mli ├── evarutil.ml ├── evarutil.mli ├── evd.ml ├── evd.mli ├── find_subterm.ml ├── find_subterm.mli ├── glob_ops.ml ├── glob_ops.mli ├── indrec.ml ├── indrec.mli ├── inductiveops.ml ├── inductiveops.mli ├── locusops.ml ├── locusops.mli ├── miscops.ml ├── miscops.mli ├── namegen.ml ├── namegen.mli ├── nativenorm.ml ├── nativenorm.mli ├── patternops.ml ├── patternops.mli ├── pretype_errors.ml ├── pretype_errors.mli ├── pretyping.ml ├── pretyping.mli ├── pretyping.mllib ├── program.ml ├── program.mli ├── recordops.ml ├── recordops.mli ├── redops.ml ├── redops.mli ├── reductionops.ml ├── reductionops.mli ├── retyping.ml ├── retyping.mli ├── tacred.ml ├── tacred.mli ├── termops.ml ├── termops.mli ├── typeclasses.ml ├── typeclasses.mli ├── typeclasses_errors.ml ├── typeclasses_errors.mli ├── typing.ml ├── typing.mli ├── unification.ml ├── unification.mli ├── vnorm.ml └── vnorm.mli ├── printing ├── genprint.ml ├── genprint.mli ├── miscprint.ml ├── miscprint.mli ├── ppannotation.ml ├── ppannotation.mli ├── ppconstr.ml ├── ppconstr.mli ├── ppconstrsig.mli ├── ppstyle.ml ├── ppstyle.mli ├── pptactic.ml ├── pptactic.mli ├── pptacticsig.mli ├── pputils.ml ├── pputils.mli ├── ppvernac.ml ├── ppvernac.mli ├── ppvernacsig.mli ├── prettyp.ml ├── prettyp.mli ├── printer.ml ├── printer.mli ├── printing.mllib ├── printmod.ml ├── printmod.mli ├── printmodsig.mli ├── richprinter.ml └── richprinter.mli ├── proofs ├── clenv.ml ├── clenv.mli ├── clenvtac.ml ├── clenvtac.mli ├── doc.tex ├── evar_refiner.ml ├── evar_refiner.mli ├── goal.ml ├── goal.mli ├── logic.ml ├── logic.mli ├── logic_monad.ml ├── logic_monad.mli ├── pfedit.ml ├── pfedit.mli ├── proof.ml ├── proof.mli ├── proof_global.ml ├── proof_global.mli ├── proof_type.ml ├── proof_type.mli ├── proof_using.ml ├── proof_using.mli ├── proofs.mllib ├── proofview.ml ├── proofview.mli ├── proofview_monad.ml ├── proofview_monad.mli ├── redexpr.ml ├── redexpr.mli ├── refiner.ml ├── refiner.mli ├── tacmach.ml ├── tacmach.mli ├── tactic_debug.ml └── tactic_debug.mli ├── stm ├── asyncTaskQueue.ml ├── asyncTaskQueue.mli ├── coqworkmgrApi.ml ├── coqworkmgrApi.mli ├── dag.ml ├── dag.mli ├── lemmas.ml ├── lemmas.mli ├── proofworkertop.ml ├── proofworkertop.mllib ├── queryworkertop.ml ├── queryworkertop.mllib ├── spawned.ml ├── spawned.mli ├── stm.ml ├── stm.mli ├── stm.mllib ├── tQueue.ml ├── tQueue.mli ├── tacworkertop.ml ├── tacworkertop.mllib ├── texmacspp.ml ├── texmacspp.mli ├── vcs.ml ├── vcs.mli ├── vernac_classifier.ml ├── vernac_classifier.mli ├── vi_checking.ml ├── vi_checking.mli ├── workerPool.ml └── workerPool.mli ├── tactics ├── auto.ml ├── auto.mli ├── autorewrite.ml ├── autorewrite.mli ├── btermdn.ml ├── btermdn.mli ├── class_tactics.ml ├── class_tactics.mli ├── contradiction.ml ├── contradiction.mli ├── coretactics.ml4 ├── dn.ml ├── dn.mli ├── dnet.ml ├── dnet.mli ├── doc.tex ├── eauto.ml4 ├── eauto.mli ├── elim.ml ├── elim.mli ├── elimschemes.ml ├── elimschemes.mli ├── eqdecide.ml ├── eqdecide.mli ├── eqschemes.ml ├── eqschemes.mli ├── equality.ml ├── equality.mli ├── evar_tactics.ml ├── evar_tactics.mli ├── extraargs.ml4 ├── extraargs.mli ├── extratactics.ml4 ├── extratactics.mli ├── ftactic.ml ├── ftactic.mli ├── g_class.ml4 ├── g_eqdecide.ml4 ├── g_rewrite.ml4 ├── geninterp.ml ├── geninterp.mli ├── hightactics.mllib ├── hints.ml ├── hints.mli ├── hipattern.ml4 ├── hipattern.mli ├── inv.ml ├── inv.mli ├── leminv.ml ├── leminv.mli ├── rewrite.ml ├── rewrite.mli ├── taccoerce.ml ├── taccoerce.mli ├── tacenv.ml ├── tacenv.mli ├── tacintern.ml ├── tacintern.mli ├── tacinterp.ml ├── tacinterp.mli ├── tacsubst.ml ├── tacsubst.mli ├── tacticMatching.ml ├── tacticMatching.mli ├── tactic_option.ml ├── tactic_option.mli ├── tacticals.ml ├── tacticals.mli ├── tactics.ml ├── tactics.mli ├── tactics.mllib ├── tauto.ml4 ├── term_dnet.ml └── term_dnet.mli ├── test-suite ├── Makefile ├── bench │ ├── lists-100.v │ └── lists_100.v ├── bugs │ ├── 2428.v │ ├── closed │ │ ├── 1100.v │ │ ├── 121.v │ │ ├── 1243.v │ │ ├── 1302.v │ │ ├── 1322.v │ │ ├── 1411.v │ │ ├── 1414.v │ │ ├── 1416.v │ │ ├── 1419.v │ │ ├── 1425.v │ │ ├── 1446.v │ │ ├── 1448.v │ │ ├── 1477.v │ │ ├── 1483.v │ │ ├── 1507.v │ │ ├── 1519.v │ │ ├── 1568.v │ │ ├── 1576.v │ │ ├── 1582.v │ │ ├── 1604.v │ │ ├── 1614.v │ │ ├── 1618.v │ │ ├── 1634.v │ │ ├── 1643.v │ │ ├── 1680.v │ │ ├── 1683.v │ │ ├── 1696.v │ │ ├── 1703.v │ │ ├── 1704.v │ │ ├── 1711.v │ │ ├── 1718.v │ │ ├── 1738.v │ │ ├── 1740.v │ │ ├── 1754.v │ │ ├── 1773.v │ │ ├── 1774.v │ │ ├── 1775.v │ │ ├── 1776.v │ │ ├── 1779.v │ │ ├── 1780.v │ │ ├── 1784.v │ │ ├── 1787.v │ │ ├── 1791.v │ │ ├── 1834.v │ │ ├── 1844.v │ │ ├── 1865.v │ │ ├── 1891.v │ │ ├── 1898.v │ │ ├── 1900.v │ │ ├── 1901.v │ │ ├── 1905.v │ │ ├── 1907.v │ │ ├── 1912.v │ │ ├── 1915.v │ │ ├── 1918.v │ │ ├── 1925.v │ │ ├── 1931.v │ │ ├── 1935.v │ │ ├── 1939.v │ │ ├── 1944.v │ │ ├── 1951.v │ │ ├── 1962.v │ │ ├── 1963.v │ │ ├── 1977.v │ │ ├── 1981.v │ │ ├── 2001.v │ │ ├── 2006.v │ │ ├── 2017.v │ │ ├── 2021.v │ │ ├── 2027.v │ │ ├── 2083.v │ │ ├── 2089.v │ │ ├── 2095.v │ │ ├── 2105.v │ │ ├── 2108.v │ │ ├── 2117.v │ │ ├── 2123.v │ │ ├── 2127.v │ │ ├── 2135.v │ │ ├── 2136.v │ │ ├── 2137.v │ │ ├── 2139.v │ │ ├── 2141.v │ │ ├── 2145.v │ │ ├── 2149.v │ │ ├── 2164.v │ │ ├── 2181.v │ │ ├── 2193.v │ │ ├── 2230.v │ │ ├── 2231.v │ │ ├── 2244.v │ │ ├── 2250.v │ │ ├── 2251.v │ │ ├── 2255.v │ │ ├── 2262.v │ │ ├── 2281.v │ │ ├── 2295.v │ │ ├── 2299.v │ │ ├── 2300.v │ │ ├── 2303.v │ │ ├── 2304.v │ │ ├── 2307.v │ │ ├── 2310.v │ │ ├── 2319.v │ │ ├── 2320.v │ │ ├── 2342.v │ │ ├── 2347.v │ │ ├── 2350.v │ │ ├── 2353.v │ │ ├── 2360.v │ │ ├── 2362.v │ │ ├── 2375.v │ │ ├── 2378.v │ │ ├── 2388.v │ │ ├── 2393.v │ │ ├── 2404.v │ │ ├── 2406.v │ │ ├── 2447.v │ │ ├── 2456.v │ │ ├── 2464.v │ │ ├── 2467.v │ │ ├── 2473.v │ │ ├── 2586.v │ │ ├── 2603.v │ │ ├── 2608.v │ │ ├── 2613.v │ │ ├── 2615.v │ │ ├── 2616.v │ │ ├── 2629.v │ │ ├── 2640.v │ │ ├── 2667.v │ │ ├── 2668.v │ │ ├── 2670.v │ │ ├── 2680.v │ │ ├── 2713.v │ │ ├── 2729.v │ │ ├── 2732.v │ │ ├── 2733.v │ │ ├── 2734.v │ │ ├── 2750.v │ │ ├── 2810.v │ │ ├── 2817.v │ │ ├── 2818.v │ │ ├── 2828.v │ │ ├── 2830.v │ │ ├── 2834.v │ │ ├── 2836.v │ │ ├── 2837.v │ │ ├── 2839.v │ │ ├── 2846.v │ │ ├── 2848.v │ │ ├── 2850.v │ │ ├── 2854.v │ │ ├── 2876.v │ │ ├── 2883.v │ │ ├── 2900.v │ │ ├── 2920.v │ │ ├── 2923.v │ │ ├── 2928.v │ │ ├── 2930.v │ │ ├── 2945.v │ │ ├── 2955.v │ │ ├── 2966.v │ │ ├── 2969.v │ │ ├── 2981.v │ │ ├── 2983.v │ │ ├── 2990.v │ │ ├── 2994.v │ │ ├── 2995.v │ │ ├── 2996.v │ │ ├── 3000.v │ │ ├── 3001.v │ │ ├── 3003.v │ │ ├── 3004.v │ │ ├── 3008.v │ │ ├── 3010b.v │ │ ├── 3016.v │ │ ├── 3017.v │ │ ├── 3022.v │ │ ├── 3023.v │ │ ├── 3036.v │ │ ├── 3037.v │ │ ├── 3043.v │ │ ├── 3045.v │ │ ├── 3050.v │ │ ├── 3054.v │ │ ├── 3062.v │ │ ├── 3068.v │ │ ├── 3088.v │ │ ├── 3093.v │ │ ├── 3142.v │ │ ├── 3164.v │ │ ├── 3188.v │ │ ├── 3205.v │ │ ├── 3212.v │ │ ├── 3217.v │ │ ├── 3228.v │ │ ├── 3242.v │ │ ├── 3251.v │ │ ├── 3258.v │ │ ├── 3259.v │ │ ├── 3260.v │ │ ├── 3262.v │ │ ├── 3264.v │ │ ├── 3265.v │ │ ├── 3266.v │ │ ├── 3267.v │ │ ├── 328.v │ │ ├── 3281.v │ │ ├── 3282.v │ │ ├── 3284.v │ │ ├── 3285.v │ │ ├── 3286.v │ │ ├── 3287.v │ │ ├── 3289.v │ │ ├── 329.v │ │ ├── 3291.v │ │ ├── 3294.v │ │ ├── 3297.v │ │ ├── 3300.v │ │ ├── 3305.v │ │ ├── 3306.v │ │ ├── 3309.v │ │ ├── 331.v │ │ ├── 3310.v │ │ ├── 3314.v │ │ ├── 3315.v │ │ ├── 3317.v │ │ ├── 3319.v │ │ ├── 3321.v │ │ ├── 3322.v │ │ ├── 3323.v │ │ ├── 3324.v │ │ ├── 3325.v │ │ ├── 3326.v │ │ ├── 3329.v │ │ ├── 3330.v │ │ ├── 3331.v │ │ ├── 3332.v │ │ ├── 3336.v │ │ ├── 3337.v │ │ ├── 3338.v │ │ ├── 3344.v │ │ ├── 3346.v │ │ ├── 3347.v │ │ ├── 3348.v │ │ ├── 335.v │ │ ├── 3350.v │ │ ├── 3352.v │ │ ├── 3354.v │ │ ├── 3355.v │ │ ├── 3368.v │ │ ├── 3372.v │ │ ├── 3373.v │ │ ├── 3374.v │ │ ├── 3375.v │ │ ├── 3377.v │ │ ├── 3382.v │ │ ├── 3386.v │ │ ├── 3387.v │ │ ├── 3388.v │ │ ├── 3390.v │ │ ├── 3392.v │ │ ├── 3393.v │ │ ├── 3402.v │ │ ├── 3408.v │ │ ├── 3416.v │ │ ├── 3417.v │ │ ├── 3422.v │ │ ├── 3424.v │ │ ├── 3427.v │ │ ├── 3428.v │ │ ├── 3439.v │ │ ├── 3453.v │ │ ├── 3454.v │ │ ├── 3469.v │ │ ├── 3477.v │ │ ├── 348.v │ │ ├── 3480.v │ │ ├── 3481.v │ │ ├── 3482.v │ │ ├── 3483.v │ │ ├── 3484.v │ │ ├── 3485.v │ │ ├── 3487.v │ │ ├── 3505.v │ │ ├── 3520.v │ │ ├── 3531.v │ │ ├── 3537.v │ │ ├── 3539.v │ │ ├── 3542.v │ │ ├── 3546.v │ │ ├── 3559.v │ │ ├── 3561.v │ │ ├── 3562.v │ │ ├── 3563.v │ │ ├── 3566.v │ │ ├── 3567.v │ │ ├── 3584.v │ │ ├── 3593.v │ │ ├── 3594.v │ │ ├── 3596.v │ │ ├── 3616.v │ │ ├── 3618.v │ │ ├── 3623.v │ │ ├── 3624.v │ │ ├── 3625.v │ │ ├── 3628.v │ │ ├── 3633.v │ │ ├── 3637.v │ │ ├── 3638.v │ │ ├── 3640.v │ │ ├── 3641.v │ │ ├── 3647.v │ │ ├── 3648.v │ │ ├── 3652.v │ │ ├── 3653.v │ │ ├── 3654.v │ │ ├── 3656.v │ │ ├── 3657.v │ │ ├── 3658.v │ │ ├── 3660.v │ │ ├── 3661.v │ │ ├── 3662.v │ │ ├── 3664.v │ │ ├── 3665.v │ │ ├── 3666.v │ │ ├── 3667.v │ │ ├── 3668.v │ │ ├── 3670.v │ │ ├── 3672.v │ │ ├── 3675.v │ │ ├── 3682.v │ │ ├── 3684.v │ │ ├── 3686.v │ │ ├── 3692.v │ │ ├── 3698.v │ │ ├── 3699.v │ │ ├── 3700.v │ │ ├── 3709.v │ │ ├── 3710.v │ │ ├── 3723.v │ │ ├── 3782.v │ │ ├── 3788.v │ │ ├── 3792.v │ │ ├── 38.v │ │ ├── 3804.v │ │ ├── 3821.v │ │ ├── 3828.v │ │ ├── 3848.v │ │ ├── 3854.v │ │ ├── 545.v │ │ ├── 808_2411.v │ │ ├── 846.v │ │ ├── 931.v │ │ ├── HoTT_coq_001.v │ │ ├── HoTT_coq_002.v │ │ ├── HoTT_coq_006.v │ │ ├── HoTT_coq_007.v │ │ ├── HoTT_coq_010.v │ │ ├── HoTT_coq_012.v │ │ ├── HoTT_coq_013.v │ │ ├── HoTT_coq_014.v │ │ ├── HoTT_coq_016.v │ │ ├── HoTT_coq_020.v │ │ ├── HoTT_coq_023.v │ │ ├── HoTT_coq_025.v │ │ ├── HoTT_coq_027.v │ │ ├── HoTT_coq_028.v │ │ ├── HoTT_coq_029.v │ │ ├── HoTT_coq_030.v │ │ ├── HoTT_coq_032.v │ │ ├── HoTT_coq_034.v │ │ ├── HoTT_coq_035.v │ │ ├── HoTT_coq_036.v │ │ ├── HoTT_coq_037.v │ │ ├── HoTT_coq_041.v │ │ ├── HoTT_coq_042.v │ │ ├── HoTT_coq_043.v │ │ ├── HoTT_coq_044.v │ │ ├── HoTT_coq_045.v │ │ ├── HoTT_coq_047.v │ │ ├── HoTT_coq_048.v │ │ ├── HoTT_coq_049.v │ │ ├── HoTT_coq_050.v │ │ ├── HoTT_coq_052.v │ │ ├── HoTT_coq_053.v │ │ ├── HoTT_coq_054.v │ │ ├── HoTT_coq_055.v │ │ ├── HoTT_coq_056.v │ │ ├── HoTT_coq_057.v │ │ ├── HoTT_coq_058.v │ │ ├── HoTT_coq_059.v │ │ ├── HoTT_coq_061.v │ │ ├── HoTT_coq_062.v │ │ ├── HoTT_coq_063.v │ │ ├── HoTT_coq_064.v │ │ ├── HoTT_coq_067.v │ │ ├── HoTT_coq_068.v │ │ ├── HoTT_coq_071.v │ │ ├── HoTT_coq_074.v │ │ ├── HoTT_coq_077.v │ │ ├── HoTT_coq_078.v │ │ ├── HoTT_coq_079.v │ │ ├── HoTT_coq_080.v │ │ ├── HoTT_coq_081.v │ │ ├── HoTT_coq_082.v │ │ ├── HoTT_coq_083.v │ │ ├── HoTT_coq_084.v │ │ ├── HoTT_coq_085.v │ │ ├── HoTT_coq_087.v │ │ ├── HoTT_coq_088.v │ │ ├── HoTT_coq_089.v │ │ ├── HoTT_coq_090.v │ │ ├── HoTT_coq_091.v │ │ ├── HoTT_coq_093.v │ │ ├── HoTT_coq_094.v │ │ ├── HoTT_coq_097.v │ │ ├── HoTT_coq_098.v │ │ ├── HoTT_coq_099.v │ │ ├── HoTT_coq_100.v │ │ ├── HoTT_coq_101.v │ │ ├── HoTT_coq_102.v │ │ ├── HoTT_coq_103.v │ │ ├── HoTT_coq_104.v │ │ ├── HoTT_coq_105.v │ │ ├── HoTT_coq_107.v │ │ ├── HoTT_coq_108.v │ │ ├── HoTT_coq_110.v │ │ ├── HoTT_coq_111.v │ │ ├── HoTT_coq_112.v │ │ ├── HoTT_coq_113.v │ │ ├── HoTT_coq_114.v │ │ ├── HoTT_coq_115.v │ │ ├── HoTT_coq_116.v │ │ ├── HoTT_coq_117.v │ │ ├── HoTT_coq_118.v │ │ ├── HoTT_coq_121.v │ │ ├── HoTT_coq_122.v │ │ ├── HoTT_coq_123.v │ │ └── HoTT_coq_124.v │ └── opened │ │ ├── 1338.v-disabled │ │ ├── 1501.v │ │ ├── 1596.v │ │ ├── 1671.v │ │ ├── 1811.v │ │ ├── 2572.v-disabled │ │ ├── 2652a.v-disabled │ │ ├── 2652b.v-disabled │ │ ├── 2800.v │ │ ├── 2814.v │ │ ├── 2951.v │ │ ├── 3010.v-disabled │ │ ├── 3045.v │ │ ├── 3071.v │ │ ├── 3092.v │ │ ├── 3100.v │ │ ├── 3166.v │ │ ├── 3186.v-disabled │ │ ├── 3209.v │ │ ├── 3230.v │ │ ├── 3248.v │ │ ├── 3263.v │ │ ├── 3277.v │ │ ├── 3278.v │ │ ├── 3283.v │ │ ├── 3295.v │ │ ├── 3298.v │ │ ├── 3304.v │ │ ├── 3311.v │ │ ├── 3312.v │ │ ├── 3320.v │ │ ├── 3326.v │ │ ├── 3343.v │ │ ├── 3345.v │ │ ├── 3357.v │ │ ├── 3363.v │ │ ├── 3370.v │ │ ├── 3383.v │ │ ├── 3395.v │ │ ├── 3410.v │ │ ├── 3459.v │ │ ├── 3461.v │ │ ├── 3463.v │ │ ├── 3467.v │ │ ├── 3478.v-disabled │ │ ├── 3490.v │ │ ├── 3491.v │ │ ├── 3509.v │ │ ├── 3510.v │ │ ├── 3554.v │ │ ├── 3562.v │ │ ├── 3626.v │ │ ├── 3655.v │ │ ├── 3657.v │ │ ├── 3670.v │ │ ├── 3675.v │ │ ├── 3681.v │ │ ├── 3685.v │ │ ├── 3753.v │ │ ├── 3754.v │ │ ├── 3786.v │ │ ├── 3788.v │ │ ├── 3808.v │ │ ├── 3819.v │ │ ├── 3849.v │ │ ├── 743.v │ │ ├── HoTT_coq_106.v │ │ └── HoTT_coq_120.v ├── check ├── complexity │ ├── Notations.v │ ├── evar_instance.v │ ├── guard.v │ ├── injection.v │ ├── lettuple.v │ ├── patternmatching.v │ ├── pretyping.v │ ├── ring.v │ ├── ring2.v │ ├── setoid_rewrite.v │ └── unification.v ├── coqdoc │ └── links.v ├── csdp.cache ├── failure │ ├── Case1.v │ ├── Case10.v │ ├── Case11.v │ ├── Case12.v │ ├── Case13.v │ ├── Case14.v │ ├── Case15.v │ ├── Case16.v │ ├── Case2.v │ ├── Case3.v │ ├── Case4.v │ ├── Case5.v │ ├── Case6.v │ ├── Case7.v │ ├── Case8.v │ ├── Case9.v │ ├── ClearBody.v │ ├── ImportedCoercion.v │ ├── Notations.v │ ├── Reordering.v │ ├── Sections.v │ ├── Tauto.v │ ├── Uminus.v │ ├── autorewritein.v │ ├── cases.v │ ├── check.v │ ├── circular_subtyping.v │ ├── clash_cons.v │ ├── clashes.v │ ├── cofixpoint.v │ ├── coqbugs0266.v │ ├── evar1.v │ ├── evarclear1.v │ ├── evarclear2.v │ ├── evarlemma.v │ ├── fixpoint1.v │ ├── fixpoint2.v │ ├── fixpoint3.v │ ├── fixpoint4.v │ ├── guard-cofix.v │ ├── guard.v │ ├── illtype1.v │ ├── inductive.v │ ├── ltac1.v │ ├── ltac2.v │ ├── ltac4.v │ ├── pattern.v │ ├── positivity.v │ ├── proofirrelevance.v │ ├── prop-set-proof-irrelevance.v │ ├── redef.v │ ├── rewrite_in_goal.v │ ├── rewrite_in_hyp.v │ ├── rewrite_in_hyp2.v │ ├── search.v │ ├── sortelim.v │ ├── subterm.v │ ├── subterm2.v │ ├── subterm3.v │ ├── subtyping.v │ ├── subtyping2.v │ ├── univ_include.v │ ├── universes-buraliforti-redef.v │ ├── universes-buraliforti.v │ ├── universes-sections1.v │ ├── universes-sections2.v │ ├── universes.v │ └── universes3.v ├── ide │ ├── blocking-futures.fake │ ├── undo.v │ ├── undo001.fake │ ├── undo002.fake │ ├── undo003.fake │ ├── undo004.fake │ ├── undo005.fake │ ├── undo006.fake │ ├── undo008.fake │ ├── undo009.fake │ ├── undo010.fake │ ├── undo011.fake │ ├── undo012.fake │ ├── undo013.fake │ ├── undo014.fake │ ├── undo015.fake │ ├── undo016.fake │ ├── undo017.fake │ ├── undo018.fake │ ├── undo019.fake │ ├── undo020.fake │ ├── undo021.fake │ └── undo022.fake ├── ideal-features │ ├── Apply.v │ ├── Case4.v │ ├── Case9.v │ ├── complexity │ │ └── evars_subst.v │ ├── eapply_evar.v │ ├── evars_subst.v │ ├── implicit_binders.v │ └── universes.v ├── interactive │ ├── Back.v │ ├── Evar.v │ ├── ParalITP.v │ └── ParalITP_smallproofs.v ├── kernel │ └── inds.mv ├── micromega │ ├── bertot.v │ ├── example.v │ ├── heap3_vcgen_25.v │ ├── qexample.v │ ├── rexample.v │ ├── square.v │ └── zomicron.v ├── misc │ ├── berardi_test.v │ ├── deps │ │ ├── client │ │ │ ├── bar.v │ │ │ └── foo.v │ │ ├── deps.out │ │ └── lib │ │ │ └── foo.v │ └── universes │ │ └── universes.v ├── modules │ ├── Demo.v │ ├── Nat.v │ ├── PO.v │ ├── Przyklad.v │ ├── Tescik.v │ ├── errors.v │ ├── fun_objects.v │ ├── grammar.v │ ├── ind.v │ ├── injection_discriminate_inversion.v │ ├── mod_decl.v │ ├── modeq.v │ ├── modul.v │ ├── nested_mod_types.v │ ├── obj.v │ ├── objects.v │ ├── objects2.v │ ├── pliczek.v │ ├── plik.v │ ├── pseudo_circular_with.v │ ├── resolver.v │ ├── sig.v │ ├── sub_objects.v │ └── subtyping.v ├── output │ ├── Arguments.out │ ├── Arguments.v │ ├── ArgumentsScope.out │ ├── ArgumentsScope.v │ ├── Arguments_renaming.out │ ├── Arguments_renaming.v │ ├── Cases.out │ ├── Cases.v │ ├── Coercions.out │ ├── Coercions.v │ ├── Errors.out │ ├── Errors.v │ ├── Existentials.out │ ├── Existentials.v │ ├── Extraction_matchs_2413.out │ ├── Extraction_matchs_2413.v │ ├── Fixpoint.out │ ├── Fixpoint.v │ ├── Implicit.out │ ├── Implicit.v │ ├── InitSyntax.out │ ├── InitSyntax.v │ ├── Intuition.out │ ├── Intuition.v │ ├── Match_subterm.out │ ├── Match_subterm.v │ ├── Nametab.out │ ├── Nametab.v │ ├── Naming.out │ ├── Naming.v │ ├── Notations.out │ ├── Notations.v │ ├── Notations2.out │ ├── Notations2.v │ ├── NumbersSyntax.out │ ├── NumbersSyntax.v │ ├── PrintAssumptions.out │ ├── PrintAssumptions.v │ ├── PrintInfos.out │ ├── PrintInfos.v │ ├── Quote.out │ ├── Quote.v │ ├── RealSyntax.out │ ├── RealSyntax.v │ ├── Record.out │ ├── Record.v │ ├── Search.out │ ├── Search.v │ ├── SearchHead.out │ ├── SearchHead.v │ ├── SearchPattern.out │ ├── SearchPattern.v │ ├── SearchRewrite.out │ ├── SearchRewrite.v │ ├── Sum.out │ ├── Sum.v │ ├── Tactics.out │ ├── Tactics.v │ ├── TranspModtype.out │ ├── TranspModtype.v │ ├── ZSyntax.out │ ├── ZSyntax.v │ ├── inference.out │ ├── inference.v │ ├── names.out │ ├── names.v │ ├── reduction.out │ ├── reduction.v │ ├── rewrite-2172.out │ ├── rewrite-2172.v │ ├── set.out │ ├── set.v │ ├── simpl.out │ └── simpl.v ├── prerequisite │ ├── make_local.v │ └── make_notation.v ├── stm │ └── Nijmegen_QArithSternBrocot_Zaux.v ├── success │ ├── Abstract.v │ ├── AdvancedCanonicalStructure.v │ ├── AdvancedTypeClasses.v │ ├── CanonicalStructure.v │ ├── Case1.v │ ├── Case10.v │ ├── Case11.v │ ├── Case12.v │ ├── Case13.v │ ├── Case14.v │ ├── Case15.v │ ├── Case16.v │ ├── Case17.v │ ├── Case18.v │ ├── Case19.v │ ├── Case2.v │ ├── Case20.v │ ├── Case21.v │ ├── Case22.v │ ├── Case3.v │ ├── Case5.v │ ├── Case6.v │ ├── Case7.v │ ├── Case8.v │ ├── Case9.v │ ├── CaseAlias.v │ ├── CaseInClause.v │ ├── Cases-bug1834.v │ ├── Cases-bug3758.v │ ├── Cases.v │ ├── CasesDep.v │ ├── Check.v │ ├── Conjecture.v │ ├── DHyp.v │ ├── Decompose.v │ ├── DiscrR.v │ ├── Discriminate.v │ ├── Field.v │ ├── Fixpoint.v │ ├── Fourier.v │ ├── Funind.v │ ├── Generalization.v │ ├── Generalize.v │ ├── Hints.v │ ├── ImplicitArguments.v │ ├── ImplicitTactic.v │ ├── Import.v │ ├── Inductive.v │ ├── Injection.v │ ├── Inversion.v │ ├── LetIn.v │ ├── LetPat.v │ ├── MatchFail.v │ ├── Mod_ltac.v │ ├── Mod_params.v │ ├── Mod_strengthen.v │ ├── Mod_type.v │ ├── NatRing.v │ ├── Notations.v │ ├── Nsatz.v │ ├── NumberScopes.v │ ├── Omega.v │ ├── Omega0.v │ ├── Omega2.v │ ├── OmegaPre.v │ ├── PCase.v │ ├── PPFix.v │ ├── Print.v │ ├── PrintSortedUniverses.v │ ├── ProgramWf.v │ ├── Projection.v │ ├── ROmega.v │ ├── ROmega0.v │ ├── ROmega2.v │ ├── ROmegaPre.v │ ├── RecTutorial.v │ ├── Record.v │ ├── Reg.v │ ├── Remark.v │ ├── Rename.v │ ├── Reordering.v │ ├── Require.v │ ├── Scheme.v │ ├── Scopes.v │ ├── Section.v │ ├── Simplify_eq.v │ ├── Tauto.v │ ├── TestRefine.v │ ├── Try.v │ ├── Typeclasses.v │ ├── apply.v │ ├── applyTC.v │ ├── auto.v │ ├── autointros.v │ ├── autorewrite.v │ ├── bullet.v │ ├── cc.v │ ├── change.v │ ├── clear.v │ ├── coercions.v │ ├── conv_pbs.v │ ├── coqbugs0181.v │ ├── decl_mode.v │ ├── dependentind.v │ ├── destruct.v │ ├── eauto.v │ ├── eqdecide.v │ ├── eta.v │ ├── evars.v │ ├── extraction.v │ ├── fix.v │ ├── guard.v │ ├── hyps_inclusion.v │ ├── if.v │ ├── implicit.v │ ├── import_lib.v │ ├── import_mod.v │ ├── indelim.v │ ├── inds_type_sec.v │ ├── induct.v │ ├── intros.v │ ├── keyedrewrite.v │ ├── letproj.v │ ├── ltac.v │ ├── ltac_plus.v │ ├── mutual_ind.v │ ├── namedunivs.v │ ├── options.v │ ├── paralleltac.v │ ├── parsing.v │ ├── pattern.v │ ├── polymorphism.v │ ├── primitiveproj.v │ ├── proof_using.v │ ├── refine.v │ ├── remember.v │ ├── replace.v │ ├── rewrite.v │ ├── rewrite_dep.v │ ├── rewrite_in.v │ ├── rewrite_iterated.v │ ├── rewrite_strat.v │ ├── searchabout.v │ ├── set.v │ ├── setoid_ring_module.v │ ├── setoid_test.v │ ├── setoid_test2.v │ ├── setoid_test_function_space.v │ ├── setoid_unif.v │ ├── simpl.v │ ├── simpl_tuning.v │ ├── somatching.v │ ├── specialize.v │ ├── telescope_canonical.v │ ├── unfold.v │ ├── unicode_utf8.v │ ├── unification.v │ ├── univers.v │ └── universes-coercion.v ├── typeclasses │ ├── NewSetoid.v │ ├── backtrack.v │ ├── clrewrite.v │ ├── deftwice.v │ └── unification_delta.v └── vi │ ├── simple.v │ └── univ_constraints_statements.v ├── theories ├── Arith │ ├── Arith.v │ ├── Arith_base.v │ ├── Between.v │ ├── Bool_nat.v │ ├── Compare.v │ ├── Compare_dec.v │ ├── Div2.v │ ├── EqNat.v │ ├── Euclid.v │ ├── Even.v │ ├── Factorial.v │ ├── Gt.v │ ├── Le.v │ ├── Lt.v │ ├── Max.v │ ├── Min.v │ ├── Minus.v │ ├── Mult.v │ ├── PeanoNat.v │ ├── Peano_dec.v │ ├── Plus.v │ ├── Wf_nat.v │ ├── intro.tex │ └── vo.itarget ├── Bool │ ├── Bool.v │ ├── BoolEq.v │ ├── Bvector.v │ ├── DecBool.v │ ├── IfProp.v │ ├── Sumbool.v │ ├── Zerob.v │ ├── intro.tex │ └── vo.itarget ├── Classes │ ├── CEquivalence.v │ ├── CMorphisms.v │ ├── CRelationClasses.v │ ├── DecidableClass.v │ ├── EquivDec.v │ ├── Equivalence.v │ ├── Init.v │ ├── Morphisms.v │ ├── Morphisms_Prop.v │ ├── Morphisms_Relations.v │ ├── RelationClasses.v │ ├── RelationPairs.v │ ├── SetoidClass.v │ ├── SetoidDec.v │ ├── SetoidTactics.v │ └── vo.itarget ├── FSets │ ├── FMapAVL.v │ ├── FMapFacts.v │ ├── FMapFullAVL.v │ ├── FMapInterface.v │ ├── FMapList.v │ ├── FMapPositive.v │ ├── FMapWeakList.v │ ├── FMaps.v │ ├── FSetAVL.v │ ├── FSetBridge.v │ ├── FSetCompat.v │ ├── FSetDecide.v │ ├── FSetEqProperties.v │ ├── FSetFacts.v │ ├── FSetInterface.v │ ├── FSetList.v │ ├── FSetPositive.v │ ├── FSetProperties.v │ ├── FSetToFiniteSet.v │ ├── FSetWeakList.v │ ├── FSets.v │ └── vo.itarget ├── Init │ ├── Datatypes.v │ ├── Logic.v │ ├── Logic_Type.v │ ├── Nat.v │ ├── Notations.v │ ├── Peano.v │ ├── Prelude.v │ ├── Specif.v │ ├── Tactics.v │ ├── Wf.v │ └── vo.itarget ├── Lists │ ├── List.v │ ├── ListDec.v │ ├── ListSet.v │ ├── ListTactics.v │ ├── SetoidList.v │ ├── SetoidPermutation.v │ ├── StreamMemo.v │ ├── Streams.v │ ├── intro.tex │ └── vo.itarget ├── Logic │ ├── Berardi.v │ ├── ChoiceFacts.v │ ├── Classical.v │ ├── ClassicalChoice.v │ ├── ClassicalDescription.v │ ├── ClassicalEpsilon.v │ ├── ClassicalFacts.v │ ├── ClassicalUniqueChoice.v │ ├── Classical_Pred_Type.v │ ├── Classical_Prop.v │ ├── ConstructiveEpsilon.v │ ├── Decidable.v │ ├── Description.v │ ├── Diaconescu.v │ ├── Epsilon.v │ ├── Eqdep.v │ ├── EqdepFacts.v │ ├── Eqdep_dec.v │ ├── ExtensionalityFacts.v │ ├── FinFun.v │ ├── FunctionalExtensionality.v │ ├── Hurkens.v │ ├── IndefiniteDescription.v │ ├── JMeq.v │ ├── ProofIrrelevance.v │ ├── ProofIrrelevanceFacts.v │ ├── RelationalChoice.v │ ├── SetIsType.v │ ├── WKL.v │ ├── WeakFan.v │ ├── intro.tex │ └── vo.itarget ├── MSets │ ├── MSetAVL.v │ ├── MSetDecide.v │ ├── MSetEqProperties.v │ ├── MSetFacts.v │ ├── MSetGenTree.v │ ├── MSetInterface.v │ ├── MSetList.v │ ├── MSetPositive.v │ ├── MSetProperties.v │ ├── MSetRBT.v │ ├── MSetToFiniteSet.v │ ├── MSetWeakList.v │ ├── MSets.v │ └── vo.itarget ├── NArith │ ├── BinNat.v │ ├── BinNatDef.v │ ├── NArith.v │ ├── Ndec.v │ ├── Ndigits.v │ ├── Ndist.v │ ├── Ndiv_def.v │ ├── Ngcd_def.v │ ├── Nnat.v │ ├── Nsqrt_def.v │ ├── intro.tex │ └── vo.itarget ├── Numbers │ ├── BigNumPrelude.v │ ├── BinNums.v │ ├── Cyclic │ │ ├── Abstract │ │ │ ├── CyclicAxioms.v │ │ │ └── NZCyclic.v │ │ ├── DoubleCyclic │ │ │ ├── DoubleAdd.v │ │ │ ├── DoubleBase.v │ │ │ ├── DoubleCyclic.v │ │ │ ├── DoubleDiv.v │ │ │ ├── DoubleDivn1.v │ │ │ ├── DoubleLift.v │ │ │ ├── DoubleMul.v │ │ │ ├── DoubleSqrt.v │ │ │ ├── DoubleSub.v │ │ │ └── DoubleType.v │ │ ├── Int31 │ │ │ ├── Cyclic31.v │ │ │ ├── Int31.v │ │ │ └── Ring31.v │ │ └── ZModulo │ │ │ └── ZModulo.v │ ├── Integer │ │ ├── Abstract │ │ │ ├── ZAdd.v │ │ │ ├── ZAddOrder.v │ │ │ ├── ZAxioms.v │ │ │ ├── ZBase.v │ │ │ ├── ZBits.v │ │ │ ├── ZDivEucl.v │ │ │ ├── ZDivFloor.v │ │ │ ├── ZDivTrunc.v │ │ │ ├── ZGcd.v │ │ │ ├── ZLcm.v │ │ │ ├── ZLt.v │ │ │ ├── ZMaxMin.v │ │ │ ├── ZMul.v │ │ │ ├── ZMulOrder.v │ │ │ ├── ZParity.v │ │ │ ├── ZPow.v │ │ │ ├── ZProperties.v │ │ │ └── ZSgnAbs.v │ │ ├── BigZ │ │ │ ├── BigZ.v │ │ │ └── ZMake.v │ │ ├── Binary │ │ │ └── ZBinary.v │ │ ├── NatPairs │ │ │ └── ZNatPairs.v │ │ └── SpecViaZ │ │ │ ├── ZSig.v │ │ │ └── ZSigZAxioms.v │ ├── NaryFunctions.v │ ├── NatInt │ │ ├── NZAdd.v │ │ ├── NZAddOrder.v │ │ ├── NZAxioms.v │ │ ├── NZBase.v │ │ ├── NZBits.v │ │ ├── NZDiv.v │ │ ├── NZDomain.v │ │ ├── NZGcd.v │ │ ├── NZLog.v │ │ ├── NZMul.v │ │ ├── NZMulOrder.v │ │ ├── NZOrder.v │ │ ├── NZParity.v │ │ ├── NZPow.v │ │ ├── NZProperties.v │ │ └── NZSqrt.v │ ├── Natural │ │ ├── Abstract │ │ │ ├── NAdd.v │ │ │ ├── NAddOrder.v │ │ │ ├── NAxioms.v │ │ │ ├── NBase.v │ │ │ ├── NBits.v │ │ │ ├── NDefOps.v │ │ │ ├── NDiv.v │ │ │ ├── NGcd.v │ │ │ ├── NIso.v │ │ │ ├── NLcm.v │ │ │ ├── NLog.v │ │ │ ├── NMaxMin.v │ │ │ ├── NMulOrder.v │ │ │ ├── NOrder.v │ │ │ ├── NParity.v │ │ │ ├── NPow.v │ │ │ ├── NProperties.v │ │ │ ├── NSqrt.v │ │ │ ├── NStrongRec.v │ │ │ └── NSub.v │ │ ├── BigN │ │ │ ├── BigN.v │ │ │ ├── NMake.v │ │ │ ├── NMake_gen.ml │ │ │ └── Nbasic.v │ │ ├── Binary │ │ │ └── NBinary.v │ │ ├── Peano │ │ │ └── NPeano.v │ │ └── SpecViaZ │ │ │ ├── NSig.v │ │ │ └── NSigNAxioms.v │ ├── NumPrelude.v │ ├── Rational │ │ ├── BigQ │ │ │ ├── BigQ.v │ │ │ └── QMake.v │ │ └── SpecViaQ │ │ │ └── QSig.v │ └── vo.itarget ├── PArith │ ├── BinPos.v │ ├── BinPosDef.v │ ├── PArith.v │ ├── POrderedType.v │ ├── Pnat.v │ ├── intro.tex │ └── vo.itarget ├── Program │ ├── Basics.v │ ├── Combinators.v │ ├── Equality.v │ ├── Program.v │ ├── Subset.v │ ├── Syntax.v │ ├── Tactics.v │ ├── Utils.v │ ├── Wf.v │ └── vo.itarget ├── QArith │ ├── QArith.v │ ├── QArith_base.v │ ├── QOrderedType.v │ ├── Qabs.v │ ├── Qcanon.v │ ├── Qfield.v │ ├── Qminmax.v │ ├── Qpower.v │ ├── Qreals.v │ ├── Qreduction.v │ ├── Qring.v │ ├── Qround.v │ └── vo.itarget ├── Reals │ ├── Alembert.v │ ├── AltSeries.v │ ├── ArithProp.v │ ├── Binomial.v │ ├── Cauchy_prod.v │ ├── Cos_plus.v │ ├── Cos_rel.v │ ├── DiscrR.v │ ├── Exp_prop.v │ ├── Integration.v │ ├── MVT.v │ ├── Machin.v │ ├── NewtonInt.v │ ├── PSeries_reg.v │ ├── PartSum.v │ ├── RIneq.v │ ├── RList.v │ ├── ROrderedType.v │ ├── R_Ifp.v │ ├── R_sqr.v │ ├── R_sqrt.v │ ├── Ranalysis.v │ ├── Ranalysis1.v │ ├── Ranalysis2.v │ ├── Ranalysis3.v │ ├── Ranalysis4.v │ ├── Ranalysis5.v │ ├── Ranalysis_reg.v │ ├── Ratan.v │ ├── Raxioms.v │ ├── Rbase.v │ ├── Rbasic_fun.v │ ├── Rcomplete.v │ ├── Rdefinitions.v │ ├── Rderiv.v │ ├── Reals.v │ ├── Rfunctions.v │ ├── Rgeom.v │ ├── RiemannInt.v │ ├── RiemannInt_SF.v │ ├── Rlimit.v │ ├── Rlogic.v │ ├── Rminmax.v │ ├── Rpow_def.v │ ├── Rpower.v │ ├── Rprod.v │ ├── Rseries.v │ ├── Rsigma.v │ ├── Rsqrt_def.v │ ├── Rtopology.v │ ├── Rtrigo.v │ ├── Rtrigo1.v │ ├── Rtrigo_alt.v │ ├── Rtrigo_calc.v │ ├── Rtrigo_def.v │ ├── Rtrigo_fun.v │ ├── Rtrigo_reg.v │ ├── SeqProp.v │ ├── SeqSeries.v │ ├── SplitAbsolu.v │ ├── SplitRmult.v │ ├── Sqrt_reg.v │ ├── intro.tex │ └── vo.itarget ├── Relations │ ├── Operators_Properties.v │ ├── Relation_Definitions.v │ ├── Relation_Operators.v │ ├── Relations.v │ ├── intro.tex │ └── vo.itarget ├── Setoids │ ├── Setoid.v │ ├── intro.tex │ └── vo.itarget ├── Sets │ ├── Classical_sets.v │ ├── Constructive_sets.v │ ├── Cpo.v │ ├── Ensembles.v │ ├── Finite_sets.v │ ├── Finite_sets_facts.v │ ├── Image.v │ ├── Infinite_sets.v │ ├── Integers.v │ ├── Multiset.v │ ├── Partial_Order.v │ ├── Permut.v │ ├── Powerset.v │ ├── Powerset_Classical_facts.v │ ├── Powerset_facts.v │ ├── Relations_1.v │ ├── Relations_1_facts.v │ ├── Relations_2.v │ ├── Relations_2_facts.v │ ├── Relations_3.v │ ├── Relations_3_facts.v │ ├── Uniset.v │ ├── intro.tex │ └── vo.itarget ├── Sorting │ ├── Heap.v │ ├── Mergesort.v │ ├── PermutEq.v │ ├── PermutSetoid.v │ ├── Permutation.v │ ├── Sorted.v │ ├── Sorting.v │ ├── intro.tex │ └── vo.itarget ├── Strings │ ├── Ascii.v │ ├── String.v │ └── vo.itarget ├── Structures │ ├── DecidableType.v │ ├── DecidableTypeEx.v │ ├── Equalities.v │ ├── EqualitiesFacts.v │ ├── GenericMinMax.v │ ├── OrderedType.v │ ├── OrderedTypeAlt.v │ ├── OrderedTypeEx.v │ ├── Orders.v │ ├── OrdersAlt.v │ ├── OrdersEx.v │ ├── OrdersFacts.v │ ├── OrdersLists.v │ ├── OrdersTac.v │ └── vo.itarget ├── Unicode │ ├── Utf8.v │ ├── Utf8_core.v │ └── vo.itarget ├── Vectors │ ├── Fin.v │ ├── Vector.v │ ├── VectorDef.v │ ├── VectorEq.v │ ├── VectorSpec.v │ └── vo.itarget ├── Wellfounded │ ├── Disjoint_Union.v │ ├── Inclusion.v │ ├── Inverse_Image.v │ ├── Lexicographic_Exponentiation.v │ ├── Lexicographic_Product.v │ ├── Transitive_Closure.v │ ├── Union.v │ ├── Well_Ordering.v │ ├── Wellfounded.v │ ├── intro.tex │ └── vo.itarget ├── ZArith │ ├── BinInt.v │ ├── BinIntDef.v │ ├── Int.v │ ├── Wf_Z.v │ ├── ZArith.v │ ├── ZArith_base.v │ ├── ZArith_dec.v │ ├── Zabs.v │ ├── Zbool.v │ ├── Zcompare.v │ ├── Zcomplements.v │ ├── Zdigits.v │ ├── Zdiv.v │ ├── Zeuclid.v │ ├── Zeven.v │ ├── Zgcd_alt.v │ ├── Zhints.v │ ├── Zlogarithm.v │ ├── Zmax.v │ ├── Zmin.v │ ├── Zminmax.v │ ├── Zmisc.v │ ├── Znat.v │ ├── Znumtheory.v │ ├── Zorder.v │ ├── Zpow_alt.v │ ├── Zpow_def.v │ ├── Zpow_facts.v │ ├── Zpower.v │ ├── Zquot.v │ ├── Zsqrt_compat.v │ ├── Zwf.v │ ├── auxiliary.v │ ├── intro.tex │ └── vo.itarget └── theories.itarget ├── tools ├── README.coq-tex ├── README.emacs ├── beautify-archive ├── check-translate ├── compat5.ml ├── compat5.mlp ├── compat5b.ml ├── compat5b.mlp ├── coq-font-lock.el ├── coq-inferior.el ├── coq-sl.sty ├── coq_makefile.ml ├── coq_tex.ml ├── coqc.ml ├── coqdep.ml ├── coqdep_boot.ml ├── coqdep_common.ml ├── coqdep_common.mli ├── coqdep_lexer.mli ├── coqdep_lexer.mll ├── coqdoc │ ├── alpha.ml │ ├── alpha.mli │ ├── cdglobals.ml │ ├── coqdoc.css │ ├── coqdoc.sty │ ├── cpretty.mli │ ├── cpretty.mll │ ├── index.ml │ ├── index.mli │ ├── main.ml │ ├── output.ml │ ├── output.mli │ ├── style.css │ ├── tokens.ml │ └── tokens.mli ├── coqmktop.ml ├── coqwc.mll ├── coqworkmgr.ml ├── fake_ide.ml ├── gallina-db.el ├── gallina-syntax.el ├── gallina.el ├── gallina.ml ├── gallina_lexer.mll ├── mkwinapp.ml └── update-require └── toplevel ├── auto_ind_decl.ml ├── auto_ind_decl.mli ├── cerrors.ml ├── cerrors.mli ├── class.ml ├── class.mli ├── classes.ml ├── classes.mli ├── command.ml ├── command.mli ├── coqinit.ml ├── coqinit.mli ├── coqloop.ml ├── coqloop.mli ├── coqtop.ml ├── coqtop.mli ├── discharge.ml ├── discharge.mli ├── doc.tex ├── g_obligations.ml4 ├── himsg.ml ├── himsg.mli ├── ind_tables.ml ├── ind_tables.mli ├── indschemes.ml ├── indschemes.mli ├── locality.ml ├── locality.mli ├── metasyntax.ml ├── metasyntax.mli ├── mltop.ml ├── mltop.mli ├── obligations.ml ├── obligations.mli ├── record.ml ├── record.mli ├── search.ml ├── search.mli ├── toplevel.mllib ├── usage.ml ├── usage.mli ├── vernac.ml ├── vernac.mli ├── vernacentries.ml ├── vernacentries.mli ├── vernacinterp.ml ├── vernacinterp.mli ├── whelp.ml4 └── whelp.mli /.merlin: -------------------------------------------------------------------------------- 1 | FLG -rectypes 2 | 3 | S config 4 | B config 5 | S lib 6 | B lib 7 | S intf 8 | B intf 9 | S kernel 10 | B kernel 11 | S kernel/byterun 12 | B kernel/byterun 13 | S library 14 | B library 15 | S pretyping 16 | B pretyping 17 | S interp 18 | B interp 19 | S proofs 20 | B proofs 21 | S tactics 22 | B tactics 23 | S printing 24 | B printing 25 | S parsing 26 | B parsing 27 | S toplevel 28 | B toplevel 29 | 30 | S tools 31 | B tools 32 | S tools/coqdoc 33 | B tools/coqdoc 34 | S dev 35 | B dev 36 | -------------------------------------------------------------------------------- /checker/main.ml: -------------------------------------------------------------------------------- 1 | 2 | let _ = Checker.start () 3 | -------------------------------------------------------------------------------- /compile.sh: -------------------------------------------------------------------------------- 1 | make bin/coqtop && \ 2 | make init && \ 3 | bin/coqtop < input.v > stdout && \ 4 | tail -n +41 stdout > test.rs && \ 5 | rustc --crate-type=lib test.rs 6 | -------------------------------------------------------------------------------- /coq-win32.itarget: -------------------------------------------------------------------------------- 1 | binariesopt 2 | plugins/pluginsdyn.otarget 3 | -------------------------------------------------------------------------------- /coq.itarget: -------------------------------------------------------------------------------- 1 | # NB: for the moment we start with bytecode compilation 2 | # for early error detection in .ml 3 | binariesbyte 4 | plugins/pluginsbyte.otarget 5 | binariesopt 6 | plugins/pluginsopt.otarget 7 | theories/theories.otarget 8 | plugins/pluginsvo.otarget 9 | -------------------------------------------------------------------------------- /dev/base_db: -------------------------------------------------------------------------------- 1 | load_printer "gramlib.cma" 2 | load_printer "top_printers.cmo" 3 | install_printer Top_printers.prid 4 | install_printer Top_printers.prsp 5 | install_printer Top_printers.print_pure_constr 6 | 7 | -------------------------------------------------------------------------------- /dev/doc/transition-V5.10-V6: -------------------------------------------------------------------------------- 1 | The V5.10 archive has been created with cvs in February 1995 by 2 | Jean-Christophe Filliâtre. It was moved to archive V6 in March 1996. 3 | At this occasion, the contrib directory (user-contributions) were 4 | moved to a separate directory and some theories (like ALGEBRA) moved 5 | to the user-contributions directory too. 6 | -------------------------------------------------------------------------------- /dev/doc/transition-V6-V7: -------------------------------------------------------------------------------- 1 | The V6 archive has been created in March 1996 with files from the 2 | former V5.10 archive and has been abandoned in 2000. 3 | 4 | A new archive named V7 has been created in August 1999 by 5 | Jean-Christophe Filliâtre with a new architecture placing the 6 | type-checking at the kernel of Coq. This new architecture came with a 7 | "cleaner" organization of files, a uniform indentation style, uniform 8 | headers, etc. 9 | -------------------------------------------------------------------------------- /dev/header: -------------------------------------------------------------------------------- 1 | (************************************************************************) 2 | (* v * The Coq Proof Assistant / The Coq Development Team *) 3 | (* \(.*\)$/\1\2/ 3 | s/^;\{0,1\} *\(.*\)\(.*\)$/\1\2/ 4 | -------------------------------------------------------------------------------- /dev/set_raw_db: -------------------------------------------------------------------------------- 1 | install_printer Top_printers.ppconstrdb 2 | -------------------------------------------------------------------------------- /dev/tools/Makefile.common: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pirapira/coq2rust/22e8aaefc723bfb324ca2001b2b8e51fcc923543/dev/tools/Makefile.common -------------------------------------------------------------------------------- /dev/tools/Makefile.subdir: -------------------------------------------------------------------------------- 1 | # if you work in a sub/sub-rectory of Coq 2 | # you should make a link to that makefile 3 | # ln -s ../../dev/tools/Makefile.subdir Makefile 4 | # in order to have all the facilities of dev/tools/Makefile.dir 5 | 6 | TOPDIR=../.. 7 | include $(TOPDIR)/dev/tools/Makefile.dir 8 | -------------------------------------------------------------------------------- /doc/common/styles/html/simple/footer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /doc/common/styles/html/simple/header.html: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | 8 | 9 | The Coq Standard Library 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /doc/common/styles/html/simple/style.css: -------------------------------------------------------------------------------- 1 | #footer { 2 | border-top: solid black 1pt; 3 | text-align: center; 4 | text-indent: 0pt; 5 | } 6 | 7 | .menu { } 8 | .menu li { 9 | display: inline; 10 | margin: 0pt; 11 | padding: .5ex 1em; 12 | list-style: none 13 | } -------------------------------------------------------------------------------- /doc/faq/axioms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pirapira/coq2rust/22e8aaefc723bfb324ca2001b2b8e51fcc923543/doc/faq/axioms.png -------------------------------------------------------------------------------- /doc/refman/coqide-queries.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pirapira/coq2rust/22e8aaefc723bfb324ca2001b2b8e51fcc923543/doc/refman/coqide-queries.png -------------------------------------------------------------------------------- /doc/refman/coqide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pirapira/coq2rust/22e8aaefc723bfb324ca2001b2b8e51fcc923543/doc/refman/coqide.png -------------------------------------------------------------------------------- /doc/refman/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | The Coq Proof Assistant Reference Manual 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /doc/stdlib/hidden-files: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /doc/tools/show_latex_messages: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if [ "$1" = "-no-overfull" ]; then 4 | cat $2 | ../tools/latex_filter `cat $2 | wc -l` no 5 | else 6 | cat $1 | ../tools/latex_filter `cat $1 | wc -l` yes 7 | fi 8 | 9 | -------------------------------------------------------------------------------- /ide/.merlin: -------------------------------------------------------------------------------- 1 | PKG lablgtk2.sourceview2 2 | 3 | S utils 4 | B utils 5 | 6 | REC 7 | -------------------------------------------------------------------------------- /ide/MacOS/coqfile.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pirapira/coq2rust/22e8aaefc723bfb324ca2001b2b8e51fcc923543/ide/MacOS/coqfile.icns -------------------------------------------------------------------------------- /ide/MacOS/coqide.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pirapira/coq2rust/22e8aaefc723bfb324ca2001b2b8e51fcc923543/ide/MacOS/coqide.icns -------------------------------------------------------------------------------- /ide/MacOS/relatify_with-respect-to_.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -e 4 | 5 | for i in "$3/"*.dylib 6 | do install_name_tool -change "$2"/$(basename $i) @executable_path/../Resources/lib/$(basename $i) "$1" 7 | done 8 | case "$1" in 9 | *.dylib) 10 | install_name_tool -id @executable_path/../Resources/lib/$(basename $1) $1 11 | for i in "$3"/*.dylib 12 | do install_name_tool -change "$2/"$(basename $1) @executable_path/../Resources/lib/$(basename $1) $i 13 | done;; 14 | *) 15 | esac 16 | -------------------------------------------------------------------------------- /ide/coq.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pirapira/coq2rust/22e8aaefc723bfb324ca2001b2b8e51fcc923543/ide/coq.ico -------------------------------------------------------------------------------- /ide/coq.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pirapira/coq2rust/22e8aaefc723bfb324ca2001b2b8e51fcc923543/ide/coq.png -------------------------------------------------------------------------------- /ide/coq2.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pirapira/coq2rust/22e8aaefc723bfb324ca2001b2b8e51fcc923543/ide/coq2.ico -------------------------------------------------------------------------------- /ide/coq_icon.rc: -------------------------------------------------------------------------------- 1 | large ICON ide/coq.ico 2 | -------------------------------------------------------------------------------- /ide/coqidetop.mllib: -------------------------------------------------------------------------------- 1 | Xmlprotocol 2 | Ide_slave 3 | -------------------------------------------------------------------------------- /install.sh: -------------------------------------------------------------------------------- 1 | #! /bin/sh 2 | 3 | dest="$1" 4 | shift 5 | 6 | for f; do 7 | bn=`basename $f` 8 | dn=`dirname $f` 9 | install -d "$dest/$dn" 10 | case $bn in 11 | *.cmxs) install -m 755 $f "$dest/$dn/$bn" 12 | ;; 13 | *) install -m 644 $f "$dest/$dn/$bn" 14 | ;; 15 | esac 16 | done 17 | -------------------------------------------------------------------------------- /interp/doc.tex: -------------------------------------------------------------------------------- 1 | 2 | \newpage 3 | \section*{The interpretation of Coq front abstract syntax of terms} 4 | 5 | \ocwsection \label{interp} 6 | This chapter describes the translation from \Coq\ context-dependent 7 | front abstract syntax of terms (\verb=front=) to and from the 8 | context-free, untyped, globalized form of constructions (\verb=glob_constr=). 9 | 10 | The modules translating back and forth the front abstract syntax are 11 | organized as follows. 12 | 13 | \bigskip 14 | \begin{center}\epsfig{file=interp.dep.ps}\end{center} 15 | -------------------------------------------------------------------------------- /interp/interp.mllib: -------------------------------------------------------------------------------- 1 | Stdarg 2 | Constrarg 3 | Genintern 4 | Constrexpr_ops 5 | Notation_ops 6 | Topconstr 7 | Ppextend 8 | Notation 9 | Dumpglob 10 | Syntax_def 11 | Smartlocate 12 | Reserve 13 | Impargs 14 | Implicit_quantifiers 15 | Constrintern 16 | Modintern 17 | Constrextern 18 | Coqlib 19 | Discharge 20 | Declare 21 | -------------------------------------------------------------------------------- /kernel/byterun/libcoqrun.clib: -------------------------------------------------------------------------------- 1 | coq_fix_code.o 2 | coq_memory.o 3 | coq_values.o 4 | coq_interp.o 5 | -------------------------------------------------------------------------------- /kernel/doc.tex: -------------------------------------------------------------------------------- 1 | 2 | \newpage 3 | \section*{The Coq kernel} 4 | 5 | \ocwsection \label{kernel} 6 | This chapter describes the \Coq\ kernel, which is a type checker for the \CCI. 7 | The modules of the kernel are organized as follows. 8 | 9 | \bigskip 10 | \begin{center}\epsfig{file=kernel.dep.ps,width=\linewidth}\end{center} 11 | 12 | -------------------------------------------------------------------------------- /kernel/make-opcodes: -------------------------------------------------------------------------------- 1 | $1=="enum" {n=0; next; } 2 | {for (i = 1; i <= NF; i++) {printf("let op%s = %d\n", $i, n++);}} 3 | -------------------------------------------------------------------------------- /lib/clib.mllib: -------------------------------------------------------------------------------- 1 | Coq_config 2 | 3 | Terminal 4 | Canary 5 | Hook 6 | Hashset 7 | Hashcons 8 | CSet 9 | CMap 10 | Int 11 | HMap 12 | Option 13 | Store 14 | Exninfo 15 | Backtrace 16 | IArray 17 | IStream 18 | Pp_control 19 | Flags 20 | Control 21 | Loc 22 | Serialize 23 | Deque 24 | CObj 25 | CList 26 | CString 27 | CArray 28 | CStack 29 | Util 30 | Stateid 31 | Feedback 32 | Pp 33 | Xml_lexer 34 | Xml_parser 35 | Xml_printer 36 | Richpp 37 | CUnix 38 | Envars 39 | Aux_file 40 | Monad 41 | -------------------------------------------------------------------------------- /lib/doc.tex: -------------------------------------------------------------------------------- 1 | 2 | \newpage 3 | \section*{Utility libraries} 4 | 5 | \ocwsection \label{lib} 6 | This chapter describes the various utility libraries used in the code 7 | of \Coq. 8 | -------------------------------------------------------------------------------- /lib/lib.mllib: -------------------------------------------------------------------------------- 1 | Errors 2 | Bigint 3 | Dyn 4 | Segmenttree 5 | Unicodetable 6 | Unicode 7 | System 8 | CThread 9 | Spawn 10 | Trie 11 | Profile 12 | Explore 13 | Predicate 14 | Rtree 15 | Heap 16 | Unionfind 17 | Genarg 18 | Ephemeron 19 | Future 20 | RemoteCounter 21 | -------------------------------------------------------------------------------- /library/library.mllib: -------------------------------------------------------------------------------- 1 | Nameops 2 | Libnames 3 | Globnames 4 | Libobject 5 | Summary 6 | Nametab 7 | Global 8 | Universes 9 | Lib 10 | Declaremods 11 | Loadpath 12 | Library 13 | States 14 | Kindops 15 | Dischargedhypsmap 16 | Goptions 17 | Decls 18 | Heads 19 | Assumptions 20 | Keys 21 | -------------------------------------------------------------------------------- /man/coqtop.byte.1: -------------------------------------------------------------------------------- 1 | .TH COQ 1 "April 25, 2001" 2 | 3 | .SH NAME 4 | coqtop.byte \- The bytecode Coq toplevel 5 | 6 | 7 | .SH SYNOPSIS 8 | .B coqtop.byte 9 | [ 10 | .B options 11 | ] 12 | [ 13 | .I file 14 | ] 15 | 16 | .SH DESCRIPTION 17 | 18 | .B coqopt.byte 19 | is the bytecode version of Coq. It should not be called directly, but 20 | only by 21 | .B coqtop 22 | and 23 | .B coqc 24 | 25 | .SH SEE ALSO 26 | 27 | .BR coqtop (1), 28 | .BR coqc (1). 29 | .br 30 | .I 31 | The Coq Reference Manual. 32 | .I 33 | The Coq web site: http://coq.inria.fr 34 | 35 | 36 | -------------------------------------------------------------------------------- /man/coqtop.opt.1: -------------------------------------------------------------------------------- 1 | .TH COQ 1 "April 25, 2001" 2 | 3 | .SH NAME 4 | coqtop.opt \- The native-code Coq toplevel 5 | 6 | 7 | .SH SYNOPSIS 8 | .B coqopt.opt 9 | [ 10 | .B options 11 | ] 12 | [ 13 | .I file 14 | ] 15 | 16 | .SH DESCRIPTION 17 | 18 | .B coqopt.opt 19 | is the native-code version of Coq. It should not be called directly, but 20 | only by 21 | .B coqtop 22 | and 23 | .B coqc 24 | 25 | .SH SEE ALSO 26 | 27 | .BR coqtop (1), 28 | .BR coqc (1). 29 | .br 30 | .I 31 | The Coq Reference Manual. 32 | .I 33 | The Coq web site: http://coq.inria.fr 34 | 35 | 36 | -------------------------------------------------------------------------------- /parsing/doc.tex: -------------------------------------------------------------------------------- 1 | 2 | \newpage 3 | \section*{The Coq parsers and printers} 4 | 5 | \ocwsection \label{parsing} 6 | This chapter describes the implementation of the \Coq\ parsers and printers. 7 | 8 | \bigskip 9 | \begin{center}\epsfig{file=parsing.dep.ps}\end{center} 10 | -------------------------------------------------------------------------------- /parsing/highparsing.mllib: -------------------------------------------------------------------------------- 1 | G_constr 2 | G_vernac 3 | G_prim 4 | G_proofs 5 | G_tactic 6 | G_ltac 7 | G_obligations 8 | -------------------------------------------------------------------------------- /parsing/parsing.mllib: -------------------------------------------------------------------------------- 1 | Tok 2 | Compat 3 | Lexer 4 | Pcoq 5 | Egramml 6 | Egramcoq 7 | -------------------------------------------------------------------------------- /plugins/Derive/Derive.v: -------------------------------------------------------------------------------- 1 | Declare ML Module "derive_plugin". -------------------------------------------------------------------------------- /plugins/Derive/derive_plugin.mllib: -------------------------------------------------------------------------------- 1 | Derive 2 | G_derive 3 | -------------------------------------------------------------------------------- /plugins/Derive/vo.itarget: -------------------------------------------------------------------------------- 1 | Derive.vo -------------------------------------------------------------------------------- /plugins/btauto/Btauto.v: -------------------------------------------------------------------------------- 1 | Require Import Algebra Reflect. 2 | 3 | Declare ML Module "btauto_plugin". 4 | -------------------------------------------------------------------------------- /plugins/btauto/btauto_plugin.mllib: -------------------------------------------------------------------------------- 1 | Refl_btauto 2 | G_btauto 3 | Btauto_plugin_mod 4 | -------------------------------------------------------------------------------- /plugins/btauto/vo.itarget: -------------------------------------------------------------------------------- 1 | Algebra.vo 2 | Reflect.vo 3 | Btauto.vo 4 | -------------------------------------------------------------------------------- /plugins/cc/cc_plugin.mllib: -------------------------------------------------------------------------------- 1 | Ccalgo 2 | Ccproof 3 | Cctac 4 | G_congruence 5 | Cc_plugin_mod 6 | -------------------------------------------------------------------------------- /plugins/decl_mode/decl_mode_plugin.mllib: -------------------------------------------------------------------------------- 1 | Decl_mode 2 | Decl_interp 3 | Decl_proof_instr 4 | Ppdecl_proof 5 | G_decl_mode 6 | Decl_mode_plugin_mod 7 | -------------------------------------------------------------------------------- /plugins/decl_mode/ppdecl_proof.mli: -------------------------------------------------------------------------------- 1 | 2 | val pr_proof_instr : Environ.env -> Decl_expr.proof_instr -> Pp.std_ppcmds 3 | -------------------------------------------------------------------------------- /plugins/extraction/extraction_plugin.mllib: -------------------------------------------------------------------------------- 1 | Table 2 | Mlutil 3 | Modutil 4 | Extraction 5 | Common 6 | Ocaml 7 | Haskell 8 | Scheme 9 | Rust 10 | Extract_env 11 | G_extraction 12 | Extraction_plugin_mod 13 | -------------------------------------------------------------------------------- /plugins/extraction/rust.mli: -------------------------------------------------------------------------------- 1 | (* Yoichi Hirai, 2014 *) 2 | (* This file is distributed under the terms of the 3 | * GNU Lesser General Public License Version 2.1 *) 4 | 5 | val rust_descr : Miniml.language_descr 6 | -------------------------------------------------------------------------------- /plugins/extraction/vo.itarget: -------------------------------------------------------------------------------- 1 | ExtrOcamlBasic.vo 2 | ExtrOcamlIntConv.vo 3 | ExtrOcamlBigIntConv.vo 4 | ExtrOcamlNatInt.vo 5 | ExtrOcamlNatBigInt.vo 6 | ExtrOcamlZInt.vo 7 | ExtrOcamlZBigInt.vo 8 | ExtrOcamlString.vo -------------------------------------------------------------------------------- /plugins/firstorder/ground_plugin.mllib: -------------------------------------------------------------------------------- 1 | Formula 2 | Unify 3 | Sequent 4 | Rules 5 | Instances 6 | Ground 7 | G_ground 8 | Ground_plugin_mod 9 | -------------------------------------------------------------------------------- /plugins/fourier/fourier_plugin.mllib: -------------------------------------------------------------------------------- 1 | Fourier 2 | FourierR 3 | G_fourier 4 | Fourier_plugin_mod 5 | -------------------------------------------------------------------------------- /plugins/fourier/vo.itarget: -------------------------------------------------------------------------------- 1 | Fourier_util.vo 2 | Fourier.vo 3 | -------------------------------------------------------------------------------- /plugins/funind/indfun.mli: -------------------------------------------------------------------------------- 1 | open Misctypes 2 | 3 | val do_generate_principle : 4 | bool -> 5 | (Vernacexpr.fixpoint_expr * Vernacexpr.decl_notation list) list -> 6 | unit 7 | 8 | 9 | val functional_induction : 10 | bool -> 11 | Term.constr -> 12 | (Term.constr * Term.constr bindings) option -> 13 | Tacexpr.or_and_intro_pattern option -> 14 | Proof_type.goal Tacmach.sigma -> Proof_type.goal list Evd.sigma 15 | 16 | 17 | val make_graph : Globnames.global_reference -> unit 18 | -------------------------------------------------------------------------------- /plugins/funind/merge.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pirapira/coq2rust/22e8aaefc723bfb324ca2001b2b8e51fcc923543/plugins/funind/merge.ml -------------------------------------------------------------------------------- /plugins/funind/recdef_plugin.mllib: -------------------------------------------------------------------------------- 1 | Indfun_common 2 | Glob_termops 3 | Recdef 4 | Glob_term_to_relation 5 | Functional_principles_proofs 6 | Functional_principles_types 7 | Invfun 8 | Indfun 9 | Merge 10 | G_indfun 11 | Recdef_plugin_mod 12 | -------------------------------------------------------------------------------- /plugins/funind/vo.itarget: -------------------------------------------------------------------------------- 1 | Recdef.vo 2 | -------------------------------------------------------------------------------- /plugins/micromega/micromega_plugin.mllib: -------------------------------------------------------------------------------- 1 | Sos_types 2 | Mutils 3 | Micromega 4 | Polynomial 5 | Mfourier 6 | Certificate 7 | Persistent_cache 8 | Coq_micromega 9 | G_micromega 10 | Micromega_plugin_mod 11 | -------------------------------------------------------------------------------- /plugins/micromega/vo.itarget: -------------------------------------------------------------------------------- 1 | EnvRing.vo 2 | Env.vo 3 | OrderedRing.vo 4 | Psatz.vo 5 | QMicromega.vo 6 | Refl.vo 7 | RingMicromega.vo 8 | RMicromega.vo 9 | Tauto.vo 10 | VarMap.vo 11 | ZCoeff.vo 12 | ZMicromega.vo 13 | Lia.vo -------------------------------------------------------------------------------- /plugins/nsatz/nsatz_plugin.mllib: -------------------------------------------------------------------------------- 1 | Utile 2 | Polynom 3 | Ideal 4 | Nsatz 5 | Nsatz_plugin_mod 6 | -------------------------------------------------------------------------------- /plugins/nsatz/vo.itarget: -------------------------------------------------------------------------------- 1 | Nsatz.vo 2 | -------------------------------------------------------------------------------- /plugins/omega/omega_plugin.mllib: -------------------------------------------------------------------------------- 1 | Omega 2 | Coq_omega 3 | G_omega 4 | Omega_plugin_mod 5 | -------------------------------------------------------------------------------- /plugins/omega/vo.itarget: -------------------------------------------------------------------------------- 1 | OmegaLemmas.vo 2 | OmegaPlugin.vo 3 | Omega.vo 4 | PreOmega.vo 5 | -------------------------------------------------------------------------------- /plugins/plugins.itarget: -------------------------------------------------------------------------------- 1 | pluginsopt.otarget 2 | pluginsbyte.otarget 3 | pluginsvo.otarget -------------------------------------------------------------------------------- /plugins/pluginsvo.itarget: -------------------------------------------------------------------------------- 1 | btauto/vo.otarget 2 | fourier/vo.otarget 3 | funind/vo.otarget 4 | nsatz/vo.otarget 5 | micromega/vo.otarget 6 | omega/vo.otarget 7 | quote/vo.otarget 8 | romega/vo.otarget 9 | rtauto/vo.otarget 10 | setoid_ring/vo.otarget 11 | extraction/vo.otarget 12 | Derive/vo.otarget -------------------------------------------------------------------------------- /plugins/quote/quote_plugin.mllib: -------------------------------------------------------------------------------- 1 | Quote 2 | G_quote 3 | Quote_plugin_mod 4 | -------------------------------------------------------------------------------- /plugins/quote/vo.itarget: -------------------------------------------------------------------------------- 1 | Quote.vo -------------------------------------------------------------------------------- /plugins/romega/README: -------------------------------------------------------------------------------- 1 | This work was done for the RNRT Project Calife. 2 | As such it is distributed under the LGPL licence. 3 | 4 | Report bugs to : 5 | pierre.cregut@francetelecom.com 6 | 7 | -------------------------------------------------------------------------------- /plugins/romega/ROmega.v: -------------------------------------------------------------------------------- 1 | (************************************************************************* 2 | 3 | PROJET RNRT Calife - 2001 4 | Author: Pierre Crégut - France Télécom R&D 5 | Licence : LGPL version 2.1 6 | 7 | *************************************************************************) 8 | 9 | Require Import ReflOmegaCore. 10 | Require Export Setoid. 11 | Require Export PreOmega. 12 | Require Export ZArith_base. 13 | Require Import OmegaPlugin. 14 | Declare ML Module "romega_plugin". -------------------------------------------------------------------------------- /plugins/romega/romega_plugin.mllib: -------------------------------------------------------------------------------- 1 | Const_omega 2 | Refl_omega 3 | G_romega 4 | Romega_plugin_mod 5 | -------------------------------------------------------------------------------- /plugins/romega/vo.itarget: -------------------------------------------------------------------------------- 1 | ReflOmegaCore.vo 2 | ROmega.vo 3 | -------------------------------------------------------------------------------- /plugins/rtauto/rtauto_plugin.mllib: -------------------------------------------------------------------------------- 1 | Proof_search 2 | Refl_tauto 3 | G_rtauto 4 | Rtauto_plugin_mod 5 | -------------------------------------------------------------------------------- /plugins/rtauto/vo.itarget: -------------------------------------------------------------------------------- 1 | Bintree.vo 2 | Rtauto.vo 3 | -------------------------------------------------------------------------------- /plugins/setoid_ring/Rings_Z.v: -------------------------------------------------------------------------------- 1 | Require Export Cring. 2 | Require Export Integral_domain. 3 | Require Export Ncring_initial. 4 | Require Export Omega. 5 | 6 | Instance Zcri: (Cring (Rr:=Zr)). 7 | red. exact Z.mul_comm. Defined. 8 | 9 | Lemma Z_one_zero: 1%Z <> 0%Z. 10 | omega. 11 | Qed. 12 | 13 | Instance Zdi : (Integral_domain (Rcr:=Zcri)). 14 | constructor. 15 | exact Zmult_integral. exact Z_one_zero. Defined. 16 | -------------------------------------------------------------------------------- /plugins/setoid_ring/newring_plugin.mllib: -------------------------------------------------------------------------------- 1 | Newring 2 | Newring_plugin_mod 3 | -------------------------------------------------------------------------------- /plugins/setoid_ring/vo.itarget: -------------------------------------------------------------------------------- 1 | ArithRing.vo 2 | BinList.vo 3 | Field_tac.vo 4 | Field_theory.vo 5 | Field.vo 6 | InitialRing.vo 7 | NArithRing.vo 8 | RealField.vo 9 | Ring_base.vo 10 | Ring_polynom.vo 11 | Ring_tac.vo 12 | Ring_theory.vo 13 | Ring.vo 14 | ZArithRing.vo 15 | Algebra_syntax.vo 16 | Cring.vo 17 | Ncring.vo 18 | Ncring_polynom.vo 19 | Ncring_initial.vo 20 | Ncring_tac.vo 21 | Rings_Z.vo 22 | Rings_R.vo 23 | Rings_Q.vo 24 | Integral_domain.vo -------------------------------------------------------------------------------- /plugins/syntax/ascii_syntax_plugin.mllib: -------------------------------------------------------------------------------- 1 | Ascii_syntax 2 | Ascii_syntax_plugin_mod 3 | -------------------------------------------------------------------------------- /plugins/syntax/nat_syntax_plugin.mllib: -------------------------------------------------------------------------------- 1 | Nat_syntax 2 | Nat_syntax_plugin_mod 3 | -------------------------------------------------------------------------------- /plugins/syntax/numbers_syntax_plugin.mllib: -------------------------------------------------------------------------------- 1 | Numbers_syntax 2 | Numbers_syntax_plugin_mod 3 | -------------------------------------------------------------------------------- /plugins/syntax/r_syntax_plugin.mllib: -------------------------------------------------------------------------------- 1 | R_syntax 2 | R_syntax_plugin_mod 3 | -------------------------------------------------------------------------------- /plugins/syntax/string_syntax_plugin.mllib: -------------------------------------------------------------------------------- 1 | String_syntax 2 | String_syntax_plugin_mod 3 | -------------------------------------------------------------------------------- /plugins/syntax/z_syntax_plugin.mllib: -------------------------------------------------------------------------------- 1 | Z_syntax 2 | Z_syntax_plugin_mod 3 | -------------------------------------------------------------------------------- /pretyping/doc.tex: -------------------------------------------------------------------------------- 1 | 2 | \newpage 3 | \section*{Pre-typing} 4 | 5 | \ocwsection \label{pretyping} 6 | 7 | \bigskip 8 | \begin{center}\epsfig{file=pretyping.dep.ps,width=\linewidth}\end{center} 9 | 10 | 11 | %%% Local Variables: 12 | %%% mode: latex 13 | %%% TeX-master: t 14 | %%% End: 15 | -------------------------------------------------------------------------------- /pretyping/pretyping.mllib: -------------------------------------------------------------------------------- 1 | Locusops 2 | Termops 3 | Namegen 4 | Evd 5 | Reductionops 6 | Vnorm 7 | Inductiveops 8 | Arguments_renaming 9 | Nativenorm 10 | Retyping 11 | Cbv 12 | Pretype_errors 13 | Find_subterm 14 | Evarutil 15 | Evarsolve 16 | Recordops 17 | Evarconv 18 | Typing 19 | Miscops 20 | Glob_ops 21 | Redops 22 | Patternops 23 | ConstrMatching 24 | Tacred 25 | Typeclasses_errors 26 | Typeclasses 27 | Classops 28 | Program 29 | Coercion 30 | Detyping 31 | Indrec 32 | Cases 33 | Pretyping 34 | Unification 35 | -------------------------------------------------------------------------------- /printing/printing.mllib: -------------------------------------------------------------------------------- 1 | Genprint 2 | Pputils 3 | Ppstyle 4 | Ppannotation 5 | Ppconstr 6 | Ppconstrsig 7 | Printer 8 | Pptactic 9 | Pptacticsig 10 | Printmod 11 | Prettyp 12 | Ppvernac 13 | Ppvernacsig 14 | Richprinter 15 | -------------------------------------------------------------------------------- /proofs/doc.tex: -------------------------------------------------------------------------------- 1 | 2 | \newpage 3 | \section*{The Proof Engine} 4 | 5 | \ocwsection \label{proofs} 6 | This chapter describes the \Coq\ proof engine, which is also called 7 | the ``refiner'', since it provides a way to build terms by successive 8 | refining steps. Those steps are either primitive rules or higher-level 9 | tactics. 10 | The modules of the proof engine are organized as follows. 11 | 12 | \bigskip 13 | \begin{center}\epsfig{file=proofs.dep.ps,width=\linewidth}\end{center} 14 | 15 | -------------------------------------------------------------------------------- /proofs/proofs.mllib: -------------------------------------------------------------------------------- 1 | Miscprint 2 | Goal 3 | Evar_refiner 4 | Proof_using 5 | Proof_type 6 | Proof_errors 7 | Logic_monad 8 | Proofview_monad 9 | Logic 10 | Proofview 11 | Proof 12 | Proof_global 13 | Redexpr 14 | Refiner 15 | Tacmach 16 | Pfedit 17 | Tactic_debug 18 | Clenv 19 | Clenvtac 20 | -------------------------------------------------------------------------------- /stm/proofworkertop.mllib: -------------------------------------------------------------------------------- 1 | Proofworkertop 2 | -------------------------------------------------------------------------------- /stm/queryworkertop.mllib: -------------------------------------------------------------------------------- 1 | Queryworkertop 2 | -------------------------------------------------------------------------------- /stm/stm.mllib: -------------------------------------------------------------------------------- 1 | Spawned 2 | Dag 3 | Vcs 4 | TQueue 5 | WorkerPool 6 | Vernac_classifier 7 | Lemmas 8 | CoqworkmgrApi 9 | AsyncTaskQueue 10 | Texmacspp 11 | Stm 12 | Vi_checking 13 | -------------------------------------------------------------------------------- /stm/tacworkertop.mllib: -------------------------------------------------------------------------------- 1 | Tacworkertop 2 | -------------------------------------------------------------------------------- /tactics/doc.tex: -------------------------------------------------------------------------------- 1 | 2 | \newpage 3 | \section*{The Tactics} 4 | 5 | \ocwsection \label{tactics} 6 | This chapter describes the \Coq\ main tactics. 7 | The modules of that chapter are organized as follows. 8 | 9 | \bigskip 10 | \begin{center}\epsfig{file=tactics.dep.ps,width=\linewidth}\end{center} 11 | 12 | -------------------------------------------------------------------------------- /tactics/hightactics.mllib: -------------------------------------------------------------------------------- 1 | Extraargs 2 | Coretactics 3 | Extratactics 4 | Eauto 5 | Class_tactics 6 | G_class 7 | Rewrite 8 | G_rewrite 9 | Tauto 10 | Eqdecide 11 | G_eqdecide 12 | -------------------------------------------------------------------------------- /tactics/tactics.mllib: -------------------------------------------------------------------------------- 1 | Ftactic 2 | Geninterp 3 | Dnet 4 | Dn 5 | Btermdn 6 | Tacticals 7 | Hipattern 8 | Ind_tables 9 | Eqschemes 10 | Elimschemes 11 | Tactics 12 | Elim 13 | Equality 14 | Contradiction 15 | Inv 16 | Leminv 17 | Tacsubst 18 | Taccoerce 19 | Tacenv 20 | Hints 21 | Auto 22 | Tacintern 23 | TacticMatching 24 | Tacinterp 25 | Evar_tactics 26 | Term_dnet 27 | Autorewrite 28 | Tactic_option 29 | -------------------------------------------------------------------------------- /test-suite/bugs/2428.v: -------------------------------------------------------------------------------- 1 | Axiom P : nat -> Prop. 2 | 3 | Definition myFact := forall x, P x. 4 | 5 | Hint Extern 1 (P _) => progress (unfold myFact in *). 6 | 7 | Lemma test : (True -> myFact) -> P 3. 8 | Proof. 9 | intros. debug eauto. 10 | Qed. 11 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1100.v: -------------------------------------------------------------------------------- 1 | Require Import Setoid. 2 | 3 | Parameter P : nat -> Prop. 4 | Parameter Q : nat -> Prop. 5 | Parameter PQ : forall n, P n <-> Q n. 6 | 7 | Lemma PQ2 : forall n, P n -> Q n. 8 | intros. 9 | rewrite PQ in H. 10 | trivial. 11 | Qed. 12 | 13 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/121.v: -------------------------------------------------------------------------------- 1 | Require Import Setoid. 2 | 3 | Section Setoid_Bug. 4 | 5 | Variable X:Type -> Type. 6 | Variable Xeq : forall A, (X A) -> (X A) -> Prop. 7 | Hypothesis Xst : forall A, Equivalence (Xeq A). 8 | 9 | Variable map : forall A B, (A -> B) -> X A -> X B. 10 | 11 | Implicit Arguments map [A B]. 12 | 13 | Goal forall A B (a b:X (B -> A)) (c:X A) (f:A -> B -> A), Xeq _ a b -> Xeq _ b (map f c) -> Xeq _ a (map f c). 14 | intros A B a b c f Hab Hbc. 15 | rewrite Hab. 16 | assumption. 17 | Qed. 18 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1243.v: -------------------------------------------------------------------------------- 1 | Require Import ZArith. 2 | Require Import Arith. 3 | Open Scope Z_scope. 4 | 5 | Theorem r_ex : (forall x y:nat, x + y = x + y)%nat. 6 | Admitted. 7 | 8 | Theorem r_ex' : forall x y:nat, (x + y = x + y)%nat. 9 | Admitted. 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1302.v: -------------------------------------------------------------------------------- 1 | Module Type T. 2 | 3 | Parameter A : Type. 4 | 5 | Inductive L : Type := 6 | | L0 : L (* without this constructor, it works right *) 7 | | L1 : A -> L. 8 | 9 | End T. 10 | 11 | Axiom Tp : Type. 12 | 13 | Module TT : T. 14 | 15 | Definition A : Type := Tp. 16 | 17 | Inductive L : Type := 18 | | L0 : L 19 | | L1 : A -> L. 20 | 21 | End TT. 22 | 23 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1419.v: -------------------------------------------------------------------------------- 1 | Goal True. 2 | set(a := 0). 3 | set(b := a). 4 | unfold a in b. 5 | clear a. 6 | Eval vm_compute in b. 7 | trivial. 8 | Qed. 9 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1446.v: -------------------------------------------------------------------------------- 1 | Lemma not_true_eq_false : forall (b:bool), b <> true -> b = false. 2 | Proof. 3 | destruct b;intros;trivial. 4 | elim H. 5 | exact (refl_equal true). 6 | Qed. 7 | 8 | Section BUG. 9 | 10 | Variable b : bool. 11 | Hypothesis H : b <> true. 12 | Hypothesis H0 : b = true. 13 | Hypothesis H1 : b <> true. 14 | 15 | Goal False. 16 | rewrite (not_true_eq_false _ H) in * |-. 17 | contradiction. 18 | Qed. 19 | 20 | End BUG. 21 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1477.v: -------------------------------------------------------------------------------- 1 | Inductive I : Set := 2 | | A : nat -> nat -> I 3 | | B : nat -> nat -> I. 4 | 5 | Definition foo1 (x:I) : nat := 6 | match x with 7 | | A a b | B a b => S b 8 | end. 9 | 10 | Definition foo2 (x:I) : nat := 11 | match x with 12 | | A _ b | B b _ => S b 13 | end. 14 | 15 | Definition foo (x:I) : nat := 16 | match x with 17 | | A a b | B b a => S b 18 | end. 19 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1483.v: -------------------------------------------------------------------------------- 1 | Require Import BinPos. 2 | 3 | Definition P := (fun x : positive => x = xH). 4 | 5 | Goal forall (p q : positive), P q -> q = p -> P p. 6 | intros; congruence. 7 | Qed. 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1519.v: -------------------------------------------------------------------------------- 1 | Section S. 2 | 3 | Variable A:Prop. 4 | Variable W:A. 5 | 6 | Remark T: A -> A. 7 | intro Z. 8 | rename W into Z_. 9 | rename Z into W. 10 | rename Z_ into Z. 11 | exact Z. 12 | Qed. 13 | 14 | (* bug : 15 | Error: 16 | Unbound reference: In environment 17 | A : Prop 18 | W : A 19 | Z : A 20 | The reference 2 is free 21 | *) 22 | 23 | End S. 24 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1568.v: -------------------------------------------------------------------------------- 1 | CoInductive A: Set := 2 | mk_A: B -> A 3 | with B: Set := 4 | mk_B: A -> B. 5 | 6 | CoFixpoint a:A := mk_A b 7 | with b:B := mk_B a. 8 | 9 | Goal b = match a with mk_A a1 => a1 end. 10 | simpl. reflexivity. 11 | Qed. 12 | 13 | 14 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1582.v: -------------------------------------------------------------------------------- 1 | Require Import Peano_dec. 2 | 3 | Definition fact_F : 4 | forall (n:nat), 5 | (forall m, m nat) -> 6 | nat. 7 | refine 8 | (fun n fact_rec => 9 | if eq_nat_dec n 0 then 10 | 1 11 | else 12 | let fn := fact_rec (n-1) _ in 13 | n * fn). 14 | Admitted. 15 | 16 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1604.v: -------------------------------------------------------------------------------- 1 | Require Import Setoid. 2 | 3 | Parameter F : nat -> nat. 4 | Axiom F_id : forall n : nat, n = F n. 5 | Goal forall n : nat, F n = n. 6 | intro n. setoid_rewrite F_id at 3. reflexivity. 7 | Qed. 8 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1618.v: -------------------------------------------------------------------------------- 1 | Inductive A: Set := 2 | | A1: nat -> A. 3 | 4 | Definition A_size (a: A) : nat := 5 | match a with 6 | | A1 n => 0 7 | end. 8 | 9 | Require Import Recdef. 10 | 11 | Function n3 (P: A -> Prop) (f: forall n, P (A1 n)) (a: A) {struct a} : P a := 12 | match a return (P a) with 13 | | A1 n => f n 14 | end. 15 | 16 | 17 | Function n1 (P: A -> Prop) (f: forall n, P (A1 n)) (a: A) {measure A_size a} : 18 | P 19 | a := 20 | match a return (P a) with 21 | | A1 n => f n 22 | end. 23 | 24 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1680.v: -------------------------------------------------------------------------------- 1 | Ltac int1 := let h := fresh in intro h. 2 | 3 | Goal nat -> nat -> True. 4 | let h' := fresh in (let h := fresh in intro h); intro h'. 5 | Restart. let h' := fresh in int1; intro h'. 6 | trivial. 7 | Qed. 8 | 9 | 10 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1696.v: -------------------------------------------------------------------------------- 1 | Require Import Setoid. 2 | 3 | Inductive mynat := z : mynat | s : mynat -> mynat. 4 | 5 | Parameter E : mynat -> mynat -> Prop. 6 | Axiom E_equiv : equiv mynat E. 7 | 8 | Add Relation mynat E 9 | reflexivity proved by (proj1 E_equiv) 10 | symmetry proved by (proj2 (proj2 E_equiv)) 11 | transitivity proved by (proj1 (proj2 E_equiv)) 12 | as E_rel. 13 | 14 | Notation "x == y" := (E x y) (at level 70). 15 | 16 | Goal z == s z -> s z == z. intros H. setoid_rewrite H at 2. reflexivity. Qed. 17 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1703.v: -------------------------------------------------------------------------------- 1 | (* Check correct binding of intros until used in Ltac *) 2 | 3 | Ltac intros_until n := intros until n. 4 | 5 | Goal forall i j m n : nat, i = 0 /\ j = 0 /\ m = 0 /\ n = 0. 6 | intro i. 7 | Fail intros until i. 8 | Abort. 9 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1704.v: -------------------------------------------------------------------------------- 1 | 2 | Require Import Setoid. 3 | Parameter E : nat -> nat -> Prop. 4 | Axiom E_equiv : equiv nat E. 5 | Add Relation nat E 6 | reflexivity proved by (proj1 E_equiv) 7 | symmetry proved by (proj2 (proj2 E_equiv)) 8 | transitivity proved by (proj1 (proj2 E_equiv)) 9 | as E_rel. 10 | Notation "x == y" := (E x y) (at level 70, no associativity). 11 | Axiom r : False -> 0 == 1. 12 | Goal 0 == 0. 13 | Proof. 14 | rewrite r. 15 | reflexivity. 16 | admit. 17 | Qed. 18 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1718.v: -------------------------------------------------------------------------------- 1 | (* lazy delta unfolding used to miss delta on rels and vars (fixed in 10172) *) 2 | 3 | Check 4 | let g := fun _ => 0 in 5 | fix f (n : nat) := 6 | match n with 7 | | 0 => g f 8 | | S n' => 0 9 | end. 10 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1773.v: -------------------------------------------------------------------------------- 1 | (* An occur-check test was done too early *) 2 | 3 | Goal forall B C : nat -> nat -> Prop, forall k, 4 | (exists A, (forall k', C A k' -> B A k') -> B A k). 5 | Proof. 6 | intros B C k. 7 | econstructor. 8 | intros X. 9 | apply X. (* used to fail here *) 10 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1780.v: -------------------------------------------------------------------------------- 1 | 2 | Definition bug := Eval vm_compute in eq_rect. 3 | (* bug: 4 | Error: Illegal application (Type Error): 5 | The term "eq" of type "forall A : Type, A -> A -> Prop" 6 | cannot be applied to the terms 7 | "x" : "A" 8 | "P" : "A -> Type" 9 | "x0" : "A" 10 | The 1st term has type "A" which should be coercible to 11 | "Type". 12 | *) 13 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1787.v: -------------------------------------------------------------------------------- 1 | Parameter P : nat -> nat -> Prop. 2 | Parameter Q : nat -> nat -> Prop. 3 | Axiom A : forall x x' x'', P x x' -> Q x'' x' -> P x x''. 4 | 5 | Goal (P 1 3) -> (Q 1 3) -> (P 1 1). 6 | intros H H'. 7 | refine ((fun H1 : P 1 _ => let H2 := (_:Q 1 _) in A _ _ _ H1 H2) _). 8 | clear. 9 | Admitted. 10 | 11 | 12 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1865.v: -------------------------------------------------------------------------------- 1 | (* Check that tactics (here dependent inversion) do not generate 2 | conversion problems T <= U with sup's of universes in U *) 3 | 4 | (* Submitted by David Nowak *) 5 | 6 | Inductive list (A:Set) : nat -> Set := 7 | | nil : list A O 8 | | cons : forall n, A -> list A n -> list A (S n). 9 | 10 | Definition f (n:nat) : Type := 11 | match n with 12 | | O => bool 13 | | _ => unit 14 | end. 15 | 16 | Goal forall A n, list A n -> f n. 17 | intros A n. 18 | dependent inversion n. 19 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1891.v: -------------------------------------------------------------------------------- 1 | (* Check evar-evar unification *) 2 | Inductive T (A: Set): Set := mkT: unit -> T A. 3 | 4 | Definition f (A: Set) (l: T A): unit := tt. 5 | 6 | Implicit Arguments f [A]. 7 | 8 | Lemma L (x: T unit): (unit -> T unit) -> unit. 9 | Proof. 10 | refine (match x return _ with mkT _ n => fun g => f (g _) end). 11 | trivial. 12 | Qed. 13 | 14 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1898.v: -------------------------------------------------------------------------------- 1 | (* folding should not allow circular dependencies *) 2 | 3 | Lemma bug_fold_unfold : True. 4 | set (h := 1). 5 | Fail fold h in h. 6 | Abort. 7 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1900.v: -------------------------------------------------------------------------------- 1 | Parameter A : Type . 2 | 3 | Definition eq_A := @eq A. 4 | 5 | Goal forall x, eq_A x x. 6 | intros. 7 | reflexivity. 8 | Qed. -------------------------------------------------------------------------------- /test-suite/bugs/closed/1901.v: -------------------------------------------------------------------------------- 1 | Require Import Relations. 2 | 3 | Record Poset{A:Type}(Le : relation A) : Type := 4 | Build_Poset 5 | { 6 | Le_refl : forall x : A, Le x x; 7 | Le_trans : forall x y z : A, Le x y -> Le y z -> Le x z; 8 | Le_antisym : forall x y : A, Le x y -> Le y x -> x = y }. 9 | 10 | Definition nat_Poset : Poset Peano.le. 11 | Admitted. -------------------------------------------------------------------------------- /test-suite/bugs/closed/1905.v: -------------------------------------------------------------------------------- 1 | 2 | Require Import Setoid Program. 3 | 4 | Axiom t : Set. 5 | Axiom In : nat -> t -> Prop. 6 | Axiom InE : forall (x : nat) (s:t), impl (In x s) True. 7 | 8 | Goal forall a s, 9 | In a s -> False. 10 | Proof. 11 | intros a s Ia. 12 | rewrite InE in Ia. 13 | Admitted. -------------------------------------------------------------------------------- /test-suite/bugs/closed/1907.v: -------------------------------------------------------------------------------- 1 | (* An example of type inference *) 2 | 3 | Axiom A : Type. 4 | Definition f (x y : A) := x. 5 | Axiom g : forall x y : A, f x y = y -> Prop. 6 | Axiom x : A. 7 | Check (g x _ (refl_equal x)). 8 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1912.v: -------------------------------------------------------------------------------- 1 | Require Import ZArith. 2 | 3 | Goal forall x, Z.succ (Z.pred x) = x. 4 | intros x. 5 | omega. 6 | Qed. 7 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1915.v: -------------------------------------------------------------------------------- 1 | 2 | Require Import Setoid. 3 | 4 | Fail Goal forall x, impl True (x = 0) -> x = 0 -> False. 5 | (*intros x H E. 6 | rewrite H in E.*) -------------------------------------------------------------------------------- /test-suite/bugs/closed/1935.v: -------------------------------------------------------------------------------- 1 | Definition f (n:nat) := n = n. 2 | 3 | Lemma f_refl : forall n , f n. 4 | intros. reflexivity. 5 | Qed. 6 | 7 | Definition f' (x:nat) (n:nat) := n = n. 8 | 9 | Lemma f_refl' : forall n , f' n n. 10 | Proof. 11 | intros. reflexivity. 12 | Qed. 13 | 14 | Require Import ZArith. 15 | 16 | Definition f'' (a:bool) := if a then eq (A:= Z) else Z.lt. 17 | 18 | Lemma f_refl'' : forall n , f'' true n n. 19 | Proof. 20 | intro. reflexivity. 21 | Qed. 22 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1939.v: -------------------------------------------------------------------------------- 1 | Require Import Setoid Program.Basics. 2 | 3 | Parameter P : nat -> Prop. 4 | Parameter R : nat -> nat -> Prop. 5 | 6 | Add Parametric Morphism : P 7 | with signature R ++> impl as PM1. 8 | Admitted. 9 | 10 | Add Parametric Morphism : P 11 | with signature R --> impl as PM2. 12 | Admitted. 13 | 14 | Goal forall x y, R x y -> P y -> P x. 15 | Proof. 16 | intros x y H1 H2. 17 | rewrite H1. 18 | auto. 19 | Qed. -------------------------------------------------------------------------------- /test-suite/bugs/closed/1944.v: -------------------------------------------------------------------------------- 1 | (* Test some uses of ? in introduction patterns *) 2 | 3 | Inductive J : nat -> Prop := 4 | | K : forall p, J p -> (True /\ True) -> J (S p). 5 | 6 | Lemma bug : forall n, J n -> J (S n). 7 | Proof. 8 | intros ? H. 9 | induction H as [? ? [? ?]]. 10 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1977.v: -------------------------------------------------------------------------------- 1 | Inductive T {A} : Prop := c : A -> T. 2 | Goal (@T nat). 3 | apply c. exact 0. 4 | Qed. 5 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/1981.v: -------------------------------------------------------------------------------- 1 | Implicit Arguments ex_intro [A]. 2 | 3 | Goal exists n : nat, True. 4 | eapply ex_intro. exact 0. exact I. 5 | Qed. 6 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2001.v: -------------------------------------------------------------------------------- 1 | (* Automatic computing of guard in "Theorem with"; check that guard is not 2 | computed when the user explicitly indicated it *) 3 | 4 | Unset Automatic Introduction. 5 | 6 | Inductive T : Set := 7 | | v : T. 8 | 9 | Definition f (s:nat) (t:T) : nat. 10 | fix 2. 11 | intros s t. 12 | refine 13 | match t with 14 | | v => s 15 | end. 16 | Defined. 17 | 18 | Lemma test : 19 | forall s, f s v = s. 20 | Proof. 21 | reflexivity. 22 | Qed. 23 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2017.v: -------------------------------------------------------------------------------- 1 | (* Some check of Miller's pattern inference - used to fail in 8.2 due 2 | first to the presence of aliases, secondly due to the absence of 3 | restriction of the potential interesting variables to the subset of 4 | variables effectively occurring in the term to instantiate *) 5 | 6 | Set Implicit Arguments. 7 | 8 | Variable choose : forall(P : bool -> Prop)(H : exists x, P x), bool. 9 | 10 | Variable H : exists x : bool, True. 11 | 12 | Definition coef := 13 | match Some true with 14 | Some _ => @choose _ H |_ => true 15 | end . 16 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2027.v: -------------------------------------------------------------------------------- 1 | 2 | Parameter T : Type -> Type. 3 | Parameter f : forall {A}, T A -> T A. 4 | Parameter P : forall {A}, T A -> Prop. 5 | Axiom f_id : forall {A} (l : T A), f l = l. 6 | 7 | Goal forall A (p : T A), P p. 8 | Proof. 9 | intros. 10 | rewrite <- f_id. 11 | Admitted. -------------------------------------------------------------------------------- /test-suite/bugs/closed/2095.v: -------------------------------------------------------------------------------- 1 | (* Classes and sections *) 2 | 3 | Section OPT. 4 | Variable A: Type. 5 | 6 | Inductive MyOption: Type := 7 | | MyNone: MyOption 8 | | MySome: A -> MyOption. 9 | 10 | Class Opt: Type := { 11 | f_opt: A -> MyOption 12 | }. 13 | End OPT. 14 | 15 | Definition f_nat (n: nat): MyOption nat := MySome _ n. 16 | 17 | Instance Nat_Opt: Opt nat := { 18 | f_opt := f_nat 19 | }. 20 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2105.v: -------------------------------------------------------------------------------- 1 | 2 | Definition id (T:Type) := Eval vm_compute in T. 3 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2108.v: -------------------------------------------------------------------------------- 1 | (* Declare Module in Module Type *) 2 | Module Type A. 3 | Record t : Set := { something : unit }. 4 | End A. 5 | 6 | 7 | Module Type B. 8 | Declare Module BA : A. 9 | End B. 10 | 11 | 12 | Module Type C. 13 | Declare Module CA : A. 14 | Declare Module CB : B with Module BA := CA. 15 | End C. 16 | 17 | 18 | Module Type D. 19 | Declare Module DA : A. 20 | (* Next line gives: "Anomaly: uncaught exception Not_found. Please report." *) 21 | Declare Module DC : C with Module CA := DA. 22 | End D. 23 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2123.v: -------------------------------------------------------------------------------- 1 | (* About the detection of non-dependent metas by the refine tactic *) 2 | 3 | (* The following is a simplification of bug #2123 *) 4 | 5 | Parameter fset : nat -> Set. 6 | Parameter widen : forall (n : nat) (s : fset n), { x : fset (S n) | s=s }. 7 | Goal forall i, fset (S i). 8 | intro. 9 | refine (proj1_sig (widen i _)). 10 | 11 | 12 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2127.v: -------------------------------------------------------------------------------- 1 | (* Check that "apply eq_refl" is not exported as an interactive 2 | tactic but as a statically globalized one *) 3 | 4 | (* (this is a simplification of the original bug report) *) 5 | 6 | Module A. 7 | Hint Rewrite eq_sym using apply eq_refl : foo. 8 | End A. 9 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2135.v: -------------------------------------------------------------------------------- 1 | (* Check that metas are whd-normalized before trying 2nd-order unification *) 2 | Lemma test : 3 | forall (D:Type) (T : forall C, option C) (Q:forall D, option D -> Prop), 4 | (forall (A : Type) (P : forall B:Type, option B -> Prop), P A (T A)) 5 | -> Q D (T D). 6 | Proof. 7 | intros D T Q H. 8 | pattern (T D). apply H. 9 | Qed. 10 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2141.v: -------------------------------------------------------------------------------- 1 | Require Import FSetList. 2 | Require Import OrderedTypeEx. 3 | 4 | Module NatSet := FSetList.Make (Nat_as_OT). 5 | Recursive Extraction NatSet.fold. 6 | 7 | Module FSetHide (X : FSetInterface.S). 8 | Include X. 9 | End FSetHide. 10 | 11 | Module NatSet' := FSetHide NatSet. 12 | Recursive Extraction NatSet'.fold. 13 | 14 | (* Extraction "test2141.ml" NatSet'.fold. *) -------------------------------------------------------------------------------- /test-suite/bugs/closed/2145.v: -------------------------------------------------------------------------------- 1 | (* Test robustness of Groebner tactic in presence of disequalities *) 2 | 3 | Require Export Reals. 4 | Require Export Nsatz. 5 | 6 | Open Scope R_scope. 7 | 8 | Lemma essai : 9 | forall yb xb m1 m2 xa ya, 10 | xa <> xb -> 11 | yb - 2 * m2 * xb = ya - m2 * xa -> 12 | yb - m1 * xb = ya - m1 * xa -> 13 | yb - ya = (2 * xb - xa) * m2 -> 14 | yb - ya = (xb - xa) * m1. 15 | Proof. 16 | intros. 17 | (* clear H. groebner used not to work when H was not cleared *) 18 | nsatz. 19 | Qed. 20 | 21 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2149.v: -------------------------------------------------------------------------------- 1 | Lemma Foo : forall x y : nat, y = x -> y = x. 2 | Proof. 3 | intros x y. 4 | rename x into y, y into x. 5 | trivial. 6 | Qed. 7 | 8 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2181.v: -------------------------------------------------------------------------------- 1 | Class C. 2 | Parameter P: C -> Prop. 3 | Fail Record R: Type := { _: C; u: P _ }. 4 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2230.v: -------------------------------------------------------------------------------- 1 | Goal forall f, f 1 1 -> True. 2 | intros. 3 | match goal with 4 | | [ H : _ ?a |- _ ] => idtac 5 | end. 6 | Abort. 7 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2231.v: -------------------------------------------------------------------------------- 1 | Inductive unit2 : Type := U : unit -> unit2. 2 | Inductive dummy (u: unit2) : unit -> Type := 3 | V: dummy u (let (tt) := u in tt). 4 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2250.v: -------------------------------------------------------------------------------- 1 | Check prod: Prop -> Prop -> Prop. 2 | (* (fun A B : Prop => (A * B)%type):Prop -> Prop -> Prop 3 | : Prop -> Prop -> Prop *) 4 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2251.v: -------------------------------------------------------------------------------- 1 | (* Check that rewrite does not apply to single evars *) 2 | 3 | Lemma evar_rewrite : (forall a : nat, a = 0 -> True) -> True. 4 | intros; eapply H. (* goal is ?30 = nil *) 5 | Fail rewrite plus_n_Sm. 6 | Abort. 7 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2262.v: -------------------------------------------------------------------------------- 1 | 2 | 3 | Generalizable Variables A. 4 | Class Test A := { test : A }. 5 | 6 | Lemma mylemma : forall `{Test A}, test = test. 7 | Admitted. (* works fine *) 8 | 9 | Definition mylemma' := forall `{Test A}, test = test. 10 | About mylemma'. 11 | 12 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2295.v: -------------------------------------------------------------------------------- 1 | (* Check if omission of "as" in return clause works w/ section variables too *) 2 | 3 | Section sec. 4 | 5 | Variable b: bool. 6 | 7 | Definition d' := 8 | (match b return b = true \/ b = false with 9 | | true => or_introl _ (refl_equal true) 10 | | false => or_intror _ (refl_equal false) 11 | end). 12 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2299.v: -------------------------------------------------------------------------------- 1 | (* Check that destruct refreshes universes in what it generalizes *) 2 | 3 | Section test. 4 | 5 | Variable A: Type. 6 | 7 | Inductive T: unit -> Type := C: A -> unit -> T tt. 8 | 9 | Let unused := T tt. 10 | 11 | Goal T tt -> False. 12 | intro X. 13 | destruct X. 14 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2300.v: -------------------------------------------------------------------------------- 1 | (* Check some behavior of Ltac pattern-matching wrt universe levels *) 2 | 3 | Section contents. 4 | 5 | Variables (A: Type) (B: (unit -> Type) -> Type). 6 | 7 | Inductive C := c: A -> unit -> C. 8 | 9 | Let unused2 (x: unit) := C. 10 | 11 | Goal True. 12 | intuition. 13 | Qed. 14 | 15 | End contents. 16 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2303.v: -------------------------------------------------------------------------------- 1 | Class A := a: unit. 2 | Class B (x: unit). 3 | Axiom H: forall x: A, @B x -> x = x -> unit. 4 | Definition Field (z: A) (m: @B z) x := (@H _ _ x) = z. 5 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2304.v: -------------------------------------------------------------------------------- 1 | (* This used to fail with an anomaly NotASort at some time *) 2 | Class A (O: Type): Type := a: O -> Type. 3 | Fail Goal forall (x: a tt), @a x = @a x. 4 | 5 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2307.v: -------------------------------------------------------------------------------- 1 | Inductive V: nat -> Type := VS n: V (S n). 2 | Definition f (e: V 1): nat := match e with VS 0 => 3 end. 3 | 4 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2319.v: -------------------------------------------------------------------------------- 1 | Section S. 2 | 3 | CoInductive A (X: Type) := mkA: A X -> A X. 4 | Variable T : Type. 5 | 6 | (* This used to loop (bug #2319) *) 7 | Timeout 5 Eval vm_compute in cofix s : A T := mkA T s. 8 | 9 | CoFixpoint s : A T := mkA T s 10 | with t : A unit := mkA unit (mkA unit t). 11 | Timeout 5 Eval vm_compute in s. 12 | 13 | End S. -------------------------------------------------------------------------------- /test-suite/bugs/closed/2342.v: -------------------------------------------------------------------------------- 1 | (* Checking that the type inference algoithme does not commit to an 2 | equality over sorts when only a subtyping constraint is around *) 3 | 4 | Parameter A : Set. 5 | Parameter B : A -> Set. 6 | Parameter F : Set -> Prop. 7 | Check (F (forall x, B x)). 8 | 9 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2347.v: -------------------------------------------------------------------------------- 1 | Require Import EquivDec List. 2 | Generalizable All Variables. 3 | 4 | Program Definition list_eqdec `(eqa : EqDec A eq) : EqDec (list A) eq := 5 | (fun (x y : list A) => _). 6 | Admit Obligations of list_eqdec. 7 | 8 | Program Definition list_eqdec' `(eqa : EqDec A eq) : EqDec (list A) eq := 9 | (fun _ : nat => (fun (x y : list A) => _)) 0. 10 | Admit Obligations of list_eqdec'. 11 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2350.v: -------------------------------------------------------------------------------- 1 | (* Check that the fix tactic, when called from refine, reduces enough 2 | to see the products *) 3 | 4 | Definition foo := forall n:nat, n=n. 5 | Definition bar : foo. 6 | refine (fix aux (n:nat) := _). 7 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2353.v: -------------------------------------------------------------------------------- 1 | (* Are recursively non-uniform params correctly treated? *) 2 | Inductive list (A:nat -> Type) n := cons : A n -> list A (S n) -> list A n. 3 | Inductive term n := app (l : list term n). 4 | Definition term_list := 5 | fix term_size n (t : term n) (acc : nat) {struct t} : nat := 6 | match t with 7 | | app _ l => 8 | (fix term_list_size n (l : list term n) (acc : nat) {struct l} : nat := 9 | match l with 10 | | cons _ _ t q => term_list_size (S n) q (term_size n t acc) 11 | end) n l (S acc) 12 | end. 13 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2360.v: -------------------------------------------------------------------------------- 1 | (* This failed in V8.3 because descend_in_conjunctions built ill-typed terms *) 2 | Definition interp (etyp : nat -> Type) (p: nat) := etyp p. 3 | 4 | Record Value (etyp : nat -> Type) := Mk { 5 | typ : nat; 6 | value : interp etyp typ 7 | }. 8 | 9 | Definition some_value (etyp : nat -> Type) : (Value etyp). 10 | Proof. 11 | intros. 12 | Fail apply Mk. (* Check that it does not raise an anomaly *) 13 | 14 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2375.v: -------------------------------------------------------------------------------- 1 | (* In the following code, the (superfluous) lemma [lem] is responsible 2 | for the failure of congruence. *) 3 | 4 | Definition f : nat -> Prop := fun x => True. 5 | 6 | Lemma lem : forall x, (True -> True) = ( True -> f x). 7 | Proof. 8 | intros. reflexivity. 9 | Qed. 10 | 11 | Goal forall (x:nat), x = x. 12 | Proof. 13 | intros. 14 | assert (lem := lem). 15 | (*clear ax.*) 16 | congruence. 17 | Qed. 18 | 19 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2388.v: -------------------------------------------------------------------------------- 1 | (* Error message was not printed in the correct environment *) 2 | 3 | Fail Parameters (A:Prop) (a:A A). 4 | 5 | (* This is a variant (reported as part of bug #2347) *) 6 | 7 | Require Import EquivDec. 8 | Fail Program Instance bool_eq_eqdec : EqDec bool eq := 9 | {equiv_dec x y := (fix aux (x y : bool) {struct x}:= aux _ y) x y}. 10 | 11 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2393.v: -------------------------------------------------------------------------------- 1 | Require Import Program. 2 | 3 | Inductive T := MkT. 4 | 5 | Definition sizeOf (t : T) : nat 6 | := match t with 7 | | MkT => 1 8 | end. 9 | Variable vect : nat -> Type. 10 | Program Fixpoint idType (t : T) (n := sizeOf t) (b : vect n) {measure n} : T 11 | := match t with 12 | | MkT => MkT 13 | end. 14 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2406.v: -------------------------------------------------------------------------------- 1 | (* Check correct handling of unsupported notations *) 2 | Notation "'’'" := (fun x => x) (at level 20). 3 | 4 | (* This fails with a syntax error but it is not catched by Fail 5 | Fail Definition crash_the_rooster f := ’. 6 | *) 7 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2447.v: -------------------------------------------------------------------------------- 1 | Record t := {x : bool; y : bool; z : bool}. 2 | 3 | Goal forall x1 x2 y z, 4 | {| x := x1; y := y; z := z |} = {| x := x2; y := y; z := z |} -> x1 = x2. 5 | Proof. 6 | intros; congruence. (* was doing stack overflow *) 7 | Qed. 8 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2586.v: -------------------------------------------------------------------------------- 1 | Require Import Setoid SetoidClass Program. 2 | 3 | Goal forall `(Setoid nat) x y, x == y -> S x == S y. 4 | intros. 5 | Fail clsubst H0. 6 | Abort. -------------------------------------------------------------------------------- /test-suite/bugs/closed/2613.v: -------------------------------------------------------------------------------- 1 | (* Check that eq_sym is still pointing to Logic.eq_sym after use of Function *) 2 | 3 | Require Import ZArith. 4 | Require Recdef. 5 | 6 | Axiom nat_eq_dec: forall x y : nat, {x=y}+{x<>y}. 7 | 8 | Locate eq_sym. (* Constant Coq.Init.Logic.eq_sym *) 9 | 10 | Function loop (n: nat) {measure (fun x => x) n} : bool := 11 | if nat_eq_dec n 0 then false else loop (pred n). 12 | Proof. 13 | admit. 14 | Defined. 15 | 16 | Check eq_sym eq_refl : 0=0. 17 | 18 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2616.v: -------------------------------------------------------------------------------- 1 | (* Testing ill-typed rewrite which used to succeed in 8.3 *) 2 | Goal 3 | forall (N : nat -> Prop) (g : nat -> sig N) (IN : forall a : sig N, a = g 0), 4 | N 0 -> False. 5 | Proof. 6 | intros. 7 | Fail rewrite IN in H. 8 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2640.v: -------------------------------------------------------------------------------- 1 | (* Testing consistency of globalization and interpretation in some 2 | extreme cases *) 3 | 4 | Section sect. 5 | 6 | (* Simplification of the initial example *) 7 | Hypothesis Other: True. 8 | 9 | Lemma C2 : True. 10 | proof. 11 | Fail have True using Other. 12 | Abort. 13 | 14 | (* Variant of the same problem *) 15 | Lemma C2 : True. 16 | Fail clear; Other. 17 | Abort. 18 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2667.v: -------------------------------------------------------------------------------- 1 | (* Check that extra arguments to Arguments Scope do not disturb use of *) 2 | (* scopes in constructors *) 3 | 4 | Inductive stmt : Type := Sskip: stmt | Scall : nat -> stmt. 5 | Bind Scope Cminor with stmt. 6 | 7 | (* extra argument is ok because of possible coercion to funclass *) 8 | Arguments Scope Scall [_ Cminor ]. 9 | 10 | (* extra argument is ok because of possible coercion to funclass *) 11 | Fixpoint f (c: stmt) : Prop := match c with Scall _ => False | _ => False end. 12 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2668.v: -------------------------------------------------------------------------------- 1 | Require Import MSetPositive. 2 | Require Import MSetProperties. 3 | 4 | Module Pos := MSetPositive.PositiveSet. 5 | Module PPPP := MSetProperties.WPropertiesOn(Pos). 6 | Print Module PPPP. -------------------------------------------------------------------------------- /test-suite/bugs/closed/2680.v: -------------------------------------------------------------------------------- 1 | (* Tauto bug initially due to wrong test for binary connective *) 2 | 3 | Parameter A B : Type. 4 | 5 | Axiom P : A -> B -> Prop. 6 | 7 | Inductive IP (a : A) (b: B) : Prop := 8 | | IP_def : P a b -> IP a b. 9 | 10 | 11 | Goal forall (a : A) (b : B), IP a b -> ~ IP a b -> False. 12 | Proof. 13 | intros. 14 | tauto. 15 | Qed. 16 | 17 | 18 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2713.v: -------------------------------------------------------------------------------- 1 | Set Implicit Arguments. 2 | 3 | Definition pred_le A (P Q : A->Prop) := 4 | forall x, P x -> Q x. 5 | 6 | Lemma pred_le_refl : forall A (P:A->Prop), 7 | pred_le P P. 8 | Proof. unfold pred_le. auto. Qed. 9 | 10 | Hint Resolve pred_le_refl. 11 | 12 | Lemma test : 13 | forall (P1 P2:nat->Prop), 14 | (forall Q, pred_le (fun a => P1 a /\ P2 a) Q -> True) -> 15 | True. 16 | Proof. intros. eapply H. eauto. (* used to work *) 17 | apply pred_le_refl. Qed. 18 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2732.v: -------------------------------------------------------------------------------- 1 | (* Check correct behavior of add_primitive_tactic in TACEXTEND *) 2 | 3 | (* Added also the case of eauto and congruence *) 4 | 5 | Ltac thus H := solve [H]. 6 | 7 | Lemma test: forall n : nat, n <= n. 8 | Proof. 9 | intro. 10 | thus firstorder. 11 | Undo. 12 | thus eauto. 13 | Qed. 14 | 15 | Lemma test2: false = true -> False. 16 | Proof. 17 | intro. 18 | thus congruence. 19 | Qed. 20 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2734.v: -------------------------------------------------------------------------------- 1 | Require Import Arith List. 2 | Require Import OrderedTypeEx. 3 | 4 | Module Adr. 5 | Include Nat_as_OT. 6 | Definition nat2t (i: nat) : t := i. 7 | End Adr. 8 | 9 | Inductive expr := Const: Adr.t -> expr. 10 | 11 | Inductive control := Go: expr -> control. 12 | 13 | Definition program := (Adr.t * (control))%type. 14 | 15 | Fail Definition myprog : program := (Adr.nat2t 0, Go (Adr.nat2t 0) ). -------------------------------------------------------------------------------- /test-suite/bugs/closed/2750.v: -------------------------------------------------------------------------------- 1 | 2 | Module Type ModWithRecord. 3 | 4 | Record foo : Type := 5 | { A : nat 6 | ; B : nat 7 | }. 8 | End ModWithRecord. 9 | 10 | Module Test_ModWithRecord (M : ModWithRecord). 11 | 12 | Definition test1 : M.foo := 13 | {| M.A := 0 14 | ; M.B := 2 15 | |}. 16 | 17 | Module B := M. 18 | 19 | Definition test2 : M.foo := 20 | {| M.A := 0 21 | ; M.B := 2 22 | |}. 23 | End Test_ModWithRecord. -------------------------------------------------------------------------------- /test-suite/bugs/closed/2810.v: -------------------------------------------------------------------------------- 1 | Section foo. 2 | Variable A : Type. 3 | Let B := A. 4 | 5 | Hint Unfold B. 6 | 7 | Goal False. 8 | clear B. autounfold with core. 9 | Abort. 10 | End foo. 11 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2817.v: -------------------------------------------------------------------------------- 1 | (** Occur-check for Meta (up to application of already known instances) *) 2 | 3 | Goal forall (f: nat -> nat -> Prop) (x:bool) 4 | (H: forall (u: nat), f u u -> True) 5 | (H0: forall x0, f (if x then x0 else x0) x0), 6 | False. 7 | 8 | intros. 9 | Fail apply H in H0. (* should fail without exhausting the stack *) 10 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2818.v: -------------------------------------------------------------------------------- 1 | Module M. 2 | 3 | Local Ltac t := exact I. 4 | Ltac u := t. 5 | 6 | End M. 7 | 8 | Goal True. 9 | Proof. 10 | M.u. 11 | Qed. 12 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2828.v: -------------------------------------------------------------------------------- 1 | Parameter A B : Type. 2 | Coercion POL (p : prod A B) := fst p. 3 | Goal forall x : prod A B, A. 4 | intro x. Fail exact x. 5 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2834.v: -------------------------------------------------------------------------------- 1 | (* Testing typing of subst *) 2 | 3 | Lemma eqType2Set (a b : Set) (H : @eq Type a b) : @eq Set a b. 4 | Fail subst. 5 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2837.v: -------------------------------------------------------------------------------- 1 | Require Import JMeq. 2 | 3 | Axiom test : forall n m : nat, JMeq n m. 4 | 5 | Goal forall n m : nat, JMeq n m. 6 | 7 | (* I) with no intros nor variable hints, this should produce a regular error 8 | instead of Uncaught exception Failure("nth"). *) 9 | Fail rewrite test. 10 | 11 | (* II) with intros but indication of variables, still an error *) 12 | Fail (intros; rewrite test). 13 | 14 | (* III) a working variant: *) 15 | intros; rewrite (test n m). -------------------------------------------------------------------------------- /test-suite/bugs/closed/2839.v: -------------------------------------------------------------------------------- 1 | (* Check a case where ltac typing error should result in error, not anomaly *) 2 | 3 | Goal forall (H : forall x : nat, x = x), False. 4 | intro. 5 | Fail 6 | let H := 7 | match goal with 8 | | [ H : appcontext G [@eq _ _] |- _ ] => let H' := context G[@plus 2] in H' 9 | end 10 | in pose H. 11 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2846.v: -------------------------------------------------------------------------------- 1 | Variable R : Type. 2 | 3 | Fail Inductive I : R := c : R. 4 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2848.v: -------------------------------------------------------------------------------- 1 | Require Import Setoid. 2 | 3 | Parameter value' : Type. 4 | Parameter equiv' : value' -> value' -> Prop. 5 | 6 | Add Parametric Relation : _ equiv' 7 | reflexivity proved by (Equivalence.equiv_reflexive _) 8 | transitivity proved by (Equivalence.equiv_transitive _) 9 | as apply_equiv'_rel. 10 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2850.v: -------------------------------------------------------------------------------- 1 | Definition id {A} (x : A) := x. 2 | Fail Compute id. 3 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2854.v: -------------------------------------------------------------------------------- 1 | Section foo. 2 | Let foo := Type. 3 | Definition bar : foo -> foo := @id _. 4 | Goal False. 5 | subst foo. 6 | Fail pose bar as f. 7 | (* simpl in f. *) 8 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2876.v: -------------------------------------------------------------------------------- 1 | Lemma test_bug : forall (R:nat->nat->Prop) n m m' (P: Prop), 2 | P -> 3 | (P -> R n m) -> 4 | (P -> R n m') -> 5 | (forall u, R n u -> u = u -> True) -> 6 | True. 7 | Proof. 8 | intros * HP H1 H2 H3. eapply H3. 9 | eauto. (* H1 is used, but H2 should be used since it is the last hypothesis *) 10 | auto. 11 | Qed. 12 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2920.v: -------------------------------------------------------------------------------- 1 | Fail Definition my_f_equal {A B : Type} (f : A -> B) (a a' : A) (p : a = a') : f a = f a' := 2 | eq_ind _ _ (fun a' => f a = f a') _ _ p. 3 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2923.v: -------------------------------------------------------------------------------- 1 | Module Type SIGNATURE1. 2 | Inductive IndType: Set := 3 | | AConstructor. 4 | End SIGNATURE1. 5 | 6 | Module Type SIGNATURE2. 7 | Declare Module M1: SIGNATURE1. 8 | End SIGNATURE2. 9 | 10 | Module M2 (Module M1_: SIGNATURE1) : SIGNATURE2. 11 | Module M1 := M1_. 12 | End M2. 13 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2928.v: -------------------------------------------------------------------------------- 1 | Class Equiv A := equiv: A -> A -> Prop. 2 | Infix "=" := equiv : type_scope. 3 | 4 | Class Associative {A} f `{Equiv A} := associativity x y z : f x (f y z) = f (f x y) z. 5 | 6 | Class SemiGroup A op `{Equiv A} := { sg_ass :>> Associative op }. 7 | 8 | Class SemiLattice A op `{Equiv A} := 9 | { semilattice_sg :>> SemiGroup A op 10 | ; redundant : Associative op 11 | }. 12 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2930.v: -------------------------------------------------------------------------------- 1 | (* Checking that let-in's hiding evars are expanded when enforcing 2 | "occur-check" *) 3 | 4 | Require Import List. 5 | 6 | Definition foo x y := 7 | let xy := (x, y) in 8 | let bar xys := 9 | match xys with 10 | | nil => xy :: nil 11 | | xy' :: xys' => xy' :: xys' 12 | end in bar (nil : list (nat * nat)). 13 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2945.v: -------------------------------------------------------------------------------- 1 | Notation "f1 =1 f2 :> A" := (f1 = (f2 : A)) 2 | (at level 70, f2 at next level, A at level 90) : fun_scope. 3 | 4 | Notation "e :? pf" := (eq_rect _ (fun X : _ => X) e _ pf) 5 | (no associativity, at level 90). 6 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2983.v: -------------------------------------------------------------------------------- 1 | Module Type ModA. 2 | End ModA. 3 | Module Type ModB(A : ModA). 4 | End ModB. 5 | Module Foo(A : ModA)(B : ModB A). 6 | End Foo. 7 | 8 | Print Module Foo. -------------------------------------------------------------------------------- /test-suite/bugs/closed/2990.v: -------------------------------------------------------------------------------- 1 | Goal True. 2 | Proof. 3 | evar (pfT : Type). 4 | cut pfT. 5 | subst pfT. 6 | intro pf. 7 | refine ((fun A : Set => pf A) unit). 8 | Abort. 9 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2994.v: -------------------------------------------------------------------------------- 1 | (* Was an anomaly at some time *) 2 | Fail Class foo : Prop := { bar :> Set }. 3 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/2995.v: -------------------------------------------------------------------------------- 1 | Module Type Interface. 2 | Parameter error: nat. 3 | End Interface. 4 | 5 | Module Implementation <: Interface. 6 | Definition t := bool. 7 | Definition error: t := false. 8 | Fail End Implementation. 9 | (* A UserError here is expected, not an uncaught Not_found *) -------------------------------------------------------------------------------- /test-suite/bugs/closed/3000.v: -------------------------------------------------------------------------------- 1 | Inductive t (t':Type) : Type := A | B. 2 | Definition d := match t with _ => 1 end. (* used to fail on list_chop *) 3 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3004.v: -------------------------------------------------------------------------------- 1 | Set Implicit Arguments. 2 | Unset Strict Implicit. 3 | Parameter (M : nat -> Type). 4 | Parameter (mp : forall (T1 T2 : Type) (f : T1 -> T2), list T1 -> list T2). 5 | 6 | Definition foo (s : list {n : nat & M n}) := 7 | let exT := existT in mp (fun x => projT1 x) s. 8 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3010b.v: -------------------------------------------------------------------------------- 1 | Definition wtf (n : nat) : nat := 2 | (match n with 3 | 0 => (fun H : n = 0 => 0) 4 | | S n' => (fun H : n = S n' => 0) 5 | end) (eq_refl n). 6 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3016.v: -------------------------------------------------------------------------------- 1 | Section foo. 2 | Variable C : Type. 3 | Goal True. 4 | change (eq (A := ?C) ?x ?y) with (eq). 5 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3017.v: -------------------------------------------------------------------------------- 1 | Class A := {}. 2 | Class B {T} `(A) := { B_intro : forall t t' : T, t = t' }. 3 | Lemma foo T (t t' : T) : t = t'. 4 | erewrite @B_intro. 5 | reflexivity. 6 | Abort. 7 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3022.v: -------------------------------------------------------------------------------- 1 | Goal forall (O obj : Type) (f : O -> obj) (x : O) (e : x = x) 2 | (T : obj -> obj -> Type) (m : forall x0 : obj, T x0 x0), 3 | match eq_sym e in (_ = y) return (T (f y) (f x)) with 4 | | eq_refl => m (f x) 5 | end = m (f x). 6 | intros. 7 | try case e. 8 | Abort. 9 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3037.v: -------------------------------------------------------------------------------- 1 | (* Anomaly before 4a8950ec7a0d9f2b216e67e69b446c064590a8e9 *) 2 | 3 | Require Import Recdef. 4 | 5 | Function f_R (a: nat) {wf (fun x y: nat => False) a}:Prop:= 6 | match a:nat with 7 | | 0 => True 8 | | (S y') => f_R y' 9 | end. 10 | (* Anomaly: File "plugins/funind/recdef.ml", line 916, characters 13-19: Assertion failed. 11 | Please report. *) 12 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3043.v: -------------------------------------------------------------------------------- 1 | Goal (fun A (P : A -> Prop) (X : sigT P) => proj1_sig (sig_of_sigT X)) = 2 | (fun A (P : A -> Prop) (X : sigT P) => projT1 X). 3 | reflexivity. 4 | Qed. 5 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3050.v: -------------------------------------------------------------------------------- 1 | Goal forall A B, A * B -> A. 2 | Proof. 3 | intros A B H. 4 | match goal with 5 | | [ H : _ * _ |- _ ] => exact (fst H) 6 | end. 7 | Qed. 8 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3054.v: -------------------------------------------------------------------------------- 1 | Section S. 2 | 3 | Let V := Type. 4 | 5 | Goal ~ true = false. 6 | Proof. 7 | congruence. 8 | Qed. 9 | 10 | End S. 11 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3062.v: -------------------------------------------------------------------------------- 1 | Lemma foo : forall x y:nat, x < y -> False. 2 | Proof. 3 | intros x y H. 4 | induction H as [ |?y ?y ?y]. 5 | Abort. 6 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3088.v: -------------------------------------------------------------------------------- 1 | Inductive R {A} : A -> A -> Type := c : forall x y, R x y. 2 | 3 | Goal forall A (x y : A) P (e : R x y) (f : forall x y, P x y (c x y)), 4 | let g := match e in R x y return P x y e with c x y => f x y end in 5 | True. 6 | Proof. 7 | intros A x y P e f g. 8 | let t := eval red in g in 9 | match t with 10 | (match ?E as e in R x y return @?P x y e with c X Y => @?f X Y end) => idtac P f 11 | end. 12 | Abort. 13 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3093.v: -------------------------------------------------------------------------------- 1 | Require Import FunctionalExtensionality. 2 | 3 | Goal forall y, @f_equal = y. 4 | intro. 5 | apply functional_extensionality_dep. 6 | Abort. 7 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3142.v: -------------------------------------------------------------------------------- 1 | (* Fixed together with #3262 in 48af6d1418282323b9fff0e789fed9478c064434 *) 2 | (* April 4, 2014 (non-progress in candidates was not detected) *) 3 | 4 | Definition eqbool_dep (P : bool -> Prop) (h1 : P true) (b : bool) (h2 : P b) 5 | : Prop := 6 | (match b (* return P b -> Prop *) with 7 | | true => fun (h : P true) => h1 = h 8 | | false => fun (_ : P false) => False 9 | end (* : P b -> Prop *)) h2. 10 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3212.v: -------------------------------------------------------------------------------- 1 | Lemma H : Prop = Prop. 2 | reflexivity. 3 | Qed. 4 | 5 | Lemma foo : match H in (_ = X) return X with 6 | | eq_refl => True 7 | end. 8 | Proof. 9 | Fail destruct H. 10 | Abort. 11 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3228.v: -------------------------------------------------------------------------------- 1 | (* Check that variables in the context do not take precedence over 2 | ltac variables *) 3 | 4 | Ltac bar x := exact x. 5 | Goal False -> False. 6 | intro x. 7 | Fail bar doesnotexist. 8 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3242.v: -------------------------------------------------------------------------------- 1 | Inductive Foo (x := Type) := C : Foo -> Foo. 2 | 3 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3259.v: -------------------------------------------------------------------------------- 1 | Goal forall m n, n+n = m+m -> m+m = m+m. 2 | Proof. 3 | intros. 4 | set (k := n+n) in *. 5 | cut (n=m). 6 | intro. 7 | subst n. 8 | admit. 9 | admit. 10 | Qed. 11 | 12 | Goal forall m n, n+n = m+m -> n+n = m+m. 13 | Proof. 14 | intros. 15 | set (k := n+n). 16 | cut (n=m). 17 | intro. 18 | subst n. 19 | admit. 20 | admit. 21 | Qed. 22 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3260.v: -------------------------------------------------------------------------------- 1 | Require Import Setoid. 2 | Goal forall m n, n = m -> n+n = m+m. 3 | intros. 4 | replace n with m at 2. 5 | lazymatch goal with 6 | |- n + m = m + m => idtac 7 | end. 8 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3265.v: -------------------------------------------------------------------------------- 1 | Require Import Setoid. 2 | Hint Extern 0 => apply reflexivity : typeclass_instances. 3 | Goal forall (B : Type) (P : B -> Prop), exists y : B, P y. 4 | intros. 5 | try reflexivity. (* Anomaly: Uncaught exception Not_found. Please report. *) 6 | Abort. 7 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3266.v: -------------------------------------------------------------------------------- 1 | Class A := a : nat. 2 | Lemma p : True. 3 | Proof. cut A; [tauto | exact 1]. Qed. 4 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3281.v: -------------------------------------------------------------------------------- 1 | Fail Lemma foo : @eq _ nat Type. 2 | Fail Lemma foo : @eq Set nat Type. 3 | 4 | Lemma foo : @eq Type nat Type. Admitted. 5 | Lemma foo' : @eq _ Type nat. Admitted. 6 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3282.v: -------------------------------------------------------------------------------- 1 | (* Check let-ins in fix and Fixpoint *) 2 | 3 | Definition foo := fix f (m : nat) (o := true) (n : nat) {struct n} := 4 | match n with 0 => 0 | S n' => f 0 n' end. 5 | 6 | Fixpoint f (m : nat) (o := true) (n : nat) {struct n} := 7 | match n with 0 => 0 | S n' => f 0 n' end. 8 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3285.v: -------------------------------------------------------------------------------- 1 | Goal True. 2 | Proof. 3 | match goal with 4 | | _ => let x := constr:($(fail)$) in idtac 5 | | _ => idtac 6 | end. 7 | Abort. 8 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3287.v: -------------------------------------------------------------------------------- 1 | Module Foo. 2 | (* Definition foo := (I,I). *) 3 | Definition bar := true. 4 | End Foo. 5 | 6 | Recursive Extraction Foo.bar. 7 | 8 | Module Foo'. 9 | Definition foo := (I,I). 10 | Definition bar := true. 11 | End Foo'. 12 | 13 | Recursive Extraction Foo'.bar. 14 | 15 | Module Foo''. 16 | Definition foo := (I,I). 17 | Definition bar := true. 18 | End Foo''. 19 | 20 | Extraction Foo.bar. 21 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3291.v: -------------------------------------------------------------------------------- 1 | Require Import Setoid. 2 | 3 | Definition segv : forall x, (x = 0%nat) -> (forall (y : nat), (y < x)%nat -> nat) = forall (y : nat), (y < 0)%nat -> nat. 4 | intros x eq. 5 | assert (H : forall y, (y < x)%nat = (y < 0)%nat). 6 | rewrite -> eq. auto. 7 | Set Typeclasses Debug. 8 | Fail setoid_rewrite <- H. (* The command has indeed failed with message: 9 | => Stack overflow. *) 10 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3294.v: -------------------------------------------------------------------------------- 1 | Check (match true return 2 | match eq_refl Type return Type with eq_refl => bool end 3 | with _ => true end). 4 | Check (match true return 5 | match eq_refl Type with eq_refl => bool end 6 | with _ => true end). 7 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3297.v: -------------------------------------------------------------------------------- 1 | Goal forall (n : nat) (H := eq_refl : n = n) (H' : n = 0), H = eq_refl. 2 | intros. 3 | subst. (* Toplevel input, characters 15-20: 4 | Error: Abstracting over the term "n" leads to a term 5 | "λ n : nat, H = eq_refl" which is ill-typed. *) 6 | Undo. 7 | revert H. 8 | subst. (* success *) 9 | Undo. 10 | intro. 11 | clearbody H. 12 | subst. (* success *) 13 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3300.v: -------------------------------------------------------------------------------- 1 | Set Primitive Projections. 2 | Record Box (T : Type) : Prop := wrap {prop : T}. 3 | 4 | Definition down (x : Type) : Prop := Box x. 5 | Definition up (x : Prop) : Type := x. 6 | 7 | Fail Definition back A : up (down A) -> A := @prop A. 8 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3305.v: -------------------------------------------------------------------------------- 1 | Require Export Coq.Classes.RelationClasses. 2 | 3 | Section defs. 4 | Variable A : Type. 5 | Variable lt : A -> A -> Prop. 6 | Context {ltso : StrictOrder lt}. 7 | 8 | Goal forall (a : A), lt a a -> False. 9 | Proof. 10 | intros a H. 11 | contradict (irreflexivity H). 12 | Qed. 13 | End defs. 14 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3306.v: -------------------------------------------------------------------------------- 1 | 2 | Inductive Foo(A : Type) : Prop := 3 | foo: A -> Foo A. 4 | 5 | Arguments foo [A] _. 6 | 7 | Scheme Foo_elim := Induction for Foo Sort Prop. 8 | 9 | Goal forall (fn : Foo nat), { x: nat | foo x = fn }. 10 | intro fn. 11 | Fail induction fn as [n] using Foo_elim. (* should fail in a non-Prop context *) 12 | Admitted. 13 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/331.v: -------------------------------------------------------------------------------- 1 | Module Type TIT. 2 | 3 | Inductive X:Set:= 4 | b:X. 5 | End TIT. 6 | 7 | 8 | Module Type TOTO. 9 | Declare Module t:TIT. 10 | Inductive titi:Set:= 11 | a:t.X->titi. 12 | End TOTO. 13 | 14 | 15 | Module toto (ta:TOTO). 16 | Module ti:=ta.t. 17 | 18 | Definition ex1:forall (c d:ti.X), (ta.a d)=(ta.a c) -> d=c. 19 | intros. 20 | injection H. 21 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3310.v: -------------------------------------------------------------------------------- 1 | Set Primitive Projections. 2 | Set Implicit Arguments. 3 | 4 | CoInductive stream A := cons { hd : A; tl : stream A }. 5 | 6 | CoFixpoint id {A} (s : stream A) := cons (hd s) (id (tl s)). 7 | 8 | Lemma id_spec : forall A (s : stream A), id s = s. 9 | Proof. 10 | intros A s. 11 | Fail change (id s) with (cons (hd (id s)) (tl (id s))). 12 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3326.v: -------------------------------------------------------------------------------- 1 | Class ORDER A := Order { 2 | LEQ : A -> A -> bool; 3 | leqRefl: forall x, true = LEQ x x 4 | }. 5 | 6 | Section XXX. 7 | 8 | Variable A:Type. 9 | Variable (O:ORDER A). 10 | Definition aLeqRefl := @leqRefl _ O. 11 | 12 | Lemma OK : forall x, true = LEQ x x. 13 | Proof. 14 | intros. 15 | unfold LEQ. 16 | destruct O. 17 | clear. 18 | Fail apply aLeqRefl. 19 | Abort. 20 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3332.v: -------------------------------------------------------------------------------- 1 | (* -*- coq-prog-args: ("-emacs" "-time") -*- *) 2 | Definition foo : True. 3 | Proof. 4 | Abort. (* Toplevel input, characters 15-21: 5 | Anomaly: Backtrack.backto to a state with no vcs_backup. Please report. *) 6 | (* Anomaly: VernacAbort not handled by Stm. Please report. *) 7 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3336.v: -------------------------------------------------------------------------------- 1 | Require Import Setoid. 2 | 3 | Goal forall x y : Type, x = y -> x = y. 4 | intros x y H. 5 | setoid_rewrite H. 6 | reflexivity. 7 | Defined. 8 | (* Toplevel input, characters 0-16: 9 | Anomaly: Uncaught exception Reduction.NotConvertible(_). Please report. *) 10 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3337.v: -------------------------------------------------------------------------------- 1 | Require Import Setoid. 2 | Goal forall x y : Set, x = y -> x = y. 3 | intros x y H. 4 | rewrite_strat subterms H. 5 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3338.v: -------------------------------------------------------------------------------- 1 | Require Import Setoid. 2 | Goal forall x y : Set, x = y -> y = y. 3 | intros x y H. 4 | rewrite_strat try topdown terms H. 5 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3346.v: -------------------------------------------------------------------------------- 1 | (* -*- mode: coq; coq-prog-args: ("-emacs" "-indices-matter") -*- *) 2 | Monomorphic Inductive paths (A : Type) (a : A) : A -> Type := idpath : paths A a a. 3 | (* This should fail with -indices-matter *) 4 | Fail Check paths nat O O : Prop. 5 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3348.v: -------------------------------------------------------------------------------- 1 | (* -*- mode: coq; coq-prog-args: ("-emacs" "-indices-matter") -*- *) 2 | Set Universe Polymorphism. 3 | Set Printing Universes. 4 | Inductive Empty : Set := . 5 | (* Toplevel input, characters 15-41: 6 | Error: Universe inconsistency. Cannot enforce Prop <= Set). *) 7 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/335.v: -------------------------------------------------------------------------------- 1 | (* Compatibility of Require with backtracking at interactive module end *) 2 | 3 | Module A. 4 | Require List. 5 | End A. 6 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3354.v: -------------------------------------------------------------------------------- 1 | Set Universe Polymorphism. 2 | Notation Type1 := $(let U := constr:(Type) in let gt := constr:(Set : U) in exact U)$ (only parsing). 3 | Inductive Empty : Type1 := . 4 | Fail Check Empty : Set. 5 | (* Toplevel input, characters 15-116: 6 | Error: Conversion test raised an anomaly *) 7 | (* Now we make sure it's not an anomaly *) 8 | Goal True. 9 | Proof. 10 | try exact (let x := Empty : Set in I). 11 | exact I. 12 | Defined. 13 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3355.v: -------------------------------------------------------------------------------- 1 | Inductive paths {A} (x : A) : A -> Type := idpath : paths x x. 2 | Goal forall A B : Set, @paths Type A B -> @paths Set A B. 3 | Proof. 4 | intros A B H. 5 | Fail exact H. 6 | Abort. 7 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3372.v: -------------------------------------------------------------------------------- 1 | Set Universe Polymorphism. 2 | Definition hProp : Type := sigT (fun _ : Type => True). 3 | Goal Type. 4 | Fail exact hProp@{Set}. (* test that it fails, but is not an anomaly *) 5 | try (exact hProp@{Set}; fail 1). (* Toplevel input, characters 15-32: 6 | Anomaly: Uncaught exception Invalid_argument("Array.iter2", _). 7 | Please report. *) 8 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3377.v: -------------------------------------------------------------------------------- 1 | Set Primitive Projections. 2 | Set Implicit Arguments. 3 | Record prod A B := pair { fst : A; snd : B}. 4 | 5 | Goal fst (@pair Type Type Type Type). 6 | Set Printing All. 7 | match goal with |- ?f ?x => set (foo := f x) end. 8 | 9 | Goal forall x : prod Set Set, x = @pair _ _ (fst x) (snd x). 10 | Proof. 11 | intro x. 12 | lazymatch goal with 13 | | [ |- ?x = @pair _ _ (?f ?x) (?g ?x) ] => pose f 14 | end. 15 | 16 | (* Toplevel input, characters 7-44: 17 | Error: No matching clauses for match. *) 18 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3390.v: -------------------------------------------------------------------------------- 1 | Tactic Notation "basicapply" open_constr(R) "using" tactic3(tac) "sideconditions" tactic0(tacfin) := idtac. 2 | Tactic Notation "basicapply" open_constr(R) := basicapply R using (fun Hlem => idtac) sideconditions (autounfold with spred; idtac). 3 | (* segfault in coqtop *) 4 | 5 | 6 | Tactic Notation "basicapply" tactic0(tacfin) := idtac. 7 | 8 | Goal True. 9 | basicapply subst. 10 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3402.v: -------------------------------------------------------------------------------- 1 | Set Primitive Projections. 2 | Record prod A B := pair { fst : A ; snd : B }. 3 | Goal forall A B (p : prod A B), p = let (x, y) := p in pair A B x y. 4 | Proof. 5 | intros A B p. 6 | exact eq_refl. 7 | Qed. -------------------------------------------------------------------------------- /test-suite/bugs/closed/3416.v: -------------------------------------------------------------------------------- 1 | Inductive list A := Node : node A -> list A 2 | with node A := Nil | Cons : A -> list A -> node A. 3 | 4 | Fixpoint app {A} (l1 l2 : list A) {struct l1} : list A 5 | with app_node {A} (n1 : node A) (l2 : list A) {struct n1} : node A. 6 | Proof. 7 | + destruct l1 as [n]; constructor. 8 | exact (app_node _ n l2). 9 | + destruct n1 as [|x l1]. 10 | - destruct l2 as [n2]; exact n2. 11 | - exact (Cons _ x (app _ l1 l2)). 12 | Qed. 13 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3417.v: -------------------------------------------------------------------------------- 1 | Require Setoid. 2 | 3 | Goal forall {T}(a b : T), b=a -> {c | c=b}. 4 | Proof. 5 | intros T a b H. 6 | setoid_rewrite H. 7 | Abort. 8 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3453.v: -------------------------------------------------------------------------------- 1 | Set Primitive Projections. 2 | Record Foo := { bar : Set }. 3 | Class Baz (F : Foo) := { qux : F.(bar) }. 4 | Coercion qux : Baz >-> bar. 5 | 6 | Definition f : Foo := {| bar := nat |}. 7 | Canonical Structure f. 8 | Check (fun b : Baz f => b : _.(bar)). 9 | 10 | (* Error: Found target class bar instead of bar. *) 11 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3477.v: -------------------------------------------------------------------------------- 1 | Set Primitive Projections. 2 | Set Implicit Arguments. 3 | Record prod A B := pair { fst : A ; snd : B }. 4 | Goal forall A B : Set, True. 5 | Proof. 6 | intros A B. 7 | evar (a : prod A B); evar (f : (prod A B -> Set)). 8 | let a' := (eval unfold a in a) in 9 | set(foo:=eq_refl : a' = (@pair _ _ (fst a') (snd a'))). -------------------------------------------------------------------------------- /test-suite/bugs/closed/348.v: -------------------------------------------------------------------------------- 1 | Module Type S. 2 | Parameter empty: Set. 3 | End S. 4 | 5 | Module D (M:S). 6 | Import M. 7 | Definition empty:=nat. 8 | End D. 9 | 10 | Module D' (M:S). 11 | Import M. 12 | Definition empty:Set. exact nat. Save. 13 | End D'. 14 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3482.v: -------------------------------------------------------------------------------- 1 | Set Primitive Projections. 2 | Class Foo (F : False) := { foo : True }. 3 | Arguments foo F {Foo}. 4 | Print Implicit foo. (* foo : forall F : False, Foo F -> True 5 | 6 | Argument Foo is implicit and maximally inserted *) 7 | Check foo _. (* Toplevel input, characters 6-11: 8 | Error: Illegal application (Non-functional construction): 9 | The expression "foo" of type "True" 10 | cannot be applied to the term 11 | "?36" : "?35" *) -------------------------------------------------------------------------------- /test-suite/bugs/closed/3483.v: -------------------------------------------------------------------------------- 1 | (* Check proper failing when using notation of non-constructors in 2 | pattern-bmatching *) 3 | 4 | Fail Definition nonsense ( x : False ) := match x with y + 2 => 0 end. 5 | 6 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3487.v: -------------------------------------------------------------------------------- 1 | Notation bar := $(exact I)$. 2 | Notation foo := bar (only parsing). 3 | Class baz := { x : False }. 4 | Instance: baz. 5 | Admitted. 6 | Definition baz0 := ((_ : baz) = (_ : baz)). 7 | Definition foo1 := (foo = foo). 8 | Definition baz1 := prod ((_ : baz) = (_ : baz)) (foo = foo). 9 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3520.v: -------------------------------------------------------------------------------- 1 | Set Primitive Projections. 2 | 3 | Record foo (A : Type) := 4 | { bar : Type ; baz := Set; bad : baz = bar }. 5 | 6 | Set Record Elimination Schemes. 7 | 8 | Record notprim : Prop := 9 | { irrel : True; relevant : nat }. 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3537.v: -------------------------------------------------------------------------------- 1 | (* Another instance of bug #3262, on looping in unification *) 2 | 3 | Inductive bool := true | false. 4 | 5 | Inductive RBT2 : forall a:bool, Type := 6 | Full2 : forall (a b c n:bool), 7 | forall H:RBT2 n, RBT2 n. 8 | 9 | Definition balance4 color p q r := 10 | match color, p, q, r with 11 | | _,_,_,_ => Full2 color p q r 12 | end. 13 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3542.v: -------------------------------------------------------------------------------- 1 | Section foo. 2 | Context {A:Type} {B : A -> Type}. 3 | Context (f : forall x, B x). 4 | Goal True. 5 | pose (r := fun k => existT (fun g => forall x, f x = g x) 6 | (fun x => projT1 (k x)) (fun x => projT2 (k x))). 7 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3562.v: -------------------------------------------------------------------------------- 1 | (* Should not be an anomaly as it was at some time in 2 | September/October 2014 but some "Disjunctive/conjunctive 3 | introduction pattern expected" error *) 4 | 5 | Theorem t: True. 6 | Fail destruct 0 as x. 7 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3593.v: -------------------------------------------------------------------------------- 1 | Set Universe Polymorphism. 2 | Set Printing All. 3 | Set Implicit Arguments. 4 | Record prod A B := pair { fst : A ; snd : B }. 5 | Goal forall x : prod Set Set, let f := @fst _ in f _ x = @fst _ _ x. 6 | simpl; intros. 7 | constr_eq (@fst Set Set x) (fst (A := Set) (B := Set) x). 8 | Fail progress change (@fst Set Set x) with (fst (A := Set) (B := Set) x). 9 | reflexivity. 10 | Qed. 11 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3616.v: -------------------------------------------------------------------------------- 1 | (* Was failing from April 2014 to September 2014 because of injection *) 2 | Goal forall P e es t, (e :: es = existT P tt t :: es)%list -> True. 3 | inversion 1. 4 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3623.v: -------------------------------------------------------------------------------- 1 | Require Import List. 2 | Goal (1 :: 2 :: nil) ++ (3::nil) = (1::2::3::nil). 3 | change (@app nat (?a :: ?b) ?c) with (a :: @app nat b c). 4 | Abort. 5 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3624.v: -------------------------------------------------------------------------------- 1 | Set Implicit Arguments. 2 | Module NonPrim. 3 | Class foo (m : Set) := { pf : m = m }. 4 | Notation pf' m := (pf (m := m)). 5 | End NonPrim. 6 | 7 | Module Prim. 8 | Set Primitive Projections. 9 | Class foo (m : Set) := { pf : m = m }. 10 | Notation pf' m := (pf (m:=m)). (* Wrong argument name: m. *) 11 | End Prim. -------------------------------------------------------------------------------- /test-suite/bugs/closed/3625.v: -------------------------------------------------------------------------------- 1 | Set Implicit Arguments. 2 | Set Primitive Projections. 3 | Record prod A B := pair { fst : A ; snd : B }. 4 | 5 | Goal forall x y : prod Set Set, x.(@fst _ _) = y.(@fst _ _). 6 | intros. 7 | refine (f_equal _ _). 8 | Undo. 9 | apply f_equal. 10 | admit. 11 | Qed. 12 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3628.v: -------------------------------------------------------------------------------- 1 | Module NonPrim. 2 | Class AClass := { x : Set }. 3 | Arguments x {AClass}. 4 | End NonPrim. 5 | Module Prim. 6 | Set Primitive Projections. 7 | Class AClass := { x : Set }. 8 | Arguments x {AClass}. 9 | End Prim. 10 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3633.v: -------------------------------------------------------------------------------- 1 | Set Typeclasses Strict Resolution. 2 | Class Contr (A : Type) := { center : A }. 3 | Definition foo {A} `{Contr A} : A. 4 | Proof. 5 | apply center. 6 | Undo. 7 | (* Ensure the constraints are solved independently, otherwise a frozen ?A 8 | makes a search for Contr ?A fail when finishing to apply (fun x => x) *) 9 | apply (fun x => x), center. 10 | Qed. -------------------------------------------------------------------------------- /test-suite/bugs/closed/3637.v: -------------------------------------------------------------------------------- 1 | 2 | Set Implicit Arguments. 3 | Set Primitive Projections. 4 | Record prod A B := pair { fst : A ; snd : B }. 5 | Goal forall x y : prod Set Set, fst x = fst y. 6 | intros. 7 | lazymatch goal with 8 | | [ |- context[@fst ?A ?B] ] => pose (@fst A B) as fst'; 9 | progress change (@fst Set Set) with fst' 10 | end. 11 | Abort. 12 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3653.v: -------------------------------------------------------------------------------- 1 | Require Setoid. 2 | 3 | Variables P Q : forall {T : Set}, T -> Prop. 4 | 5 | Lemma rule{T : Set}{x : T} : Q x <-> P x. admit. Qed. 6 | 7 | Goal forall (T : Set)(x : T), Q x <-> P x. 8 | Proof. 9 | intros T x. 10 | setoid_rewrite rule. 11 | reflexivity. 12 | Qed. 13 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3654.v: -------------------------------------------------------------------------------- 1 | Tactic Notation "mysimpl" "in" ne_hyp_list(hyps) := simpl in hyps. 2 | 3 | Goal 0+0=0->0+0=0->0=0. 4 | intros H1 H2. 5 | mysimpl in H1 H2. 6 | match goal with H:0=0 |- _ => exact H end. 7 | Qed. 8 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3657.v: -------------------------------------------------------------------------------- 1 | (* Check typing of replaced objects in change - even though the failure 2 | was already a proper error message (but with a helpless content) *) 3 | 4 | Class foo {A} {a : A} := { bar := a; baz : bar = bar }. 5 | Arguments bar {_} _ {_}. 6 | Instance: forall A a, @foo A a. 7 | intros; constructor. 8 | abstract reflexivity. 9 | Defined. 10 | Goal @bar _ Set _ = (@bar _ (fun _ : Set => Set) _) nat. 11 | Proof. 12 | Fail change (bar (fun _ : Set => Set)) with (bar Set). 13 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3670.v: -------------------------------------------------------------------------------- 1 | Set Universe Polymorphism. 2 | Module Type FOO. 3 | Parameter f : Type -> Type. 4 | Parameter h : forall T, f T. 5 | End FOO. 6 | 7 | Module Type BAR. 8 | Include FOO. 9 | End BAR. 10 | 11 | Module Type BAZ. 12 | Include FOO. 13 | End BAZ. 14 | 15 | Module BAR_FROM_BAZ (baz : BAZ) <: BAR. 16 | 17 | Definition f : Type -> Type. 18 | Proof. exact baz.f. Defined. 19 | 20 | Definition h : forall T, f T. 21 | Admitted. 22 | 23 | Fail End BAR_FROM_BAZ. 24 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3682.v: -------------------------------------------------------------------------------- 1 | Class Foo. 2 | Definition bar `{Foo} (x : Set) := Set. 3 | Instance: Foo. 4 | Definition bar1 := bar nat. 5 | Definition bar2 := bar $(admit)$. 6 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3684.v: -------------------------------------------------------------------------------- 1 | Definition foo : Set. 2 | Proof. 3 | refine ($(abstract admit)$). 4 | Qed. 5 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3723.v: -------------------------------------------------------------------------------- 1 | (* Bugs #3787 and #3723 on reinitializing camlp5 levels *) 2 | 3 | Definition a := True. 4 | Reserved Notation "-- x" (at level 50, x at level 20). 5 | Reserved Notation "--- x" (at level 20). 6 | Reset a. 7 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3788.v: -------------------------------------------------------------------------------- 1 | Set Implicit Arguments. 2 | Global Set Primitive Projections. 3 | Record Functor (C D : Type) := { object_of :> forall _ : C, D }. 4 | Axiom path_functor_uncurried : forall C D (F G : Functor C D) (_ : sigT (fun HO : object_of F = object_of G => Set)), F = G. 5 | Fail Lemma path_functor_uncurried_snd C D F G HO HM 6 | : (@path_functor_uncurried C D F G (existT _ HO HM)) = HM. 7 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3792.v: -------------------------------------------------------------------------------- 1 | Fail Definition pull_if_dep 2 | : forall {A} (P : bool -> Type) (a : A true) (a' : A false) 3 | (b : bool), 4 | P (if b as b return A b then a else a'). 5 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3804.v: -------------------------------------------------------------------------------- 1 | Set Universe Polymorphism. 2 | Module Foo. 3 | Definition T : sigT (fun x => x). 4 | Proof. 5 | exists Set. 6 | abstract exact nat. 7 | Defined. 8 | End Foo. 9 | Module Bar. 10 | Include Foo. 11 | End Bar. 12 | Definition foo := eq_refl : Foo.T = Bar.T. 13 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3821.v: -------------------------------------------------------------------------------- 1 | Inductive quotient {A : Type@{i}} {B : Type@{j}} : Type@{max(i, j)} := . 2 | 3 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/3828.v: -------------------------------------------------------------------------------- 1 | Goal 0 = 0. 2 | Fail pose ?Goal. 3 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/545.v: -------------------------------------------------------------------------------- 1 | Require Export Reals. 2 | 3 | Parameter toto : nat -> nat -> nat. 4 | 5 | Notation " e # f " := (toto e f) (at level 30, f at level 0). 6 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/931.v: -------------------------------------------------------------------------------- 1 | Parameter P : forall n : nat, n=n -> Prop. 2 | 3 | Goal Prop. 4 | refine (P _ _). 5 | 2:instantiate (1:=0). 6 | trivial. 7 | Qed. 8 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/HoTT_coq_001.v: -------------------------------------------------------------------------------- 1 | Record Foo : Set := 2 | { 3 | A' : nat; 4 | A : Prop := (A' = 0) 5 | }. (* Anomaly: Uncaught exception Reduction.NotConvertible. Please report. *) 6 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/HoTT_coq_010.v: -------------------------------------------------------------------------------- 1 | SearchAbout and. 2 | (* Anomaly: Mismatched instance and context when building universe substitution. 3 | Please report. *) 4 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/HoTT_coq_012.v: -------------------------------------------------------------------------------- 1 | (* -*- mode: coq; coq-prog-args: ("-emacs" "-indices-matter") -*- *) 2 | 3 | Definition UU := Type. 4 | Inductive toto (B : UU) : UU := c (x : B). 5 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/HoTT_coq_037.v: -------------------------------------------------------------------------------- 1 | Set Printing Universes. 2 | 3 | Fixpoint CardinalityRepresentative (n : nat) : Set := 4 | match n with 5 | | O => Empty_set 6 | | S n' => sum (CardinalityRepresentative n') unit 7 | end. 8 | (* Toplevel input, characters 104-143: 9 | Error: 10 | In environment 11 | CardinalityRepresentative : nat -> Set 12 | n : nat 13 | n' : nat 14 | The term "(CardinalityRepresentative n' + unit)%type" has type 15 | "Type (* max(Top.73, Top.74) *)" while it is expected to have type 16 | "Set". *) 17 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/HoTT_coq_048.v: -------------------------------------------------------------------------------- 1 | (** This is not the issue of https://github.com/HoTT/coq/issues/48, but was mentioned there. *) 2 | Record Foo := 3 | { 4 | foo := 1; 5 | bar : foo = foo 6 | }. 7 | (* Anomaly: lookup_projection: constant is not a projection. Please report. *) 8 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/HoTT_coq_049.v: -------------------------------------------------------------------------------- 1 | Require Import FunctionalExtensionality. 2 | 3 | Goal forall y, @f_equal = y. 4 | intro. 5 | apply functional_extensionality_dep. 6 | (* Error: Ill-typed evar instance in HoTT/coq, Anomaly: Uncaught exception Reductionops.NotASort(_). Please report. before that. *) 7 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/HoTT_coq_052.v: -------------------------------------------------------------------------------- 1 | Goal Type = Type. 2 | Fail match goal with |- ?x = ?x => idtac end. 3 | Abort. 4 | 5 | Goal Prop. 6 | Fail match goal with |- Type => idtac end. 7 | Abort. 8 | 9 | Goal Prop = Set. 10 | (* This should fail *) 11 | Fail match goal with |- ?x = ?x => idtac x end. 12 | Abort. 13 | 14 | Goal Type = Prop. 15 | (* This should fail *) 16 | Fail match goal with |- ?x = ?x => idtac end. 17 | Abort. 18 | 19 | Goal Type = Set. 20 | (* This should fail *) 21 | Fail match goal with |- ?x = ?x => idtac end. 22 | Abort. 23 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/HoTT_coq_071.v: -------------------------------------------------------------------------------- 1 | Set Universe Polymorphism. 2 | Definition foo : True. 3 | abstract exact I. 4 | Defined. 5 | Eval hnf in foo. (* Should not be [I] *) 6 | Goal True. 7 | Proof. 8 | Fail unify foo I. 9 | Abort. 10 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/HoTT_coq_074.v: -------------------------------------------------------------------------------- 1 | Monomorphic Definition U1 := Type. 2 | Monomorphic Definition U2 := Type. 3 | 4 | Set Printing Universes. 5 | Definition foo : True. 6 | let t1 := type of U1 in 7 | let t2 := type of U2 in 8 | idtac t1 t2; 9 | pose (t1 : t2). exact I. 10 | Defined. 11 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/HoTT_coq_079.v: -------------------------------------------------------------------------------- 1 | Set Primitive Projections. 2 | Set Implicit Arguments. 3 | Set Universe Polymorphism. 4 | 5 | Inductive paths A (x : A) : A -> Type := idpath : paths x x. 6 | 7 | Notation "x = y :> A" := (@paths A x y). 8 | Notation "x = y" := (x = y :> _). 9 | 10 | Record foo := { x : Type; H : x = x }. 11 | 12 | Create HintDb bar discriminated. 13 | Hint Resolve H : bar. 14 | Goal forall y : foo, @x y = @x y. 15 | intro y. 16 | progress auto with bar. (* failed to progress *) 17 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/HoTT_coq_081.v: -------------------------------------------------------------------------------- 1 | Set Primitive Projections. 2 | Set Implicit Arguments. 3 | Set Universe Polymorphism. 4 | 5 | Record category (A : Type) := 6 | { ob :> Type; 7 | hom : ob -> ob -> Type 8 | }. 9 | 10 | Record foo { A: Type } := { C : category A; x : ob C; y :> hom _ x x }. 11 | Definition comp A (C : category A) (x : C) (f : hom _ x x) := f. 12 | 13 | Definition bar A (f : @foo A) := @comp _ _ _ f. 14 | 15 | (* Toplevel input, characters 0-42: 16 | Error: Cannot find the target class. *) 17 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/HoTT_coq_087.v: -------------------------------------------------------------------------------- 1 | Structure type : Type := Pack { ob : Type }. 2 | Polymorphic Record category := { foo : Type }. 3 | Definition FuncComp := Pack category. 4 | Axiom C : category. 5 | 6 | Check (C : ob FuncComp). (* OK *) 7 | 8 | Canonical Structure FuncComp. 9 | 10 | Check (C : ob FuncComp). 11 | (* Toplevel input, characters 15-39: 12 | Error: 13 | The term "C" has type "category" while it is expected to have type 14 | "ob FuncComp". *) 15 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/HoTT_coq_094.v: -------------------------------------------------------------------------------- 1 | Record PreCategory := Build_PreCategory' { object :> Type }. 2 | Class Foo (X : Type) := {}. 3 | Class Bar := {}. 4 | Definition functor_category `{Bar} (C D : PreCategory) `{Foo (object D)} : PreCategory. 5 | Admitted. 6 | Fail Definition functor_object_of `{Bar} (C1 C2 D : PreCategory) `{Foo (object D)} 7 | : functor_category C1 (functor_category C2 D) -> True. 8 | (** Anomaly: File "toplevel/himsg.ml", line ..., characters ...: Assertion failed. 9 | Please report. *) 10 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/HoTT_coq_097.v: -------------------------------------------------------------------------------- 1 | (* -*- mode: coq; coq-prog-args: ("-emacs" "-indices-matter") -*- *) 2 | Set Universe Polymorphism. 3 | Set Printing Universes. 4 | Inductive Empty : Set := . 5 | (* Error: Universe inconsistency. Cannot enforce Prop <= Set). *) 6 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/HoTT_coq_103.v: -------------------------------------------------------------------------------- 1 | Fail Check (nat : Type) : Set. 2 | (* Error: 3 | The term "nat:Type" has type "Type" while it is expected to have type 4 | "Set" (Universe inconsistency). *) 5 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/HoTT_coq_104.v: -------------------------------------------------------------------------------- 1 | Set Implicit Arguments. 2 | 3 | Require Import Logic. 4 | 5 | Global Set Universe Polymorphism. 6 | Global Set Asymmetric Patterns. 7 | Local Set Record Elimination Schemes. 8 | Local Set Primitive Projections. 9 | 10 | Record prod (A B : Type) : Type := 11 | pair { fst : A; snd : B }. 12 | 13 | Check fun x : prod Set Set => eq_refl : x = pair (fst x) (snd x). 14 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/HoTT_coq_114.v: -------------------------------------------------------------------------------- 1 | Inductive test : $(let U := type of Type in exact U)$ := t. 2 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/HoTT_coq_115.v: -------------------------------------------------------------------------------- 1 | Inductive T : let U := Type in U := t. (* Anomaly: not an arity. Please report. *) 2 | -------------------------------------------------------------------------------- /test-suite/bugs/closed/HoTT_coq_116.v: -------------------------------------------------------------------------------- 1 | Set Universe Polymorphism. 2 | Section foo. 3 | Let U := Type. 4 | Let U' : Type. 5 | Proof. 6 | let U' := constr:(Type) in 7 | let U_le_U' := constr:(fun x : U => (x : U')) in 8 | exact U'. 9 | Defined. 10 | Inductive t : U' := . 11 | End foo. 12 | (* Toplevel input, characters 15-23: 13 | Error: No such section variable or assumption: U'. *) 14 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/1338.v-disabled: -------------------------------------------------------------------------------- 1 | Require Import Omega. 2 | 3 | Goal forall x, 0 <= x -> x <= 20 -> 4 | x <> 0 5 | -> x <> 1 -> x <> 2 -> x <> 3 -> x <>4 -> x <> 5 -> x <> 6 -> x <> 7 -> x <> 8 6 | -> x <> 9 -> x <> 10 7 | -> x <> 11 -> x <> 12 -> x <> 13 -> x <> 14 -> x <> 15 -> x <> 16 -> x <> 17 8 | -> x <> 18 -> x <> 19 -> x <> 20 -> False. 9 | Proof. 10 | intros. 11 | Fail omega. 12 | Abort. 13 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/1671.v: -------------------------------------------------------------------------------- 1 | (* Exemple soumis par Pierre Corbineau (bug #1671) *) 2 | 3 | CoInductive hdlist : unit -> Type := 4 | | cons : hdlist tt -> hdlist tt. 5 | 6 | Variable P : forall bo, hdlist bo -> Prop. 7 | Variable all : forall bo l, P bo l. 8 | 9 | Fail Definition F (l:hdlist tt) : P tt l := 10 | match l in hdlist u return P u l with 11 | | cons (cons l') => all tt _ 12 | end. 13 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/1811.v: -------------------------------------------------------------------------------- 1 | Require Export Bool. 2 | 3 | Lemma neg2xor : forall b, xorb true b = negb b. 4 | Proof. auto. Qed. 5 | 6 | Goal forall b1 b2, (negb b1 = b2) -> xorb true b1 = b2. 7 | Proof. 8 | intros b1 b2. 9 | Fail rewrite neg2xor. 10 | Abort. -------------------------------------------------------------------------------- /test-suite/bugs/opened/2800.v: -------------------------------------------------------------------------------- 1 | Goal False. 2 | 3 | Fail intuition 4 | match goal with 5 | | |- _ => idtac " foo" 6 | end. 7 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/2814.v: -------------------------------------------------------------------------------- 1 | Require Import Program. 2 | 3 | Goal forall (x : Type) (f g : Type -> Type) (H : f x ~= g x), False. 4 | intros. 5 | Fail induction H. 6 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/2951.v: -------------------------------------------------------------------------------- 1 | Class C (A: Type) : Type := { f: A }. 2 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3010.v-disabled: -------------------------------------------------------------------------------- 1 | Definition em {A R} (k : forall s : sum A _, match s with inl x => R x | inr y => R end) := k (inr (fun x => k (inl x))). -------------------------------------------------------------------------------- /test-suite/bugs/opened/3071.v: -------------------------------------------------------------------------------- 1 | Definition foo := True. 2 | 3 | Section foo. 4 | Global Arguments foo / . 5 | Fail End foo. 6 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3092.v: -------------------------------------------------------------------------------- 1 | Fail Fixpoint le_pred (n1 n2 : nat) (H1 : n1 <= n2) : pred n1 <= pred n2 := 2 | match H1 with 3 | | le_n => le_n (pred _) 4 | | le_S _ H2 => 5 | match n2 with 6 | | 0 => fun H3 => H3 7 | | S _ => le_S _ _ 8 | end (le_pred _ _ H2) 9 | end. 10 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3100.v: -------------------------------------------------------------------------------- 1 | Fixpoint F (n : nat) (A : Type) : Type := 2 | match n with 3 | | 0 => True 4 | | S n => forall (x : A), F n (x = x) 5 | end. 6 | 7 | Goal forall A n, (forall (x : A) (e : x = x), F n (e = e)). 8 | intros A n. 9 | Fail change (forall x, F n (x = x)) with (F (S n)). 10 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3186.v-disabled: -------------------------------------------------------------------------------- 1 | Fixpoint a (_:unit):= 2 | match eq_refl with 3 | |eq_refl => a 4 | end. -------------------------------------------------------------------------------- /test-suite/bugs/opened/3230.v: -------------------------------------------------------------------------------- 1 | Structure type : Type := Pack { ob : Type }. 2 | Polymorphic Record category := { foo : Type }. 3 | Definition FuncComp := Pack category. 4 | Axiom C : category. 5 | 6 | Check (C : ob FuncComp). (* OK *) 7 | 8 | Canonical Structure FuncComp. 9 | 10 | Check (C : ob FuncComp). 11 | (* Toplevel input, characters 15-39: 12 | Error: 13 | The term "C" has type "category" while it is expected to have type 14 | "ob FuncComp". *) 15 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3248.v: -------------------------------------------------------------------------------- 1 | Ltac ret_and_left f := 2 | let tac := ret_and_left in 3 | let T := type of f in 4 | lazymatch eval hnf in T with 5 | | ?T' -> _ => 6 | let ret := constr:(fun x' : T' => $(tac (f x'))$) in 7 | exact ret 8 | | ?T' => exact f 9 | end. 10 | 11 | Goal forall A B : Prop, forall x y : A, True. 12 | Proof. 13 | intros A B x y. 14 | pose (f := fun (x y : A) => conj x y). 15 | pose (a := $(ret_and_left f)$). 16 | Fail unify (a x y) (conj x y). 17 | Abort. 18 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3277.v: -------------------------------------------------------------------------------- 1 | Tactic Notation "evarr" open_constr(x) := let y := constr:(x) in exact y. 2 | 3 | Goal True. 4 | evarr _. 5 | Admitted. 6 | Goal True. 7 | Fail exact $(evarr _)$. (* Error: Cannot infer this placeholder. *) 8 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3304.v: -------------------------------------------------------------------------------- 1 | Fail Notation "( x , y , .. , z )" := $(let r := constr:(prod .. (prod x y) .. z) in r)$. 2 | (* The command has indeed failed with message: 3 | => Error: Special token .. is for use in the Notation command. *) 4 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3311.v: -------------------------------------------------------------------------------- 1 | Require Import Setoid. 2 | Axiom bar : True = False. 3 | Goal True. 4 | Fail setoid_rewrite bar. (* Toplevel input, characters 15-33: 5 | Error: 6 | Tactic failure:setoid rewrite failed: Unable to satisfy the rewriting constraints. 7 | 8 | Could not find an instance for "subrelation eq (Basics.flip Basics.impl)". 9 | With the following constraints: 10 | ?3 : "True" *) 11 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3312.v: -------------------------------------------------------------------------------- 1 | Require Import Setoid. 2 | Axiom bar : 0 = 1. 3 | Goal 0 = 1. 4 | Fail rewrite_strat bar. (* Toplevel input, characters 15-32: 5 | Error: Tactic failure:setoid rewrite failed: Nothing to rewrite. *) 6 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3320.v: -------------------------------------------------------------------------------- 1 | Goal forall x : nat, True. 2 | fix 1. 3 | assumption. 4 | Fail Qed. 5 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3326.v: -------------------------------------------------------------------------------- 1 | Class ORDER A := Order { 2 | LEQ : A -> A -> bool; 3 | leqRefl: forall x, true = LEQ x x 4 | }. 5 | 6 | Section XXX. 7 | 8 | Variable A:Type. 9 | Variable (O:ORDER A). 10 | Definition aLeqRefl := @leqRefl _ O. 11 | 12 | Lemma OK : forall x, true = LEQ x x. 13 | intros. 14 | unfold LEQ. 15 | destruct O. 16 | clear. 17 | Fail apply aLeqRefl. (* Toplevel input, characters 15-30: 18 | Anomaly: Uncaught exception Not_found(_). Please report. *) 19 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3357.v: -------------------------------------------------------------------------------- 1 | Notation D1 := (forall {T : Type} ( x : T ) , Type). 2 | 3 | Definition DD1 ( A : forall {T : Type} (x : T), Type ) := A 1. 4 | Fail Definition DD1' ( A : D1 ) := A 1. (* Toplevel input, characters 32-33: 5 | Error: In environment 6 | A : forall T : Type, T -> Type 7 | The term "1" has type "nat" while it is expected to have type 8 | "Type". 9 | *) 10 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3370.v: -------------------------------------------------------------------------------- 1 | Require Import String. 2 | 3 | Local Ltac set_strings := 4 | let s := match goal with |- context[String ?s1 ?s2] => constr:(String s1 s2) end in 5 | let H := fresh s in 6 | set (H := s). 7 | 8 | Local Open Scope string_scope. 9 | 10 | Goal "asdf" = "bds". 11 | Fail set_strings. (* Error: Ltac variable s is bound to "asdf" which cannot be coerced to 12 | a fresh identifier. *) 13 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3383.v: -------------------------------------------------------------------------------- 1 | Goal forall b : bool, match b as b' return if b' then True else True with true => I | false => I end = match b as b' return if b' then True else True with true => I | false => I end. 2 | intro. 3 | Fail lazymatch goal with 4 | | [ |- appcontext[match ?b as b' return @?P b' with true => ?t | false => ?f end] ] 5 | => change (match b as b' return P b with true => t | false => f end) with (@bool_rect P t f) 6 | end. (* Toplevel input, characters 153-154: 7 | Error: The reference P was not found in the current environment. *) 8 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3410.v: -------------------------------------------------------------------------------- 1 | Fail repeat match goal with H:_ |- _ => setoid_rewrite X in H end. 2 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3461.v: -------------------------------------------------------------------------------- 1 | Lemma foo (b : bool) : 2 | exists x : nat, x = x. 3 | Proof. 4 | eexists. 5 | Fail eexact (eq_refl b). 6 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3463.v: -------------------------------------------------------------------------------- 1 | Tactic Notation "test1" open_constr(t) ident(r):= 2 | pose t. 3 | Tactic Notation "test2" constr(r) open_constr(t):= 4 | pose t. 5 | Tactic Notation "test3" open_constr(t) constr(r):= 6 | pose t. 7 | 8 | Goal True. 9 | test1 (1 + _) nat. 10 | test2 nat (1 + _). 11 | test3 (1 + _) nat. 12 | test3 (1 + _ : nat) nat. 13 | 14 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3467.v: -------------------------------------------------------------------------------- 1 | Module foo. 2 | Notation x := $(exact I)$. 3 | End foo. 4 | Module bar. 5 | Fail Include foo. 6 | End bar. 7 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3478.v-disabled: -------------------------------------------------------------------------------- 1 | Set Primitive Projections. 2 | Record foo := { foom :> Type }. 3 | Canonical Structure default_foo := fun T => {| foom := T |}. 4 | Record bar T := { bar1 : T }. 5 | Goal forall (s : foo) (x : foom s), True. 6 | Proof. 7 | intros. 8 | Timeout 1 pose (x : bar _) as x'. -------------------------------------------------------------------------------- /test-suite/bugs/opened/3491.v: -------------------------------------------------------------------------------- 1 | Fail Inductive list (A : Type) (T := A) : Type := 2 | nil : list A | cons : T -> list T -> list A. 3 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3554.v: -------------------------------------------------------------------------------- 1 | Fail Example foo (f : forall {_ : Type}, Type) : Type. 2 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3562.v: -------------------------------------------------------------------------------- 1 | Theorem t: True. 2 | Fail destruct 0 as x. 3 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3626.v: -------------------------------------------------------------------------------- 1 | Set Implicit Arguments. 2 | Set Primitive Projections. 3 | Record prod A B := pair { fst : A ; snd : B }. 4 | 5 | Fail Goal forall x y : prod Set Set, x.(@fst) = y.(@fst). 6 | (* intros. 7 | apply f_equal. *) 8 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3655.v: -------------------------------------------------------------------------------- 1 | Ltac bar x := pose x. 2 | Tactic Notation "foo" open_constr(x) := bar x. 3 | Class baz := { baz' : Type }. 4 | Goal True. 5 | (* Original error was an anomaly which is fixed; now, it succeeds but 6 | leaving an evar, while calling pose would not leave an evar, so I 7 | guess it is still a bug in the sense that the semantics of pose is 8 | not preserved *) 9 | foo baz'. 10 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3670.v: -------------------------------------------------------------------------------- 1 | Module Type FOO. 2 | Parameters P Q : Type -> Type. 3 | End FOO. 4 | 5 | Module Type BAR. 6 | Declare Module Export foo : FOO. 7 | Parameter f : forall A, P A -> Q A -> A. 8 | End BAR. 9 | 10 | Module Type BAZ. 11 | Declare Module Export foo : FOO. 12 | Parameter g : forall A, P A -> Q A -> A. 13 | End BAZ. 14 | 15 | Module BAR_FROM_BAZ (baz : BAZ) : BAR. 16 | Import baz. 17 | Module foo <: FOO := foo. 18 | Definition f : forall A, P A -> Q A -> A := g. 19 | End BAR_FROM_BAZ. 20 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3681.v: -------------------------------------------------------------------------------- 1 | Module Type FOO. 2 | Parameters P Q : Type -> Type. 3 | End FOO. 4 | 5 | Module Type BAR. 6 | Declare Module Import foo : FOO. 7 | Parameter f : forall A, P A -> Q A -> A. 8 | End BAR. 9 | 10 | Module Type BAZ. 11 | Declare Module Export foo : FOO. 12 | Parameter g : forall A, P A -> Q A -> A. 13 | End BAZ. 14 | 15 | Module BAR_FROM_BAZ (baz : BAZ) : BAR. 16 | Import baz. 17 | Module foo <: FOO := foo. 18 | Import foo. 19 | Definition f : forall A, P A -> Q A -> A := g. 20 | End BAR_FROM_BAZ. 21 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3753.v: -------------------------------------------------------------------------------- 1 | Axiom foo : Type -> Type. 2 | Axiom bar : forall (T : Type), T -> foo T. 3 | Arguments bar A x : rename. 4 | Fail About bar. 5 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3788.v: -------------------------------------------------------------------------------- 1 | Set Implicit Arguments. 2 | Global Set Primitive Projections. 3 | Record Functor (C D : Type) := { object_of :> forall _ : C, D }. 4 | Axiom path_functor_uncurried : forall C D (F G : Functor C D) (_ : sigT (fun HO : object_of F = object_of G => Set)), F = G. 5 | Fail Lemma path_functor_uncurried_snd C D F G HO HM : (@path_functor_uncurried C D F G (existT _ HO HM)) = HM. 6 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3808.v: -------------------------------------------------------------------------------- 1 | Inductive Foo : (let enforce := (fun x => x) : Type@{j} -> Type@{i} in Type@{i}) 2 | := foo : Foo. 3 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3819.v: -------------------------------------------------------------------------------- 1 | Set Universe Polymorphism. 2 | 3 | Record Op := { t : Type ; op : t -> t }. 4 | 5 | Canonical Structure OpType : Op := Build_Op Type (fun X => X). 6 | 7 | Lemma test1 (X:Type) : eq (op OpType X) X. 8 | Proof eq_refl. 9 | 10 | Lemma test2 (A:Type) : eq (op _ A) A. 11 | Fail Proof eq_refl. 12 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/3849.v: -------------------------------------------------------------------------------- 1 | Tactic Notation "foo" hyp_list(hs) := clear hs. 2 | 3 | Tactic Notation "bar" hyp_list(hs) := foo hs. 4 | 5 | Goal True. 6 | do 5 pose proof 0 as ?n0. 7 | foo n1 n2. 8 | Fail bar n3 n4. 9 | -------------------------------------------------------------------------------- /test-suite/bugs/opened/743.v: -------------------------------------------------------------------------------- 1 | Require Import Omega. 2 | 3 | Lemma foo : forall n m : Z, (n >= 0)%Z -> (n * m >= 0)%Z -> (n <= n + n * m)%Z. 4 | Proof. 5 | intros. omega. 6 | Qed. 7 | 8 | Lemma foo' : forall n m : nat, n <= n + n * m. 9 | Proof. 10 | intros. Fail omega. 11 | Abort. 12 | 13 | -------------------------------------------------------------------------------- /test-suite/check: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | MAKE="${MAKE:=make}" 4 | 5 | ${MAKE} clean > /dev/null 2>&1 6 | ${MAKE} all > /dev/null 2>&1 7 | cat summary.log 8 | -------------------------------------------------------------------------------- /test-suite/complexity/Notations.v: -------------------------------------------------------------------------------- 1 | (* Last line should not loop, even in the presence of eta-expansion in the *) 2 | (* printing mechanism *) 3 | (* Expected time < 1.00s *) 4 | 5 | Notation "'bind' x <- y ; z" :=(y (fun x => z)) (at level 99, x at 6 | level 0, y at level 0,format "'[hv' 'bind' x <- y ; '/' z ']'"). 7 | 8 | Definition f (g : (nat -> nat) -> nat) := g (fun x => 0). 9 | 10 | Time Check (fun g => f g). 11 | -------------------------------------------------------------------------------- /test-suite/complexity/ring.v: -------------------------------------------------------------------------------- 1 | (* This example, checks the efficiency of the abstract machine used by ring *) 2 | (* Expected time < 1.00s *) 3 | 4 | Require Import ZArith. 5 | Open Scope Z_scope. 6 | Goal forall a, a+a+a+a+a+a+a+a+a+a+a+a+a = a*13. 7 | Timeout 5 Time intro; ring. 8 | -------------------------------------------------------------------------------- /test-suite/complexity/setoid_rewrite.v: -------------------------------------------------------------------------------- 1 | (* Check bug #1176 *) 2 | (* Expected time < 0.50s *) 3 | 4 | Require Import Setoid. 5 | 6 | Variable f : nat -> Prop. 7 | 8 | Goal forall U:Prop, f 100 <-> U. 9 | intros U. 10 | Timeout 5 Time setoid_replace U with False. 11 | -------------------------------------------------------------------------------- /test-suite/csdp.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pirapira/coq2rust/22e8aaefc723bfb324ca2001b2b8e51fcc923543/test-suite/csdp.cache -------------------------------------------------------------------------------- /test-suite/failure/Case1.v: -------------------------------------------------------------------------------- 1 | Fail Type match 0 with 2 | | x => 0 3 | | O => 1 4 | end. 5 | -------------------------------------------------------------------------------- /test-suite/failure/Case10.v: -------------------------------------------------------------------------------- 1 | Fail Type (fun x : nat => match x return nat with 2 | | S x as b => S b 3 | end). 4 | -------------------------------------------------------------------------------- /test-suite/failure/Case11.v: -------------------------------------------------------------------------------- 1 | Fail Type (fun x : nat => match x return nat with 2 | | S x as b => S b x 3 | end). 4 | -------------------------------------------------------------------------------- /test-suite/failure/Case12.v: -------------------------------------------------------------------------------- 1 | 2 | Fail Type 3 | (fun x : nat => 4 | match x return nat with 5 | | S x as b => match x with 6 | | x => x 7 | end 8 | end). 9 | -------------------------------------------------------------------------------- /test-suite/failure/Case13.v: -------------------------------------------------------------------------------- 1 | Fail Type 2 | (fun x : nat => 3 | match x return nat with 4 | | S x as b => match x with 5 | | x => S b x 6 | end 7 | end). 8 | -------------------------------------------------------------------------------- /test-suite/failure/Case14.v: -------------------------------------------------------------------------------- 1 | Inductive List (A : Set) : Set := 2 | | Nil : List A 3 | | Cons : A -> List A -> List A. 4 | 5 | Definition NIL := Nil nat. 6 | Fail Type match Nil nat return (List nat) with 7 | | NIL => NIL 8 | | _ => NIL 9 | end. 10 | -------------------------------------------------------------------------------- /test-suite/failure/Case15.v: -------------------------------------------------------------------------------- 1 | (* Non exhaustive pattern-matching *) 2 | 3 | Fail Check 4 | (fun x => 5 | match x, x with 6 | | O, S (S y) => true 7 | | O, S x => false 8 | | S y, O => true 9 | end). 10 | -------------------------------------------------------------------------------- /test-suite/failure/Case16.v: -------------------------------------------------------------------------------- 1 | (* Check for redundant clauses *) 2 | 3 | Fail Check 4 | (fun x => 5 | match x, x with 6 | | O, S (S y) => true 7 | | S _, S (S y) => true 8 | | _, S (S x) => false 9 | | S y, O => true 10 | | _, _ => true 11 | end). 12 | -------------------------------------------------------------------------------- /test-suite/failure/Case2.v: -------------------------------------------------------------------------------- 1 | Inductive IFExpr : Set := 2 | | Var : nat -> IFExpr 3 | | Tr : IFExpr 4 | | Fa : IFExpr 5 | | IfE : IFExpr -> IFExpr -> IFExpr -> IFExpr. 6 | 7 | Fail Type 8 | (fun F : IFExpr => 9 | match F return Prop with 10 | | IfE (Var _) H I => True 11 | | IfE _ _ _ => False 12 | | _ => True 13 | end). 14 | -------------------------------------------------------------------------------- /test-suite/failure/Case3.v: -------------------------------------------------------------------------------- 1 | Inductive List (A : Set) : Set := 2 | | Nil : List A 3 | | Cons : A -> List A -> List A. 4 | 5 | Fail Type 6 | (fun l : List nat => 7 | match l return nat with 8 | | Nil nat => 0 9 | | Cons a l => S a 10 | end). 11 | -------------------------------------------------------------------------------- /test-suite/failure/Case4.v: -------------------------------------------------------------------------------- 1 | 2 | Fail Definition Berry (x y z : bool) := 3 | match x, y, z with 4 | | true, false, _ => 0 5 | | false, _, true => 1 6 | | _, true, false => 2 7 | end. 8 | -------------------------------------------------------------------------------- /test-suite/failure/Case5.v: -------------------------------------------------------------------------------- 1 | Inductive MS : Set := 2 | | X : MS -> MS 3 | | Y : MS -> MS. 4 | 5 | Fail Type (fun p : MS => match p return nat with 6 | | X x => 0 7 | end). 8 | -------------------------------------------------------------------------------- /test-suite/failure/Case6.v: -------------------------------------------------------------------------------- 1 | Inductive List (A : Set) : Set := 2 | | Nil : List A 3 | | Cons : A -> List A -> List A. 4 | 5 | Fail Type (match Nil nat return List nat with 6 | | NIL => NIL 7 | | (CONS _ _) => NIL 8 | end). 9 | -------------------------------------------------------------------------------- /test-suite/failure/Case7.v: -------------------------------------------------------------------------------- 1 | Inductive listn : nat -> Set := 2 | | niln : listn 0 3 | | consn : forall n : nat, nat -> listn n -> listn (S n). 4 | 5 | Definition length1 (n : nat) (l : listn n) := 6 | match l with 7 | | consn n _ (consn m _ _) => S (S m) 8 | | consn n _ _ => 1 9 | | _ => 0 10 | end. 11 | 12 | Fail Type 13 | (fun (n : nat) (l : listn n) => 14 | match n return nat with 15 | | O => 0 16 | | S n => match l return nat with 17 | | niln => 1 18 | | l' => length1 (S n) l' 19 | end 20 | end). 21 | -------------------------------------------------------------------------------- /test-suite/failure/Case8.v: -------------------------------------------------------------------------------- 1 | Inductive List (A : Set) : Set := 2 | | Nil : List A 3 | | Cons : A -> List A -> List A. 4 | 5 | Fail Type match Nil nat return nat with 6 | | b => b 7 | | Cons _ _ _ as d => d 8 | end. 9 | -------------------------------------------------------------------------------- /test-suite/failure/Case9.v: -------------------------------------------------------------------------------- 1 | Parameter compare : forall n m : nat, {n < m} + {n = m} + {n > m}. 2 | Fail Type 3 | match compare 0 0 return nat with 4 | 5 | (* k 0 6 | (* k=i *) | left _ _ => 0 7 | (* k>i *) | right _ _ => 0 8 | end. 9 | -------------------------------------------------------------------------------- /test-suite/failure/ClearBody.v: -------------------------------------------------------------------------------- 1 | (* ClearBody must check that removing the body of definition does not 2 | invalidate the well-typabilility of the visible goal *) 3 | 4 | Goal True. 5 | set (n := 0) in *. 6 | set (I := refl_equal 0) in *. 7 | change (n = 0) in (type of I). 8 | Fail clearbody n. 9 | -------------------------------------------------------------------------------- /test-suite/failure/ImportedCoercion.v: -------------------------------------------------------------------------------- 1 | (* Test visibility of coercions *) 2 | 3 | Require Import make_local. 4 | 5 | (* Local coercion must not be used *) 6 | 7 | Fail Check (0 = true). 8 | -------------------------------------------------------------------------------- /test-suite/failure/Notations.v: -------------------------------------------------------------------------------- 1 | (* Submitted by Roland Zumkeller *) 2 | 3 | Notation "! A" := (forall i:nat, A) (at level 60). 4 | 5 | (* Should fail: no dynamic capture *) 6 | Fail Check ! (i=i). 7 | 8 | -------------------------------------------------------------------------------- /test-suite/failure/Reordering.v: -------------------------------------------------------------------------------- 1 | (* Testing that hypothesis order (following a conversion/folding) is checked *) 2 | 3 | Goal forall (A:Set) (x:A) (A':=A), True. 4 | intros. 5 | Fail change ((fun (_:A') => Set) x) in (type of A). 6 | -------------------------------------------------------------------------------- /test-suite/failure/Sections.v: -------------------------------------------------------------------------------- 1 | Module A. 2 | Section B. 3 | Fail End A. 4 | (*End A.*) 5 | -------------------------------------------------------------------------------- /test-suite/failure/autorewritein.v: -------------------------------------------------------------------------------- 1 | Variable Ack : nat -> nat -> nat. 2 | 3 | Axiom Ack0 : forall m : nat, Ack 0 m = S m. 4 | Axiom Ack1 : forall n : nat, Ack (S n) 0 = Ack n 1. 5 | Axiom Ack2 : forall n m : nat, Ack (S n) (S m) = Ack n (Ack (S n) m). 6 | 7 | Hint Rewrite Ack0 Ack1 Ack2 : base0. 8 | 9 | Lemma ResAck2 : forall H:(Ack 2 2 = 7 -> False), H=H -> False. 10 | Proof. 11 | intros. 12 | Fail autorewrite with base0 in * using try (apply H1;reflexivity). 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /test-suite/failure/cases.v: -------------------------------------------------------------------------------- 1 | (* Non exhaustive pattern-matching *) 2 | 3 | Fail Check 4 | (fun x => 5 | match x, x with 6 | | O, S (S y) => true 7 | | O, S x => false 8 | | S y, O => true 9 | end). 10 | -------------------------------------------------------------------------------- /test-suite/failure/check.v: -------------------------------------------------------------------------------- 1 | Implicit Arguments eq [A]. 2 | 3 | Fail Check (bool = true). 4 | -------------------------------------------------------------------------------- /test-suite/failure/circular_subtyping.v: -------------------------------------------------------------------------------- 1 | (* subtyping verification in presence of pseudo-circularity*) 2 | Module Type S. End S. 3 | Module Type T. Declare Module M:S. End T. 4 | Module N:S. End N. 5 | Module NN <: T. Module M:=N. End NN. 6 | 7 | Fail Module P <: T with Module M:=NN := NN. 8 | 9 | Module F (X:S) (Y:T with Module M:=X). End F. 10 | Fail Module G := F N N. -------------------------------------------------------------------------------- /test-suite/failure/clashes.v: -------------------------------------------------------------------------------- 1 | (* Submitted by David Nowak *) 2 | 3 | (* Simpler to forbid the definition of n as a global than to write it 4 | S.n to keep n accessible... *) 5 | 6 | Section S. 7 | Variable n : nat. 8 | Fail Inductive P : Set := 9 | n : P. 10 | -------------------------------------------------------------------------------- /test-suite/failure/cofixpoint.v: -------------------------------------------------------------------------------- 1 | (* A bug in the guard checking of nested cofixpoints. *) 2 | (* Posted by Maxime Dénès on coqdev (Apr 9, 2014). *) 3 | 4 | CoInductive CoFalse := . 5 | 6 | CoInductive CoTrue := I. 7 | 8 | Fail CoFixpoint loop : CoFalse := 9 | (cofix f := loop with g := loop for f). 10 | 11 | Fail CoFixpoint loop : CoFalse := 12 | (cofix f := I with g := loop for g). 13 | 14 | Fail CoFixpoint loop : CoFalse := 15 | (cofix f := loop with g := I for f). -------------------------------------------------------------------------------- /test-suite/failure/coqbugs0266.v: -------------------------------------------------------------------------------- 1 | (* It is forbidden to erase a variable (or a local def) that is used in 2 | the current goal. *) 3 | Section S. 4 | Let a := 0. 5 | Definition b := a. 6 | Goal b = b. 7 | Fail clear a. 8 | -------------------------------------------------------------------------------- /test-suite/failure/evar1.v: -------------------------------------------------------------------------------- 1 | (* This used to succeed by producing an ill-typed term in v8.2 *) 2 | 3 | Fail Lemma u: forall A : Prop, (exist _ A A) = (exist _ A A). 4 | -------------------------------------------------------------------------------- /test-suite/failure/evarclear1.v: -------------------------------------------------------------------------------- 1 | Set Printing Existential Instances. 2 | Set Printing All. 3 | Goal forall y, let z := S y in exists x, x = 0. 4 | intros. 5 | eexists. 6 | unfold z. 7 | clear y z. 8 | (* should fail because the evar should no longer be allowed to depend on z *) 9 | Fail instantiate (1:=z). 10 | 11 | -------------------------------------------------------------------------------- /test-suite/failure/evarclear2.v: -------------------------------------------------------------------------------- 1 | Set Printing Existential Instances. 2 | Set Printing All. 3 | Goal let y:=0 in exists x:y=y, x = x. 4 | intros. 5 | eexists. 6 | rename y into z. 7 | unfold z at 1 2. 8 | (* should fail because the evar type depends on z *) 9 | Fail clear z. 10 | -------------------------------------------------------------------------------- /test-suite/failure/evarlemma.v: -------------------------------------------------------------------------------- 1 | (* Check success of inference of evars in the context of lemmas *) 2 | 3 | Fail Lemma foo x : True. 4 | -------------------------------------------------------------------------------- /test-suite/failure/fixpoint2.v: -------------------------------------------------------------------------------- 1 | (* Check Guard in proofs *) 2 | 3 | Goal nat->nat. 4 | fix f 1. 5 | intro n; apply f; assumption. 6 | Fail Guarded. 7 | -------------------------------------------------------------------------------- /test-suite/failure/fixpoint3.v: -------------------------------------------------------------------------------- 1 | (* Check that arguments of impredicative types are not considered 2 | subterms for the guard condition (an example by Thierry Coquand) *) 3 | 4 | Inductive I : Prop := 5 | | C: (forall P:Prop, P->P) -> I. 6 | 7 | Definition i0 := C (fun _ x => x). 8 | 9 | Fail Definition Paradox : False := 10 | (fix ni i : False := 11 | match i with 12 | | C f => ni (f _ i) 13 | end) i0. 14 | -------------------------------------------------------------------------------- /test-suite/failure/ltac1.v: -------------------------------------------------------------------------------- 1 | (* Check all variables are different in a Context *) 2 | Ltac X := match goal with 3 | | x:_,x:_ |- _ => apply x 4 | end. 5 | Goal True -> True -> True. 6 | intros. 7 | Fail X. 8 | -------------------------------------------------------------------------------- /test-suite/failure/ltac2.v: -------------------------------------------------------------------------------- 1 | (* Check that Match arguments are forbidden *) 2 | Ltac E x := apply x. 3 | Goal True -> True. 4 | Fail E ltac:(match goal with 5 | | |- _ => intro H 6 | end). 7 | -------------------------------------------------------------------------------- /test-suite/failure/ltac4.v: -------------------------------------------------------------------------------- 1 | (* Check static globalisation of tactic names *) 2 | (* Proposed by Benjamin (mars 2002) *) 3 | Goal forall n : nat, n = n. 4 | induction n. 5 | Fail try REflexivity. 6 | 7 | -------------------------------------------------------------------------------- /test-suite/failure/pattern.v: -------------------------------------------------------------------------------- 1 | (* Check that untypable beta-expansion are trapped *) 2 | 3 | Variable A : nat -> Type. 4 | Variable n : nat. 5 | Variable P : forall m : nat, m = n -> Prop. 6 | 7 | Goal forall p : n = n, P n p. 8 | intro. 9 | Fail pattern n, p. 10 | -------------------------------------------------------------------------------- /test-suite/failure/proofirrelevance.v: -------------------------------------------------------------------------------- 1 | (* This was working in version 8.1beta (bug in the Sort-polymorphism 2 | of inductive types), but this is inconsistent with classical logic 3 | in Prop *) 4 | 5 | Inductive bool_in_prop : Type := hide : bool -> bool_in_prop 6 | with bool : Type := true : bool | false : bool. 7 | 8 | Lemma not_proof_irrelevance : ~ forall (P:Prop) (p p':P), p=p'. 9 | intro H. 10 | Fail pose proof (H bool_in_prop (hide true) (hide false)). 11 | Abort. 12 | (*discriminate. 13 | Qed.*) 14 | 15 | -------------------------------------------------------------------------------- /test-suite/failure/prop-set-proof-irrelevance.v: -------------------------------------------------------------------------------- 1 | Require Import ProofIrrelevance. 2 | 3 | Lemma proof_irrelevance_set : forall (P : Set) (p1 p2 : P), p1 = p2. 4 | Fail exact proof_irrelevance. 5 | (*Qed. 6 | 7 | Lemma paradox : False. 8 | assert (H : 0 <> 1) by discriminate. 9 | apply H. 10 | Fail apply proof_irrelevance. (* inlined version is rejected *) 11 | apply proof_irrelevance_set. 12 | Qed.*) 13 | -------------------------------------------------------------------------------- /test-suite/failure/rewrite_in_goal.v: -------------------------------------------------------------------------------- 1 | Goal forall T1 T2 (H:T1=T2) (f:T1->Prop) (x:T1) , f x -> Type. 2 | intros until x. 3 | Fail rewrite H in x. 4 | -------------------------------------------------------------------------------- /test-suite/failure/rewrite_in_hyp.v: -------------------------------------------------------------------------------- 1 | Goal forall (T1 T2 : Type) (f:T1 -> Prop) (x:T1) (H:T1=T2), f x -> 0=1. 2 | intros T1 T2 f x H fx. 3 | Fail rewrite H in x. 4 | -------------------------------------------------------------------------------- /test-suite/failure/rewrite_in_hyp2.v: -------------------------------------------------------------------------------- 1 | (* Until revision 10221, rewriting in hypotheses of the form 2 | "(fun x => phi(x)) t" with "t" not rewritable used to behave as a 3 | beta-normalization tactic instead of raising the expected message 4 | "nothing to rewrite" *) 5 | 6 | Goal forall b, S b = O -> (fun a => 0 = (S a)) b -> True. 7 | intros b H H0. 8 | Fail rewrite H in H0. 9 | -------------------------------------------------------------------------------- /test-suite/failure/subtyping.v: -------------------------------------------------------------------------------- 1 | (* A variant of bug #1302 that must fail *) 2 | 3 | Module Type T. 4 | 5 | Parameter A : Type. 6 | 7 | Inductive L : Prop := 8 | | L0 9 | | L1 : (A -> Prop) -> L. 10 | 11 | End T. 12 | 13 | Module TT : T. 14 | 15 | Parameter A : Type. 16 | 17 | Inductive L : Type := 18 | | L0 19 | | L1 : (A -> Prop) -> L. 20 | 21 | Fail End TT. 22 | -------------------------------------------------------------------------------- /test-suite/failure/universes-sections1.v: -------------------------------------------------------------------------------- 1 | (* Check that constraints on definitions are preserved by discharging *) 2 | 3 | Section A. 4 | Definition Type2 := Type. 5 | Definition Type1 : Type2 := Type. 6 | End A. 7 | 8 | Fail Definition Inconsistency : Type1 := Type2. 9 | -------------------------------------------------------------------------------- /test-suite/failure/universes-sections2.v: -------------------------------------------------------------------------------- 1 | (* Check that constraints on locals are preserved by discharging *) 2 | 3 | Definition Type2 := Type. 4 | 5 | Section A. 6 | Let Type1 : Type2 := Type. 7 | Definition Type1' := Type1. 8 | End A. 9 | 10 | Fail Definition Inconsistency : Type1' := Type2. 11 | -------------------------------------------------------------------------------- /test-suite/failure/universes.v: -------------------------------------------------------------------------------- 1 | Definition Type2 := Type. 2 | Definition Type1 : Type2 := Type. 3 | Fail Definition Inconsistency : Type1 := Type2. 4 | -------------------------------------------------------------------------------- /test-suite/ide/undo001.fake: -------------------------------------------------------------------------------- 1 | # Script simulating a dialog between coqide and coqtop -ideslave 2 | # Run it via fake_ide 3 | # 4 | # Simple backtrack by 1 between two global definitions 5 | # 6 | ADD here { Definition foo := 0. } 7 | ADD { Definition bar := 1. } 8 | EDIT_AT here 9 | QUERY { Check foo. } 10 | QUERY { Fail Check bar. } 11 | -------------------------------------------------------------------------------- /test-suite/ide/undo002.fake: -------------------------------------------------------------------------------- 1 | # Script simulating a dialog between coqide and coqtop -ideslave 2 | # Run it via fake_ide 3 | # 4 | # Simple backtrack by 2 before two global definitions 5 | # 6 | ADD { Definition foo := 0. } 7 | ADD { Definition bar := 1. } 8 | EDIT_AT initial 9 | QUERY { Fail Check foo. } 10 | QUERY { Fail Check bar. } 11 | -------------------------------------------------------------------------------- /test-suite/ide/undo003.fake: -------------------------------------------------------------------------------- 1 | # Script simulating a dialog between coqide and coqtop -ideslave 2 | # Run it via fake_ide 3 | # 4 | # Simple backtrack by 0 should be a no-op 5 | # 6 | ADD here { Definition foo := 0. } 7 | EDIT_AT here 8 | QUERY { Check foo. } 9 | -------------------------------------------------------------------------------- /test-suite/ide/undo004.fake: -------------------------------------------------------------------------------- 1 | # Script simulating a dialog between coqide and coqtop -ideslave 2 | # Run it via fake_ide 3 | # 4 | # Undoing arbitrary commands, as first step 5 | # 6 | ADD here { Theorem a : O=O. } 7 | ADD { Ltac f x := x. } 8 | EDIT_AT here 9 | # 10 | ADD { Ltac f x := x. } 11 | # <\replay> 12 | ADD { assert True by trivial. } 13 | ADD { trivial. } 14 | ADD { Qed. } 15 | -------------------------------------------------------------------------------- /test-suite/ide/undo005.fake: -------------------------------------------------------------------------------- 1 | # Script simulating a dialog between coqide and coqtop -ideslave 2 | # Run it via fake_ide 3 | # 4 | # Undoing arbitrary commands, as non-first step 5 | # 6 | ADD { Theorem b : O=O. } 7 | ADD here { assert True by trivial. } 8 | ADD { Ltac g x := x. } 9 | # 10 | EDIT_AT here 11 | # <\replay> 12 | ADD { Ltac g x := x. } 13 | ADD { assert True by trivial. } 14 | ADD { trivial. } 15 | ADD { Qed. } 16 | -------------------------------------------------------------------------------- /test-suite/ide/undo006.fake: -------------------------------------------------------------------------------- 1 | # Script simulating a dialog between coqide and coqtop -ideslave 2 | # Run it via fake_ide 3 | # 4 | # Undoing declarations, as first step 5 | # Was bugged in 8.1 6 | # 7 | ADD here { Theorem c : O=O. } 8 | ADD { Inductive T : Type := I. } 9 | EDIT_AT here 10 | # 11 | ADD { Inductive T : Type := I. } 12 | # <\replay> 13 | ADD { trivial. } 14 | ADD { Qed. } 15 | -------------------------------------------------------------------------------- /test-suite/ide/undo008.fake: -------------------------------------------------------------------------------- 1 | # Script simulating a dialog between coqide and coqtop -ideslave 2 | # Run it via fake_ide 3 | # 4 | # Undoing declarations, as non-first step 5 | # new in 8.2 6 | # 7 | ADD { Theorem h : O=O. } 8 | ADD { assert True by trivial. } 9 | ADD here { Definition i := O. } 10 | ADD { Definition j := O. } 11 | EDIT_AT here 12 | # 13 | ADD { Definition j := O. } 14 | # <\replay> 15 | ADD { assert True by trivial. } 16 | ADD { trivial. } 17 | ADD { Qed. } 18 | QUERY { Check i. } 19 | -------------------------------------------------------------------------------- /test-suite/ide/undo017.fake: -------------------------------------------------------------------------------- 1 | # Script simulating a dialog between coqide and coqtop -ideslave 2 | # Run it via fake_ide 3 | # 4 | # bug #2569 : Undoing inside modules 5 | # 6 | ADD { Module M. } 7 | ADD here { Definition x := 0. } 8 | ADD { End M. } 9 | EDIT_AT here 10 | # 11 | ADD { End M. } 12 | # 13 | QUERY { Check M.x. } 14 | -------------------------------------------------------------------------------- /test-suite/ide/undo018.fake: -------------------------------------------------------------------------------- 1 | # Script simulating a dialog between coqide and coqtop -ideslave 2 | # Run it via fake_ide 3 | # 4 | # bug #2569 : Undoing inside section 5 | # 6 | ADD { Section M. } 7 | ADD here { Definition x := 0. } 8 | ADD { End M. } 9 | EDIT_AT here 10 | # 11 | ADD { End M. } 12 | # 13 | QUERY { Check x. } 14 | -------------------------------------------------------------------------------- /test-suite/ide/undo019.fake: -------------------------------------------------------------------------------- 1 | # Script simulating a dialog between coqide and coqtop -ideslave 2 | # Run it via fake_ide 3 | # 4 | # bug #2569 : Undoing a focused subproof 5 | # 6 | ADD { Goal True. } 7 | ADD { \{ } 8 | ADD here { exact I. } 9 | ADD { \} } 10 | EDIT_AT here 11 | # 12 | ADD { \} } 13 | # 14 | ADD { Qed. } 15 | -------------------------------------------------------------------------------- /test-suite/ideal-features/Case9.v: -------------------------------------------------------------------------------- 1 | (* Exemple soumis par Pierre Corbineau (bug #1671) *) 2 | 3 | CoInductive hdlist : unit -> Type := 4 | | cons : hdlist tt -> hdlist tt. 5 | 6 | Variable P : forall bo, hdlist bo -> Prop. 7 | Variable all : forall bo l, P bo l. 8 | 9 | Definition F (l:hdlist tt) : P tt l := 10 | match l in hdlist u return P u l with 11 | | cons (cons l') => all tt _ 12 | end. 13 | -------------------------------------------------------------------------------- /test-suite/ideal-features/eapply_evar.v: -------------------------------------------------------------------------------- 1 | (* Test propagation of evars from subgoal to brother subgoals *) 2 | 3 | (* This does not work (oct 2008) because "match goal" sees "?evar = O" 4 | and not "O = O" *) 5 | 6 | Lemma eapply_evar : O=O -> 0=O. 7 | intro H; eapply eq_trans; 8 | [apply H | match goal with |- ?x = ?x => reflexivity end]. 9 | Qed. 10 | -------------------------------------------------------------------------------- /test-suite/interactive/Back.v: -------------------------------------------------------------------------------- 1 | (* Check that reset remains synchronised with the compilation unit cache *) 2 | (* See bug #1030 *) 3 | 4 | Section multiset_defs. 5 | Require Import Plus. 6 | End multiset_defs. 7 | Unset Implicit Arguments. 8 | Back 1. 9 | -------------------------------------------------------------------------------- /test-suite/interactive/Evar.v: -------------------------------------------------------------------------------- 1 | (* Check that no toplevel "unresolved evar" flees through Declare 2 | Implicit Tactic support (bug #1229) *) 3 | 4 | Goal True. 5 | (* should raise an error, not an anomaly *) 6 | set (x := _). 7 | -------------------------------------------------------------------------------- /test-suite/kernel/inds.mv: -------------------------------------------------------------------------------- 1 | Inductive [] nat : Set := O : nat | S : nat->nat. 2 | Check Construct nat 0 1. 3 | Check Construct nat 0 2. 4 | -------------------------------------------------------------------------------- /test-suite/misc/deps/client/bar.v: -------------------------------------------------------------------------------- 1 | (* We assume the file compiled with -R ../lib lib -R . client *) 2 | (* foo alone should refer to client.foo because -R . client comes last *) 3 | 4 | Require Import foo. 5 | Goal a = 1. 6 | reflexivity. 7 | Qed. 8 | Require Import lib.foo. 9 | Goal a = 0. 10 | reflexivity. 11 | Qed. 12 | -------------------------------------------------------------------------------- /test-suite/misc/deps/client/foo.v: -------------------------------------------------------------------------------- 1 | Definition a := 1. 2 | -------------------------------------------------------------------------------- /test-suite/misc/deps/deps.out: -------------------------------------------------------------------------------- 1 | misc/deps/client/bar.vo misc/deps/client/bar.glob misc/deps/client/bar.v.beautified: misc/deps/client/bar.v misc/deps/client/foo.vo misc/deps/lib/foo.vo 2 | -------------------------------------------------------------------------------- /test-suite/misc/deps/lib/foo.v: -------------------------------------------------------------------------------- 1 | Definition a := 0. 2 | -------------------------------------------------------------------------------- /test-suite/misc/universes/universes.v: -------------------------------------------------------------------------------- 1 | Require all_stdlib. 2 | Print Sorted Universes "universes.txt". 3 | -------------------------------------------------------------------------------- /test-suite/modules/Nat.v: -------------------------------------------------------------------------------- 1 | Definition T := nat. 2 | 3 | Definition le := le. 4 | 5 | Hint Unfold le. 6 | 7 | Lemma le_refl : forall n : nat, le n n. 8 | auto. 9 | Qed. 10 | 11 | Require Import Le. 12 | 13 | Lemma le_trans : forall n m k : nat, le n m -> le m k -> le n k. 14 | eauto with arith. 15 | Qed. 16 | 17 | Lemma le_antis : forall n m : nat, le n m -> le m n -> n = m. 18 | eauto with arith. 19 | Qed. -------------------------------------------------------------------------------- /test-suite/modules/grammar.v: -------------------------------------------------------------------------------- 1 | Module N. 2 | Definition f := plus. 3 | (* : Syntax is discontinued *) 4 | Check (f 0 0). 5 | End N. 6 | Check (N.f 0 0). 7 | Import N. 8 | Check (f 0 0). 9 | Check (f 0 0). 10 | Module M := N. 11 | Check (f 0 0). 12 | Check (f 0 0). 13 | Import M. 14 | Check (f 0 0). 15 | Check (N.f 0 0). -------------------------------------------------------------------------------- /test-suite/modules/modeq.v: -------------------------------------------------------------------------------- 1 | Module M. 2 | Definition T := nat. 3 | Definition x : T := 0. 4 | End M. 5 | 6 | Module Type SIG. 7 | Module M := Top.M. 8 | Module Type SIG. 9 | Parameter T : Set. 10 | End SIG. 11 | Declare Module N: SIG. 12 | End SIG. 13 | 14 | Module Z. 15 | Module M := Top.M. 16 | Module Type SIG. 17 | Parameter T : Set. 18 | End SIG. 19 | Module N := M. 20 | End Z. 21 | 22 | Module A : SIG := Z. -------------------------------------------------------------------------------- /test-suite/modules/nested_mod_types.v: -------------------------------------------------------------------------------- 1 | Module Type T. 2 | Module Type U. 3 | Module Type V. 4 | Variable b : nat. 5 | End V. 6 | Variable a : nat. 7 | End U. 8 | Declare Module u : U. 9 | Declare Module v : u.V. 10 | End T. 11 | 12 | Module F (t:T). 13 | End F. 14 | 15 | Module M:T. 16 | Module Type U. 17 | Module Type V. 18 | Variable b : nat. 19 | End V. 20 | Variable a : nat. 21 | End U. 22 | Declare Module u : U. 23 | Declare Module v : u.V. 24 | End M. 25 | 26 | Module FM := F M. 27 | -------------------------------------------------------------------------------- /test-suite/modules/obj.v: -------------------------------------------------------------------------------- 1 | Set Implicit Arguments. 2 | Unset Strict Implicit. 3 | 4 | Module M. 5 | Definition a (s : Set) := s. 6 | Print a. 7 | End M. 8 | 9 | Print M.a. 10 | 11 | Module K. 12 | Definition app (A B : Set) (f : A -> B) (x : A) := f x. 13 | Module N. 14 | Definition apap (A B : Set) := app (app (A:=A) (B:=B)). 15 | Print app. 16 | Print apap. 17 | End N. 18 | Print N.apap. 19 | End K. 20 | 21 | Print K.app. 22 | Print K.N.apap. 23 | 24 | Module W := K.N. 25 | 26 | Print W.apap. 27 | -------------------------------------------------------------------------------- /test-suite/modules/objects2.v: -------------------------------------------------------------------------------- 1 | (* Check that non logical object loading is done after registration of 2 | the logical objects in the environment 3 | *) 4 | 5 | (* Bug #1118 (simplified version), submitted by Evelyne Contejean 6 | (used to failed in pre-V8.1 trunk because of a call to lookup_mind 7 | for structure objects) 8 | *) 9 | 10 | Module Type S. Record t : Set := { a : nat; b : nat }. End S. 11 | Module Make (X:S). Module Y:=X. End Make. 12 | -------------------------------------------------------------------------------- /test-suite/modules/pliczek.v: -------------------------------------------------------------------------------- 1 | Require Export plik. 2 | 3 | Definition tutu (X : Set) := toto X. -------------------------------------------------------------------------------- /test-suite/modules/plik.v: -------------------------------------------------------------------------------- 1 | Definition toto (x : Set) := x. 2 | 3 | (* : Grammar is replaced by Notation *) -------------------------------------------------------------------------------- /test-suite/modules/pseudo_circular_with.v: -------------------------------------------------------------------------------- 1 | Module Type S. End S. 2 | Module Type T. Declare Module M:S. End T. 3 | Module N:S. End N. 4 | 5 | Module NN:T. Module M:=N. End NN. 6 | Module Type U := T with Module M:=NN. -------------------------------------------------------------------------------- /test-suite/output/Coercions.out: -------------------------------------------------------------------------------- 1 | P x 2 | : Prop 3 | R x x 4 | : Prop 5 | fun (x : foo) (n : nat) => x n 6 | : foo -> nat -> nat 7 | "1" 0 8 | : PAIR 9 | -------------------------------------------------------------------------------- /test-suite/output/Errors.out: -------------------------------------------------------------------------------- 1 | The command has indeed failed with message: 2 | => Error: The field t is missing in Top.M. 3 | The command has indeed failed with message: 4 | => Error: Unable to unify "nat" with "True". 5 | The command has indeed failed with message: 6 | => In nested Ltac calls to "f" and "apply x", last call failed. 7 | Error: Unable to unify "nat" with "True". 8 | -------------------------------------------------------------------------------- /test-suite/output/Errors.v: -------------------------------------------------------------------------------- 1 | (* Test error messages *) 2 | 3 | (* Test non-regression of bug fixed in r13486 (bad printer for module names) *) 4 | 5 | Module Type S. 6 | Parameter t:Type. 7 | End S. 8 | Module M : S. 9 | Fail End M. 10 | 11 | (* A simple check of how Ltac trace are used or not *) 12 | (* Unfortunately, cannot test error location... *) 13 | 14 | Ltac f x := apply x. 15 | Goal True. 16 | Fail simpl; apply 0. 17 | Fail simpl; f 0. 18 | Abort. 19 | -------------------------------------------------------------------------------- /test-suite/output/Existentials.out: -------------------------------------------------------------------------------- 1 | Existential 1 = 2 | ?Goal0 : [p : nat q := S p : nat n : nat m : nat |- ?y = m] 3 | Existential 2 = 4 | ?y : [p : nat q := S p : nat n : nat m : nat |- nat] (p, q cannot be used) 5 | Existential 3 = ?e : [q : nat n : nat m : nat |- n = ?y] 6 | -------------------------------------------------------------------------------- /test-suite/output/Existentials.v: -------------------------------------------------------------------------------- 1 | (* Test propagation of clear/clearbody in existential variables *) 2 | 3 | Section Test. 4 | 5 | Variable p:nat. 6 | Let q := S p. 7 | 8 | Goal forall n m:nat, n = m. 9 | intros. 10 | eapply eq_trans. 11 | clearbody q. 12 | clear p. (* Error ... *) 13 | 14 | Show Existentials. 15 | -------------------------------------------------------------------------------- /test-suite/output/Fixpoint.out: -------------------------------------------------------------------------------- 1 | fix F (A B : Set) (f : A -> B) (l : list A) {struct l} : 2 | list B := match l with 3 | | nil => nil 4 | | a :: l0 => f a :: F A B f l0 5 | end 6 | : forall A B : Set, (A -> B) -> list A -> list B 7 | let fix f (m : nat) : nat := match m with 8 | | 0 => 0 9 | | S m' => f m' 10 | end in f 0 11 | : nat 12 | Ltac f id1 id2 := fix id1 2 with (id2 (n:_) (H:odd n) {struct H} : n >= 1) 13 | -------------------------------------------------------------------------------- /test-suite/output/Implicit.out: -------------------------------------------------------------------------------- 1 | compose (C:=nat) S 2 | : (nat -> nat) -> nat -> nat 3 | ex_intro (P:=fun _ : nat => True) (x:=0) I 4 | : ex (fun _ : nat => True) 5 | d2 = fun x : nat => d1 (y:=x) 6 | : forall x x0 : nat, x0 = x -> x0 = x 7 | 8 | d2 is not universe polymorphic 9 | Arguments x, x0 are implicit 10 | Argument scopes are [nat_scope nat_scope _] 11 | map id (1 :: nil) 12 | : list nat 13 | map id' (1 :: nil) 14 | : list nat 15 | map (id'' (A:=nat)) (1 :: nil) 16 | : list nat 17 | -------------------------------------------------------------------------------- /test-suite/output/InitSyntax.out: -------------------------------------------------------------------------------- 1 | Inductive sig2 (A : Type) (P Q : A -> Prop) : Type := 2 | exist2 : forall x : A, P x -> Q x -> {x : A | P x & Q x} 3 | 4 | For sig2: Argument A is implicit 5 | For exist2: Argument A is implicit 6 | For sig2: Argument scopes are [type_scope type_scope type_scope] 7 | For exist2: Argument scopes are [type_scope _ _ _ _ _] 8 | exists x : nat, x = x 9 | : Prop 10 | fun b : bool => if b then b else b 11 | : bool -> bool 12 | -------------------------------------------------------------------------------- /test-suite/output/InitSyntax.v: -------------------------------------------------------------------------------- 1 | (* Soumis par Pierre *) 2 | Print sig2. 3 | Check (exists x : nat, x = x). 4 | Check (fun b : bool => if b then b else b). 5 | -------------------------------------------------------------------------------- /test-suite/output/Intuition.out: -------------------------------------------------------------------------------- 1 | 1 subgoal 2 | 3 | m, n : Z 4 | H : (m >= n)%Z 5 | ============================ 6 | (m >= m)%Z 7 | -------------------------------------------------------------------------------- /test-suite/output/Intuition.v: -------------------------------------------------------------------------------- 1 | Require Import ZArith_base. 2 | Goal forall m n : Z, (m >= n)%Z -> (m >= m)%Z /\ (m >= n)%Z. 3 | intros; intuition. 4 | Show. 5 | Abort. 6 | -------------------------------------------------------------------------------- /test-suite/output/Match_subterm.out: -------------------------------------------------------------------------------- 1 | (0 = 1) 2 | (eq 0) 3 | eq 4 | @eq 5 | nat 6 | 0 7 | 1 8 | S 9 | 0 10 | 2 11 | -------------------------------------------------------------------------------- /test-suite/output/Match_subterm.v: -------------------------------------------------------------------------------- 1 | Goal 0 = 1. 2 | match goal with 3 | | |- context [?v] => 4 | idtac v ; fail 5 | | _ => idtac 2 6 | end. 7 | -------------------------------------------------------------------------------- /test-suite/output/RealSyntax.out: -------------------------------------------------------------------------------- 1 | 32%R 2 | : R 3 | (-31)%R 4 | : R 5 | -------------------------------------------------------------------------------- /test-suite/output/RealSyntax.v: -------------------------------------------------------------------------------- 1 | Require Import Reals. 2 | Check 32%R. 3 | Check (-31)%R. 4 | -------------------------------------------------------------------------------- /test-suite/output/Record.out: -------------------------------------------------------------------------------- 1 | {| field := 5 |} 2 | : test 3 | {| field := 5 |} 4 | : test 5 | {| field_r := 5 |} 6 | : test_r 7 | build_c 5 8 | : test_c 9 | build 5 10 | : test 11 | build 5 12 | : test 13 | {| field_r := 5 |} 14 | : test_r 15 | build_c 5 16 | : test_c 17 | -------------------------------------------------------------------------------- /test-suite/output/Record.v: -------------------------------------------------------------------------------- 1 | Record test := build { field : nat }. 2 | Record test_r := build_r { field_r : nat }. 3 | Record test_c := build_c { field_c : nat }. 4 | 5 | Add Printing Constructor test_c. 6 | Add Printing Record test_r. 7 | 8 | Set Printing Records. 9 | 10 | Check build 5. 11 | Check {| field := 5 |}. 12 | 13 | Check build_r 5. 14 | Check build_c 5. 15 | 16 | Unset Printing Records. 17 | 18 | Check build 5. 19 | Check {| field := 5 |}. 20 | Check build_r 5. 21 | Check build_c 5. 22 | -------------------------------------------------------------------------------- /test-suite/output/SearchHead.v: -------------------------------------------------------------------------------- 1 | (* Some tests of the Search command *) 2 | 3 | SearchHead le. (* app nodes *) 4 | SearchHead bool. (* no apps *) 5 | SearchHead (@eq nat). (* complex pattern *) 6 | 7 | Definition newdef := fun x:nat => x = x. 8 | 9 | Goal forall n:nat, newdef n -> False. 10 | intros n h. 11 | SearchHead newdef. (* search hypothesis *) 12 | Abort. 13 | 14 | 15 | Goal forall n (P:nat -> Prop), P n -> False. 16 | intros n P h. 17 | SearchHead P. (* search hypothesis also for patterns *) 18 | Abort. 19 | 20 | -------------------------------------------------------------------------------- /test-suite/output/SearchRewrite.out: -------------------------------------------------------------------------------- 1 | plus_n_O: forall n : nat, n = n + 0 2 | plus_O_n: forall n : nat, 0 + n = n 3 | h: n = newdef n 4 | h: n = newdef n 5 | h: n = newdef n 6 | -------------------------------------------------------------------------------- /test-suite/output/SearchRewrite.v: -------------------------------------------------------------------------------- 1 | (* Some tests of the SearchRewrite command *) 2 | 3 | SearchRewrite (_+0). (* left *) 4 | SearchRewrite (0+_). (* right *) 5 | 6 | Definition newdef := fun x:nat => x. 7 | 8 | Goal forall n:nat, n = newdef n -> False. 9 | intros n h. 10 | SearchRewrite (newdef _). 11 | SearchRewrite n. (* use hypothesis for patterns *) 12 | SearchRewrite (newdef n). (* use hypothesis for patterns *) 13 | Abort. 14 | -------------------------------------------------------------------------------- /test-suite/output/Sum.out: -------------------------------------------------------------------------------- 1 | nat + nat + {True} 2 | : Set 3 | {True} + {True} + {True} 4 | : Set 5 | nat + {True} + {True} 6 | : Set 7 | -------------------------------------------------------------------------------- /test-suite/output/Sum.v: -------------------------------------------------------------------------------- 1 | Check (nat + nat + {True}). 2 | Check ({True} + {True} + {True}). 3 | Check (nat + {True} + {True}). 4 | -------------------------------------------------------------------------------- /test-suite/output/Tactics.out: -------------------------------------------------------------------------------- 1 | Ltac f H := split; [ a H | e H ] 2 | Ltac g := match goal with 3 | | |- context [if ?X then _ else _] => case X 4 | end 5 | -------------------------------------------------------------------------------- /test-suite/output/Tactics.v: -------------------------------------------------------------------------------- 1 | (* Test printing of Tactic Notation *) 2 | 3 | Tactic Notation "a" constr(x) := apply x. 4 | Tactic Notation "e" constr(x) := exact x. 5 | 6 | Ltac f H := split; [a H|e H]. 7 | Print Ltac f. 8 | 9 | (* Test printing of match context *) 10 | (* Used to fail after translator removal (see bug #1070) *) 11 | 12 | Ltac g := match goal with |- context [if ?X then _ else _ ] => case X end. 13 | Print Ltac g. 14 | -------------------------------------------------------------------------------- /test-suite/output/TranspModtype.out: -------------------------------------------------------------------------------- 1 | TrM.A = M.A 2 | : Set 3 | 4 | TrM.A is not universe polymorphic 5 | OpM.A = M.A 6 | : Set 7 | 8 | OpM.A is not universe polymorphic 9 | TrM.B = M.B 10 | : Set 11 | 12 | TrM.B is not universe polymorphic 13 | *** [ OpM.B : Set ] 14 | 15 | OpM.B is not universe polymorphic 16 | -------------------------------------------------------------------------------- /test-suite/output/TranspModtype.v: -------------------------------------------------------------------------------- 1 | Module Type SIG. 2 | Axiom A : Set. 3 | Axiom B : Set. 4 | End SIG. 5 | 6 | Module M : SIG. 7 | Definition A := nat. 8 | Definition B := nat. 9 | End M. 10 | 11 | Module N <: SIG := M. 12 | 13 | Module TranspId (X: SIG) <: SIG with Definition A := X.A := X. 14 | Module OpaqueId (X: SIG) : SIG with Definition A := X.A := X. 15 | 16 | Module TrM := TranspId M. 17 | Module OpM := OpaqueId M. 18 | 19 | Print TrM.A. 20 | Print OpM.A. 21 | Print TrM.B. 22 | Print OpM.B. 23 | -------------------------------------------------------------------------------- /test-suite/output/names.out: -------------------------------------------------------------------------------- 1 | The command has indeed failed with message: 2 | => Error: 3 | In environment 4 | y : nat 5 | The term "a y" has type "{y0 : nat | y = y0}" 6 | while it is expected to have type "{x : nat | x = y}". 7 | -------------------------------------------------------------------------------- /test-suite/output/names.v: -------------------------------------------------------------------------------- 1 | (* Test no clash names occur *) 2 | (* see bug #2723 *) 3 | 4 | Parameter a : forall x, {y:nat|x=y}. 5 | Fail Definition b y : {x:nat|x=y} := a y. 6 | -------------------------------------------------------------------------------- /test-suite/output/reduction.out: -------------------------------------------------------------------------------- 1 | = a 2 | : nat 3 | = n + 0 4 | : nat 5 | -------------------------------------------------------------------------------- /test-suite/output/reduction.v: -------------------------------------------------------------------------------- 1 | (* Test the behaviour of hnf and simpl introduced in revision *) 2 | 3 | Parameter n:nat. 4 | Definition a:=0. 5 | 6 | Eval simpl in (fix plus (n m : nat) {struct n} : nat := 7 | match n with 8 | | 0 => m 9 | | S p => S (p + m) 10 | end) a a. 11 | 12 | Eval hnf in match (plus (S n) O) with S n => n | _ => O end. 13 | 14 | -------------------------------------------------------------------------------- /test-suite/output/rewrite-2172.out: -------------------------------------------------------------------------------- 1 | The command has indeed failed with message: 2 | => Error: Unable to find an instance for the variable E. 3 | -------------------------------------------------------------------------------- /test-suite/output/set.out: -------------------------------------------------------------------------------- 1 | 1 subgoal 2 | 3 | y1 := 0 : nat 4 | x := 0 + 0 : nat 5 | ============================ 6 | x = x 7 | 1 subgoal 8 | 9 | y1, y2 := 0 : nat 10 | x := y2 + 0 : nat 11 | ============================ 12 | x = x 13 | 1 subgoal 14 | 15 | y1, y2, y3 := 0 : nat 16 | x := y2 + y3 : nat 17 | ============================ 18 | x = x 19 | -------------------------------------------------------------------------------- /test-suite/output/set.v: -------------------------------------------------------------------------------- 1 | Goal let x:=O+O in x=x. 2 | intro. 3 | set (y1:=O) in (type of x). 4 | Show. 5 | set (y2:=O) in (value of x) at 1. 6 | Show. 7 | set (y3:=O) in (value of x). 8 | Show. 9 | trivial. 10 | Qed. 11 | -------------------------------------------------------------------------------- /test-suite/output/simpl.out: -------------------------------------------------------------------------------- 1 | 1 subgoal 2 | 3 | x : nat 4 | ============================ 5 | x = S x 6 | 1 subgoal 7 | 8 | x : nat 9 | ============================ 10 | 0 + x = S x 11 | 1 subgoal 12 | 13 | x : nat 14 | ============================ 15 | x = 1 + x 16 | -------------------------------------------------------------------------------- /test-suite/output/simpl.v: -------------------------------------------------------------------------------- 1 | (* Simpl with patterns *) 2 | 3 | Goal forall x, 0+x = 1+x. 4 | intro x. 5 | simpl (_ + x). 6 | Show. 7 | Undo 2. 8 | simpl (_ + x) at 2. 9 | Show. 10 | Undo 2. 11 | simpl (0 + _). 12 | Show. 13 | Undo 2. 14 | -------------------------------------------------------------------------------- /test-suite/prerequisite/make_local.v: -------------------------------------------------------------------------------- 1 | (* Used in Import.v to test the locality flag *) 2 | 3 | Definition f (A:Type) (a:A) := a. 4 | 5 | Local Arguments Scope f [type_scope type_scope]. 6 | Local Implicit Arguments f [A]. 7 | 8 | (* Used in ImportedCoercion.v to test the locality flag *) 9 | 10 | Local Coercion g (b:bool) := if b then 0 else 1. 11 | -------------------------------------------------------------------------------- /test-suite/prerequisite/make_notation.v: -------------------------------------------------------------------------------- 1 | (* Used in Notation.v to test import of notations from files in sections *) 2 | 3 | Notation "'Z'" := O (at level 9). 4 | Notation plus := plus. 5 | Notation succ := S. 6 | Notation mult := mult (only parsing). 7 | Notation less := le (only parsing). 8 | 9 | (* Test bug 2168: ending section of some name was removing objects of the 10 | same name *) 11 | 12 | Notation add2 n:=(S n). 13 | Section add2. 14 | End add2. 15 | 16 | -------------------------------------------------------------------------------- /test-suite/success/Case1.v: -------------------------------------------------------------------------------- 1 | (* Testing eta-expansion of elimination predicate *) 2 | 3 | Section NATIND2. 4 | Variable P : nat -> Type. 5 | Variable H0 : P 0. 6 | Variable H1 : P 1. 7 | Variable H2 : forall n : nat, P n -> P (S (S n)). 8 | Fixpoint nat_ind2 (n : nat) : P n := 9 | match n as x return (P x) with 10 | | O => H0 11 | | S O => H1 12 | | S (S n) => H2 n (nat_ind2 n) 13 | end. 14 | End NATIND2. 15 | 16 | -------------------------------------------------------------------------------- /test-suite/success/Case11.v: -------------------------------------------------------------------------------- 1 | (* L'algo d'inférence du prédicat doit gérer le K-rédex dans le type de b *) 2 | (* Problème rapporté par Solange Coupet *) 3 | 4 | Section A. 5 | 6 | Variables (Alpha : Set) (Beta : Set). 7 | 8 | Definition nodep_prod_of_dep (c : sigS (fun a : Alpha => Beta)) : 9 | Alpha * Beta := match c with 10 | | existS _ a b => (a, b) 11 | end. 12 | 13 | End A. 14 | -------------------------------------------------------------------------------- /test-suite/success/Case16.v: -------------------------------------------------------------------------------- 1 | (**********************************************************************) 2 | (* Test dependencies in constructors *) 3 | (**********************************************************************) 4 | 5 | Check 6 | (fun x : {b : bool | if b then True else False} => 7 | match x return (let (b, _) := x in if b then True else False) with 8 | | exist _ true y => y 9 | | exist _ false z => z 10 | end). 11 | -------------------------------------------------------------------------------- /test-suite/success/Case2.v: -------------------------------------------------------------------------------- 1 | (* ============================================== *) 2 | (* To test compilation of dependent case *) 3 | (* Nested patterns *) 4 | (* ============================================== *) 5 | 6 | Type 7 | match 0 as n return (n = n) with 8 | | O => refl_equal 0 9 | | m => refl_equal m 10 | end. 11 | 12 | 13 | -------------------------------------------------------------------------------- /test-suite/success/Case21.v: -------------------------------------------------------------------------------- 1 | (* Check insertion of impossible case when there is no branch at all *) 2 | 3 | Inductive eq_true : bool -> Prop := is_eq_true : eq_true true. 4 | 5 | Check fun H:eq_true false => match H with end : False. 6 | 7 | Inductive I : bool -> bool -> Prop := C : I true true. 8 | 9 | Check fun x (H:I x false) => match H with end : False. 10 | 11 | Check fun x (H:I false x) => match H with end : False. 12 | 13 | Inductive I' : bool -> Type := C1 : I' true | C2 : I' true. 14 | 15 | Check fun x : I' false => match x with end : False. 16 | -------------------------------------------------------------------------------- /test-suite/success/Case22.v: -------------------------------------------------------------------------------- 1 | (* Check typing in the presence of let-in in inductive arity *) 2 | 3 | Inductive I : let a := 1 in a=a -> let b := 2 in Type := C : I (eq_refl). 4 | Lemma a : forall x:I eq_refl, match x in I a b c return b = b with C => eq_refl end = eq_refl. 5 | intro. 6 | match goal with |- ?c => let x := eval cbv in c in change x end. 7 | Abort. 8 | -------------------------------------------------------------------------------- /test-suite/success/Case5.v: -------------------------------------------------------------------------------- 1 | 2 | Parameter ff : forall n m : nat, n <> m -> S n <> S m. 3 | Parameter discr_r : forall n : nat, 0 <> S n. 4 | Parameter discr_l : forall n : nat, S n <> 0. 5 | 6 | 7 | Type 8 | (fun n : nat => 9 | match n return (n = 0 \/ n <> 0) with 10 | | O => or_introl (0 <> 0) (refl_equal 0) 11 | | S O => or_intror (1 = 0) (discr_l 0) 12 | | S (S x) => or_intror (S (S x) = 0) (discr_l (S x)) 13 | end). 14 | -------------------------------------------------------------------------------- /test-suite/success/Case7.v: -------------------------------------------------------------------------------- 1 | Inductive List (A : Set) : Set := 2 | | Nil : List A 3 | | Cons : A -> List A -> List A. 4 | 5 | Inductive Empty (A : Set) : List A -> Prop := 6 | intro_Empty : Empty A (Nil A). 7 | 8 | Parameter 9 | inv_Empty : forall (A : Set) (a : A) (x : List A), ~ Empty A (Cons A a x). 10 | 11 | 12 | Type 13 | (fun (A : Set) (l : List A) => 14 | match l return (Empty A l \/ ~ Empty A l) with 15 | | Nil _ => or_introl (~ Empty A (Nil A)) (intro_Empty A) 16 | | Cons _ a y as b => or_intror (Empty A b) (inv_Empty A a y) 17 | end). 18 | -------------------------------------------------------------------------------- /test-suite/success/Case8.v: -------------------------------------------------------------------------------- 1 | (* Check dependencies in the matching predicate (was failing in V8.0pl1) *) 2 | 3 | Inductive t : forall x : 0 = 0, x = x -> Prop := 4 | c : forall x : 0 = 0, t x (refl_equal x). 5 | 6 | Definition a (x : t _ (refl_equal (refl_equal 0))) := 7 | match x return match x with 8 | | c y => Prop 9 | end with 10 | | c y => y = y 11 | end. 12 | -------------------------------------------------------------------------------- /test-suite/success/Cases-bug1834.v: -------------------------------------------------------------------------------- 1 | (* Bug in the computation of generalization *) 2 | 3 | (* The following bug, elaborated by Bruno Barras, is solved from r11083 *) 4 | 5 | Parameter P : unit -> Prop. 6 | Definition T := sig P. 7 | Parameter Q : T -> Prop. 8 | Definition U := sig Q. 9 | Parameter a : U. 10 | Check (match a with exist _ (exist _ tt e2) e3 => e3=e3 end). 11 | 12 | (* There is still a form submitted by Pierre Corbineau (#1834) which fails *) 13 | 14 | -------------------------------------------------------------------------------- /test-suite/success/Cases-bug3758.v: -------------------------------------------------------------------------------- 1 | (* There used to be an evar leak in the to_nat example *) 2 | 3 | Require Import Coq.Lists.List. 4 | Import ListNotations. 5 | 6 | Fixpoint Idx {A:Type} (l:list A) : Type := 7 | match l with 8 | | [] => False 9 | | _::l => True + Idx l 10 | end. 11 | 12 | Fixpoint to_nat {A:Type} (l:list A) (i:Idx l) : nat := 13 | match l,i with 14 | | [] , i => match i with end 15 | | _::_, inl _ => 0 16 | | _::l, inr i => S (to_nat l i) 17 | end. 18 | -------------------------------------------------------------------------------- /test-suite/success/Conjecture.v: -------------------------------------------------------------------------------- 1 | (* Check keywords Conjecture and Admitted are recognized *) 2 | 3 | Conjecture c : forall n : nat, n = 0. 4 | 5 | Check c. 6 | 7 | Theorem d : forall n : nat, n = 0. 8 | Proof. 9 | induction n. 10 | reflexivity. 11 | assert (H : False). 12 | 2: destruct H. 13 | Admitted. 14 | -------------------------------------------------------------------------------- /test-suite/success/DHyp.v: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /test-suite/success/Decompose.v: -------------------------------------------------------------------------------- 1 | (* This was a Decompose bug reported by Randy Pollack (29 Mar 2000) *) 2 | 3 | Goal 4 | 0 = 0 /\ (forall x : nat, x = x -> x = x /\ (forall y : nat, y = y -> y = y)) -> 5 | True. 6 | intro H. 7 | decompose [and] H. (* Was failing *) 8 | 9 | Abort. 10 | -------------------------------------------------------------------------------- /test-suite/success/Fourier.v: -------------------------------------------------------------------------------- 1 | Require Import Rfunctions. 2 | Require Import Fourier. 3 | 4 | Lemma l1 : forall x y z : R, Rabs (x - z) <= Rabs (x - y) + Rabs (y - z). 5 | intros; split_Rabs; fourier. 6 | Qed. 7 | 8 | Lemma l2 : 9 | forall x y : R, x < Rabs y -> y < 1 -> x >= 0 -> - y <= 1 -> Rabs x <= 1. 10 | intros. 11 | split_Rabs; fourier. 12 | Qed. 13 | -------------------------------------------------------------------------------- /test-suite/success/Generalization.v: -------------------------------------------------------------------------------- 1 | Generalizable All Variables. 2 | 3 | Check `(a = 0). 4 | Check `(a = 0)%type. 5 | Definition relation A := A -> A -> Prop. 6 | Definition equivalence `(R : relation A) := True. 7 | Check (`(@equivalence A R)). 8 | 9 | Definition a_eq_b : `( a = 0 /\ a = b /\ b > c \/ d = e /\ d = 1). 10 | Admitted. 11 | Print a_eq_b. 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /test-suite/success/Generalize.v: -------------------------------------------------------------------------------- 1 | (* Check Generalize Dependent *) 2 | 3 | Lemma l1 : 4 | let a := 0 in let b := a in forall (c : b = b) (d : True -> b = b), d = d. 5 | intros. 6 | generalize dependent a. 7 | intros a b c d. 8 | Abort. 9 | -------------------------------------------------------------------------------- /test-suite/success/Import.v: -------------------------------------------------------------------------------- 1 | (* Test visibility of imported objects *) 2 | 3 | Require Import make_local. 4 | 5 | (* Check local implicit arguments are not imported *) 6 | 7 | Check (f nat 0). 8 | 9 | (* Check local arguments scopes are not imported *) 10 | 11 | Check (f nat (0*0)). 12 | -------------------------------------------------------------------------------- /test-suite/success/LetIn.v: -------------------------------------------------------------------------------- 1 | (* Simple let-in's *) 2 | Definition l1 := let P := 0 in P. 3 | Definition l2 := let P := nat in P. 4 | Definition l3 := let P := True in P. 5 | Definition l4 := let P := Prop in P. 6 | Definition l5 := let P := Type in P. 7 | 8 | (* Check casting of let-in *) 9 | Definition l6 := let P := 0:nat in P. 10 | Definition l7 := let P := True:Prop in P. 11 | Definition l8 := let P := True:Type in P. 12 | -------------------------------------------------------------------------------- /test-suite/success/Mod_ltac.v: -------------------------------------------------------------------------------- 1 | (* Submitted by Houda Anoun *) 2 | 3 | Module toto. 4 | Ltac titi := auto. 5 | End toto. 6 | 7 | Module ti. 8 | Import toto. 9 | Ltac equal := match goal with 10 | | |- (?X1 = ?X1) => titi 11 | | |- _ => idtac 12 | end. 13 | 14 | End ti. 15 | 16 | Import ti. 17 | Definition simple : forall a : nat, a = a. 18 | intro. 19 | equal. 20 | Qed. 21 | -------------------------------------------------------------------------------- /test-suite/success/NatRing.v: -------------------------------------------------------------------------------- 1 | Require Import ArithRing. 2 | 3 | Lemma l1 : 2 = 1 + 1. 4 | ring. 5 | Qed. 6 | 7 | Lemma l2 : forall x : nat, S (S x) = 1 + S x. 8 | intro. 9 | ring. 10 | Qed. 11 | -------------------------------------------------------------------------------- /test-suite/success/PPFix.v: -------------------------------------------------------------------------------- 1 | 2 | (* To test PP of fixpoints *) 3 | Require Import Arith. 4 | Check fix a(n: nat): n<5 -> nat := 5 | match n return n<5 -> nat with 6 | | 0 => fun _ => 0 7 | | S n => fun h => S (a n (lt_S_n _ _ (lt_S _ _ h))) 8 | end. 9 | 10 | -------------------------------------------------------------------------------- /test-suite/success/Print.v: -------------------------------------------------------------------------------- 1 | Print Tables. 2 | Print ML Path. 3 | Print ML Modules. 4 | Print LoadPath. 5 | Print Graph. 6 | Print Coercions. 7 | Print Classes. 8 | Print nat. 9 | Print Term O. 10 | Print All. 11 | Print Grammar constr. 12 | Inspect 10. 13 | 14 | Section A. 15 | Coercion f (x : nat) : Prop := True. 16 | Print Coercion Paths nat Sortclass. 17 | 18 | Print Section A. 19 | 20 | -------------------------------------------------------------------------------- /test-suite/success/PrintSortedUniverses.v: -------------------------------------------------------------------------------- 1 | Require Reals. 2 | Print Sorted Universes. 3 | -------------------------------------------------------------------------------- /test-suite/success/Remark.v: -------------------------------------------------------------------------------- 1 | (* Test obsolete, Remark est maintenant global 2 | Section A. 3 | Section B. 4 | Section C. 5 | Remark t : True. Proof I. 6 | End C. 7 | Locate C.t. 8 | End B. 9 | Locate B.C.t. 10 | End A. 11 | Locate A.B.C.t. 12 | *) 13 | -------------------------------------------------------------------------------- /test-suite/success/Rename.v: -------------------------------------------------------------------------------- 1 | Goal forall n : nat, n = 0 -> n = 0. 2 | intros. 3 | rename n into p. 4 | induction p; auto. 5 | Qed. 6 | 7 | (* Submitted by Iris Loeb (#842) *) 8 | 9 | Section rename. 10 | 11 | Variable A:Prop. 12 | 13 | Lemma Tauto: A->A. 14 | rename A into B. 15 | tauto. 16 | Qed. 17 | 18 | End rename. 19 | -------------------------------------------------------------------------------- /test-suite/success/Reordering.v: -------------------------------------------------------------------------------- 1 | (* Testing the reordering of hypothesis required by pattern, fold and change. *) 2 | Goal forall (A:Set) (x:A) (A':=A), True. 3 | intros. 4 | fold A' in x. (* suceeds: x is moved after A' *) 5 | Undo. 6 | pattern A' in x. 7 | Undo. 8 | change A' in x. 9 | Abort. 10 | 11 | (* p and m should be moved before H *) 12 | Goal forall n:nat, n=n -> forall m:nat, let p := (m,n) in True. 13 | intros. 14 | change n with (snd p) in H. 15 | Abort. 16 | -------------------------------------------------------------------------------- /test-suite/success/Require.v: -------------------------------------------------------------------------------- 1 | Require Import Coq.Arith.Plus. 2 | Require Coq.Arith.Minus. 3 | Locate Library Coq.Arith.Minus. 4 | -------------------------------------------------------------------------------- /test-suite/success/Scheme.v: -------------------------------------------------------------------------------- 1 | (* This failed in 8.3pl2 *) 2 | 3 | Scheme Induction for eq Sort Prop. 4 | Check eq_ind_dep. 5 | -------------------------------------------------------------------------------- /test-suite/success/Scopes.v: -------------------------------------------------------------------------------- 1 | (* Check exportation of Argument Scopes even without import of modules *) 2 | 3 | Require Import ZArith. 4 | 5 | Module A. 6 | Definition opp := Z.opp. 7 | End A. 8 | Check (A.opp 3). 9 | 10 | (* Test extra scopes to be used in the presence of coercions *) 11 | 12 | Record B := { f :> Z -> Z }. 13 | Variable a:B. 14 | Arguments Scope a [Z_scope]. 15 | Check a 0. 16 | 17 | (* Check that casts activate scopes if ever possible *) 18 | 19 | Inductive U := A. 20 | Bind Scope u with U. 21 | Notation "'ε'" := A : u. 22 | Definition c := ε : U. 23 | -------------------------------------------------------------------------------- /test-suite/success/Section.v: -------------------------------------------------------------------------------- 1 | (* Test bug 2168: ending section of some name was removing objects of the 2 | same name *) 3 | 4 | Require Import make_notation. 5 | 6 | Check add2 3. 7 | -------------------------------------------------------------------------------- /test-suite/success/Simplify_eq.v: -------------------------------------------------------------------------------- 1 | (* Check the behaviour of Simplify_eq *) 2 | 3 | (* Check that Simplify_eq tries Intro until *) 4 | 5 | Lemma l1 : 0 = 1 -> False. 6 | simplify_eq 1. 7 | Qed. 8 | 9 | Lemma l2 : forall (x : nat) (H : S x = S (S x)), H = H -> False. 10 | simplify_eq H. 11 | intros. 12 | apply (n_Sn x H0). 13 | Qed. 14 | -------------------------------------------------------------------------------- /test-suite/success/Try.v: -------------------------------------------------------------------------------- 1 | (* To shorten interactive scripts, it is better that Try catches 2 | non-existent names in Unfold [cf bug #263] *) 3 | 4 | Lemma lem1 : True. 5 | try unfold i_dont_exist. 6 | trivial. 7 | Qed. 8 | 9 | -------------------------------------------------------------------------------- /test-suite/success/applyTC.v: -------------------------------------------------------------------------------- 1 | Axiom P : nat -> Prop. 2 | 3 | Class class (A : Type) := { val : A }. 4 | 5 | Lemma usetc {t : class nat} : P (@val nat t). 6 | Admitted. 7 | 8 | Notation "{val:= v }" := (@val _ v). 9 | 10 | Instance zero : class nat := {| val := 0 |}. 11 | 12 | Lemma test : P 0. 13 | Fail apply usetc. 14 | pose (tmp := usetc); apply tmp; clear tmp. 15 | Qed. 16 | -------------------------------------------------------------------------------- /test-suite/success/autointros.v: -------------------------------------------------------------------------------- 1 | Set Automatic Introduction. 2 | 3 | Inductive even : nat -> Prop := 4 | | even_0 : even 0 5 | | even_odd : forall n, odd n -> even (S n) 6 | with odd : nat -> Prop := 7 | | odd_1 : odd 1 8 | | odd_even : forall n, even n -> odd (S n). 9 | 10 | Lemma foo {n : nat} (E : even n) : even (S (S n)) 11 | with bar {n : nat} (O : odd n) : odd (S (S n)). 12 | Proof. destruct E. constructor. constructor. apply even_odd. apply (bar _ H). 13 | destruct O. repeat constructor. apply odd_even. apply (foo _ H). 14 | Defined. 15 | 16 | -------------------------------------------------------------------------------- /test-suite/success/bullet.v: -------------------------------------------------------------------------------- 1 | Goal True /\ True. 2 | split. 3 | - exact I. 4 | - exact I. 5 | Qed. 6 | -------------------------------------------------------------------------------- /test-suite/success/clear.v: -------------------------------------------------------------------------------- 1 | Goal forall x:nat, (forall x, x=0 -> True)->True. 2 | intros; eapply H. 3 | instantiate (1:=(fun y => _) (S x)). 4 | simpl. 5 | clear x. trivial. 6 | Qed. 7 | 8 | Goal forall y z, (forall x:nat, x=y -> True) -> y=z -> True. 9 | intros; eapply H. 10 | rename z into z'. 11 | clear H0. 12 | clear z'. 13 | reflexivity. 14 | Qed. 15 | 16 | -------------------------------------------------------------------------------- /test-suite/success/coqbugs0181.v: -------------------------------------------------------------------------------- 1 | 2 | (* test the strength of pretyping unification *) 3 | 4 | Require Import List. 5 | Definition listn A n := {l : list A | length l = n}. 6 | Definition make_ln A n (l : list A) (h : (fun l => length l = n) l) := 7 | exist _ l h. 8 | -------------------------------------------------------------------------------- /test-suite/success/guard.v: -------------------------------------------------------------------------------- 1 | (* Specific tests about guard condition *) 2 | 3 | (* f must unfold to x, not F (de Bruijn mix-up!) *) 4 | Check let x (f:nat->nat) k := f k in 5 | fun (y z:nat->nat) => 6 | let f:=x in (* f := Rel 3 *) 7 | fix F (n:nat) : nat := 8 | match n with 9 | | 0 => 0 10 | | S k => f F k (* here Rel 3 = F ! *) 11 | end. 12 | -------------------------------------------------------------------------------- /test-suite/success/if.v: -------------------------------------------------------------------------------- 1 | (* The synthesis of the elimination predicate may fail if algebric *) 2 | (* universes are not cautiously treated *) 3 | 4 | Check (fun b : bool => if b then Type else nat). 5 | 6 | (* Check correct use of if-then-else predicate annotation (cf bug 690) *) 7 | 8 | Check fun b : bool => 9 | if b as b0 return (if b0 then b0 = true else b0 = false) 10 | then refl_equal true 11 | else refl_equal false. 12 | 13 | -------------------------------------------------------------------------------- /test-suite/success/keyedrewrite.v: -------------------------------------------------------------------------------- 1 | Set Keyed Unification. 2 | 3 | Section foo. 4 | Variable f : nat -> nat. 5 | 6 | Definition g := f. 7 | 8 | Variable lem : g 0 = 0. 9 | 10 | Goal f 0 = 0. 11 | Proof. 12 | Fail rewrite lem. 13 | Abort. 14 | 15 | Declare Equivalent Keys @g @f. 16 | (** Now f and g are considered equivalent heads for subterm selection *) 17 | Goal f 0 = 0. 18 | Proof. 19 | rewrite lem. 20 | reflexivity. 21 | Qed. 22 | 23 | Print Equivalent Keys. 24 | End foo. 25 | -------------------------------------------------------------------------------- /test-suite/success/letproj.v: -------------------------------------------------------------------------------- 1 | Set Primitive Projections. 2 | Set Record Elimination Schemes. 3 | Record Foo (A : Type) := { bar : A -> A; baz : A }. 4 | 5 | Definition test (A : Type) (f : Foo A) := 6 | let (x, y) := f in x. 7 | 8 | Scheme foo_case := Case for Foo Sort Type. 9 | 10 | -------------------------------------------------------------------------------- /test-suite/success/ltac_plus.v: -------------------------------------------------------------------------------- 1 | (** Checks that Ltac's '+' tactical works as intended. *) 2 | 3 | Goal forall (A B C D:Prop), (A->C) -> (B->C) -> (D->C) -> B -> C. 4 | Proof. 5 | intros A B C D h0 h1 h2 h3. 6 | (* backtracking *) 7 | (apply h0 + apply h1);apply h3. 8 | Undo. 9 | Fail ((apply h0+apply h2) || apply h1); apply h3. 10 | (* interaction with || *) 11 | ((apply h0+apply h1) || apply h2); apply h3. 12 | Qed. -------------------------------------------------------------------------------- /test-suite/success/parsing.v: -------------------------------------------------------------------------------- 1 | Section A. 2 | Notation "*" := O (at level 8). 3 | Notation "**" := O (at level 99). 4 | Notation "***" := O (at level 9). 5 | End A. 6 | Notation "*" := O (at level 8). 7 | Notation "**" := O (at level 99). 8 | Notation "***" := O (at level 9). 9 | -------------------------------------------------------------------------------- /test-suite/success/remember.v: -------------------------------------------------------------------------------- 1 | (* Testing remember and co *) 2 | 3 | Lemma A : forall (P: forall X, X -> Prop), P nat 0 -> P nat 0. 4 | intros. 5 | Fail remember nat as X. 6 | Fail remember nat as X in H. (* This line used to succeed in 8.3 *) 7 | Fail remember nat as X. 8 | Abort. 9 | 10 | (* Testing Ltac interpretation of remember (was not working up to r16181) *) 11 | 12 | Goal (1 + 2 + 3 = 6). 13 | let name := fresh "fresh" in 14 | remember (1 + 2) as x eqn:name. 15 | rewrite fresh. 16 | Abort. 17 | -------------------------------------------------------------------------------- /test-suite/success/rewrite_in.v: -------------------------------------------------------------------------------- 1 | Require Import Setoid. 2 | 3 | Goal forall (P Q : Prop) (f:P->Prop) (p:P), (P<->Q) -> f p -> True. 4 | intros P Q f p H. 5 | rewrite H in p || trivial. 6 | Qed. 7 | 8 | 9 | -------------------------------------------------------------------------------- /test-suite/success/set.v: -------------------------------------------------------------------------------- 1 | (* This used to fail in 8.0pl1 *) 2 | 3 | Goal forall n, n+n=0->0=n+n. 4 | intros. 5 | set n in * |-. 6 | Abort. 7 | 8 | (* This works from 8.4pl1, since merging of different instances of the 9 | same metavariable in a pattern is done modulo conversion *) 10 | 11 | Notation "p .+1" := (S p) (at level 1, left associativity, format "p .+1"). 12 | 13 | Goal forall (f:forall n, n=0 -> Prop) n (H:(n+n).+1=0), f (n.+1+n) H. 14 | intros. 15 | set (f _ _). 16 | Abort. 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /test-suite/typeclasses/deftwice.v: -------------------------------------------------------------------------------- 1 | Class C (A : Type) := c : A -> Type. 2 | 3 | Record Inhab (A : Type) := { witness : A }. 4 | 5 | Instance inhab_C : C Type := Inhab. 6 | 7 | Variable full : forall A (X : C A), forall x : A, c x. 8 | 9 | Definition truc {A : Type} : Inhab A := (full _ _ _). -------------------------------------------------------------------------------- /test-suite/vi/simple.v: -------------------------------------------------------------------------------- 1 | Lemma simple : True. 2 | Proof using. trivial. Qed. 3 | -------------------------------------------------------------------------------- /test-suite/vi/univ_constraints_statements.v: -------------------------------------------------------------------------------- 1 | Lemma ssr_congr_arrow Plemma Pgoal : Plemma = Pgoal -> Plemma -> Pgoal. 2 | Proof using. intro H; rewrite H; trivial. Qed. 3 | -------------------------------------------------------------------------------- /theories/Arith/vo.itarget: -------------------------------------------------------------------------------- 1 | PeanoNat.vo 2 | Arith_base.vo 3 | Arith.vo 4 | Between.vo 5 | Bool_nat.vo 6 | Compare_dec.vo 7 | Compare.vo 8 | Div2.vo 9 | EqNat.vo 10 | Euclid.vo 11 | Even.vo 12 | Factorial.vo 13 | Gt.vo 14 | Le.vo 15 | Lt.vo 16 | Max.vo 17 | Minus.vo 18 | Min.vo 19 | Mult.vo 20 | Peano_dec.vo 21 | Plus.vo 22 | Wf_nat.vo 23 | -------------------------------------------------------------------------------- /theories/Bool/vo.itarget: -------------------------------------------------------------------------------- 1 | BoolEq.vo 2 | Bool.vo 3 | Bvector.vo 4 | DecBool.vo 5 | IfProp.vo 6 | Sumbool.vo 7 | Zerob.vo 8 | -------------------------------------------------------------------------------- /theories/Classes/vo.itarget: -------------------------------------------------------------------------------- 1 | DecidableClass.vo 2 | Equivalence.vo 3 | EquivDec.vo 4 | Init.vo 5 | Morphisms_Prop.vo 6 | Morphisms_Relations.vo 7 | Morphisms.vo 8 | RelationClasses.vo 9 | SetoidClass.vo 10 | SetoidDec.vo 11 | SetoidTactics.vo 12 | RelationPairs.vo 13 | CRelationClasses.vo 14 | CMorphisms.vo 15 | CEquivalence.vo 16 | -------------------------------------------------------------------------------- /theories/FSets/vo.itarget: -------------------------------------------------------------------------------- 1 | FMapAVL.vo 2 | FMapFacts.vo 3 | FMapFullAVL.vo 4 | FMapInterface.vo 5 | FMapList.vo 6 | FMapPositive.vo 7 | FMaps.vo 8 | FMapWeakList.vo 9 | FSetCompat.vo 10 | FSetAVL.vo 11 | FSetPositive.vo 12 | FSetBridge.vo 13 | FSetDecide.vo 14 | FSetEqProperties.vo 15 | FSetFacts.vo 16 | FSetInterface.vo 17 | FSetList.vo 18 | FSetProperties.vo 19 | FSets.vo 20 | FSetToFiniteSet.vo 21 | FSetWeakList.vo 22 | -------------------------------------------------------------------------------- /theories/Init/vo.itarget: -------------------------------------------------------------------------------- 1 | Datatypes.vo 2 | Logic_Type.vo 3 | Logic.vo 4 | Notations.vo 5 | Peano.vo 6 | Prelude.vo 7 | Specif.vo 8 | Tactics.vo 9 | Wf.vo 10 | Nat.vo -------------------------------------------------------------------------------- /theories/Lists/vo.itarget: -------------------------------------------------------------------------------- 1 | ListSet.vo 2 | ListTactics.vo 3 | List.vo 4 | ListDec.vo 5 | SetoidList.vo 6 | SetoidPermutation.vo 7 | StreamMemo.vo 8 | Streams.vo 9 | -------------------------------------------------------------------------------- /theories/Logic/intro.tex: -------------------------------------------------------------------------------- 1 | \section{Logic}\label{Logic} 2 | 3 | This library deals with classical logic and its properties. 4 | The main file is {\tt Classical.v}. 5 | 6 | This library also provides some facts on equalities for dependent 7 | types. See the files {\tt Eqdep.v} and {\tt JMeq.v}. 8 | 9 | -------------------------------------------------------------------------------- /theories/MSets/vo.itarget: -------------------------------------------------------------------------------- 1 | MSetGenTree.vo 2 | MSetAVL.vo 3 | MSetRBT.vo 4 | MSetDecide.vo 5 | MSetEqProperties.vo 6 | MSetFacts.vo 7 | MSetInterface.vo 8 | MSetList.vo 9 | MSetProperties.vo 10 | MSets.vo 11 | MSetToFiniteSet.vo 12 | MSetWeakList.vo 13 | MSetPositive.vo -------------------------------------------------------------------------------- /theories/NArith/intro.tex: -------------------------------------------------------------------------------- 1 | \section{Binary natural numbers : NArith}\label{NArith} 2 | 3 | Here are defined various arithmetical notions and their properties, 4 | similar to those of {\tt Arith}. 5 | 6 | -------------------------------------------------------------------------------- /theories/NArith/vo.itarget: -------------------------------------------------------------------------------- 1 | BinNatDef.vo 2 | BinNat.vo 3 | NArith.vo 4 | Ndec.vo 5 | Ndigits.vo 6 | Ndist.vo 7 | Nnat.vo 8 | Ndiv_def.vo 9 | Nsqrt_def.vo 10 | Ngcd_def.vo -------------------------------------------------------------------------------- /theories/PArith/intro.tex: -------------------------------------------------------------------------------- 1 | \section{Binary positive integers : PArith}\label{PArith} 2 | 3 | Here are defined various arithmetical notions and their properties, 4 | similar to those of {\tt Arith}. 5 | -------------------------------------------------------------------------------- /theories/PArith/vo.itarget: -------------------------------------------------------------------------------- 1 | BinPosDef.vo 2 | BinPos.vo 3 | Pnat.vo 4 | POrderedType.vo 5 | PArith.vo -------------------------------------------------------------------------------- /theories/Program/vo.itarget: -------------------------------------------------------------------------------- 1 | Basics.vo 2 | Combinators.vo 3 | Equality.vo 4 | Program.vo 5 | Subset.vo 6 | Syntax.vo 7 | Tactics.vo 8 | Utils.vo 9 | Wf.vo 10 | -------------------------------------------------------------------------------- /theories/QArith/vo.itarget: -------------------------------------------------------------------------------- 1 | Qabs.vo 2 | QArith_base.vo 3 | QArith.vo 4 | Qcanon.vo 5 | Qfield.vo 6 | Qpower.vo 7 | Qreals.vo 8 | Qreduction.vo 9 | Qring.vo 10 | Qround.vo 11 | QOrderedType.vo 12 | Qminmax.vo -------------------------------------------------------------------------------- /theories/Reals/intro.tex: -------------------------------------------------------------------------------- 1 | \section{Reals}\label{Reals} 2 | 3 | This library contains an axiomatization of real numbers. 4 | The main file is \texttt{Reals.v}. 5 | -------------------------------------------------------------------------------- /theories/Relations/vo.itarget: -------------------------------------------------------------------------------- 1 | Operators_Properties.vo 2 | Relation_Definitions.vo 3 | Relation_Operators.vo 4 | Relations.vo 5 | -------------------------------------------------------------------------------- /theories/Setoids/intro.tex: -------------------------------------------------------------------------------- 1 | \section{Setoids}\label{Setoids} 2 | -------------------------------------------------------------------------------- /theories/Setoids/vo.itarget: -------------------------------------------------------------------------------- 1 | Setoid.vo -------------------------------------------------------------------------------- /theories/Sets/vo.itarget: -------------------------------------------------------------------------------- 1 | Classical_sets.vo 2 | Constructive_sets.vo 3 | Cpo.vo 4 | Ensembles.vo 5 | Finite_sets_facts.vo 6 | Finite_sets.vo 7 | Image.vo 8 | Infinite_sets.vo 9 | Integers.vo 10 | Multiset.vo 11 | Partial_Order.vo 12 | Permut.vo 13 | Powerset_Classical_facts.vo 14 | Powerset_facts.vo 15 | Powerset.vo 16 | Relations_1_facts.vo 17 | Relations_1.vo 18 | Relations_2_facts.vo 19 | Relations_2.vo 20 | Relations_3_facts.vo 21 | Relations_3.vo 22 | Uniset.vo 23 | -------------------------------------------------------------------------------- /theories/Sorting/intro.tex: -------------------------------------------------------------------------------- 1 | \section{Sorting}\label{Sorting} 2 | -------------------------------------------------------------------------------- /theories/Sorting/vo.itarget: -------------------------------------------------------------------------------- 1 | Heap.vo 2 | Permutation.vo 3 | PermutSetoid.vo 4 | PermutEq.vo 5 | Sorted.vo 6 | Sorting.vo 7 | Mergesort.vo 8 | -------------------------------------------------------------------------------- /theories/Strings/vo.itarget: -------------------------------------------------------------------------------- 1 | Ascii.vo 2 | String.vo 3 | -------------------------------------------------------------------------------- /theories/Structures/vo.itarget: -------------------------------------------------------------------------------- 1 | Equalities.vo 2 | EqualitiesFacts.vo 3 | Orders.vo 4 | OrdersEx.vo 5 | OrdersFacts.vo 6 | OrdersLists.vo 7 | OrdersTac.vo 8 | OrdersAlt.vo 9 | GenericMinMax.vo 10 | DecidableType.vo 11 | DecidableTypeEx.vo 12 | OrderedTypeAlt.vo 13 | OrderedTypeEx.vo 14 | OrderedType.vo 15 | -------------------------------------------------------------------------------- /theories/Unicode/vo.itarget: -------------------------------------------------------------------------------- 1 | Utf8.vo 2 | Utf8_core.vo 3 | -------------------------------------------------------------------------------- /theories/Vectors/vo.itarget: -------------------------------------------------------------------------------- 1 | Fin.vo 2 | VectorDef.vo 3 | VectorSpec.vo 4 | VectorEq.vo 5 | Vector.vo 6 | -------------------------------------------------------------------------------- /theories/Wellfounded/intro.tex: -------------------------------------------------------------------------------- 1 | \section{Well-founded relations}\label{Wellfounded} 2 | 3 | This library gives definitions and results about well-founded relations. 4 | 5 | -------------------------------------------------------------------------------- /theories/Wellfounded/vo.itarget: -------------------------------------------------------------------------------- 1 | Disjoint_Union.vo 2 | Inclusion.vo 3 | Inverse_Image.vo 4 | Lexicographic_Exponentiation.vo 5 | Lexicographic_Product.vo 6 | Transitive_Closure.vo 7 | Union.vo 8 | Wellfounded.vo 9 | Well_Ordering.vo 10 | -------------------------------------------------------------------------------- /theories/ZArith/intro.tex: -------------------------------------------------------------------------------- 1 | \section{Binary integers : ZArith} 2 | The {\tt ZArith} library deals with binary integers (those used 3 | by the {\tt Omega} decision tactic). 4 | Here are defined various arithmetical notions and their properties, 5 | similar to those of {\tt Arith}. 6 | 7 | -------------------------------------------------------------------------------- /theories/ZArith/vo.itarget: -------------------------------------------------------------------------------- 1 | auxiliary.vo 2 | BinIntDef.vo 3 | BinInt.vo 4 | Int.vo 5 | Wf_Z.vo 6 | Zabs.vo 7 | ZArith_base.vo 8 | ZArith_dec.vo 9 | ZArith.vo 10 | Zdigits.vo 11 | Zbool.vo 12 | Zcompare.vo 13 | Zcomplements.vo 14 | Zdiv.vo 15 | Zeven.vo 16 | Zgcd_alt.vo 17 | Zpow_alt.vo 18 | Zhints.vo 19 | Zlogarithm.vo 20 | Zmax.vo 21 | Zminmax.vo 22 | Zmin.vo 23 | Zmisc.vo 24 | Znat.vo 25 | Znumtheory.vo 26 | Zquot.vo 27 | Zorder.vo 28 | Zpow_def.vo 29 | Zpower.vo 30 | Zpow_facts.vo 31 | Zsqrt_compat.vo 32 | Zwf.vo 33 | Zeuclid.vo 34 | -------------------------------------------------------------------------------- /theories/theories.itarget: -------------------------------------------------------------------------------- 1 | Arith/vo.otarget 2 | Bool/vo.otarget 3 | Classes/vo.otarget 4 | FSets/vo.otarget 5 | MSets/vo.otarget 6 | Structures/vo.otarget 7 | Init/vo.otarget 8 | Lists/vo.otarget 9 | Vectors/vo.otarget 10 | Logic/vo.otarget 11 | PArith/vo.otarget 12 | NArith/vo.otarget 13 | Numbers/vo.otarget 14 | Program/vo.otarget 15 | QArith/vo.otarget 16 | Reals/vo.otarget 17 | Relations/vo.otarget 18 | Setoids/vo.otarget 19 | Sets/vo.otarget 20 | Sorting/vo.otarget 21 | Strings/vo.otarget 22 | Unicode/vo.otarget 23 | Wellfounded/vo.otarget 24 | ZArith/vo.otarget 25 | -------------------------------------------------------------------------------- /tools/README.coq-tex: -------------------------------------------------------------------------------- 1 | DESCRIPTION. 2 | 3 | The coq-tex filter extracts Coq phrases embedded in LaTeX files, 4 | evaluates them, and insert the outcome of the evaluation after each 5 | phrase. 6 | 7 | The filter is written in Perl, so you'll need Perl version 4 installed 8 | on your machine. 9 | 10 | USAGE. See the manual page (coq-tex.1). 11 | 12 | AUTHOR. Jean-Christophe Filliatre (jcfillia@lip.ens-lyon.fr) 13 | from caml-tex of Xavier Leroy. 14 | -------------------------------------------------------------------------------- /toplevel/doc.tex: -------------------------------------------------------------------------------- 1 | 2 | \newpage 3 | \section*{The Coq toplevel} 4 | 5 | \ocwsection \label{toplevel} 6 | This chapter describes the highest modules of the \Coq\ system. 7 | They are organized as follows: 8 | 9 | \bigskip 10 | \begin{center}\epsfig{file=toplevel.dep.ps,width=\linewidth}\end{center} 11 | -------------------------------------------------------------------------------- /toplevel/g_obligations.ml4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pirapira/coq2rust/22e8aaefc723bfb324ca2001b2b8e51fcc923543/toplevel/g_obligations.ml4 -------------------------------------------------------------------------------- /toplevel/toplevel.mllib: -------------------------------------------------------------------------------- 1 | Himsg 2 | Cerrors 3 | Class 4 | Locality 5 | Metasyntax 6 | Auto_ind_decl 7 | Search 8 | Indschemes 9 | Obligations 10 | Command 11 | Classes 12 | Record 13 | Vernacinterp 14 | Mltop 15 | Vernacentries 16 | Whelp 17 | Vernac 18 | Usage 19 | Coqloop 20 | Coqinit 21 | Coqtop 22 | --------------------------------------------------------------------------------