Recent changes
Unreleased changes
Changed
in
MSets, Numbers, Structuresseveral module types were turned into plain modules to accomodate for rocq-prover/rocq#22580. The major difference is that they cannot be used as sealing adscriptions anymore. In order to ease the transition, corresponding module types were added alongside with the standard naming scheme Module Foo ↦ Module Type FooT (#318, by Pierre-Marie Pédrot).
Added
Renamed
Removed
Deprecated
Version 9.2
Changes in 9.2.0
Changed
in
RelationPairs.vchanged notations
_ @@1and_ @@2from level 30 to level 1 (#235, by Pierre Roux).
in
FMapAVL.vin
MSetAVL.vin
ZNatPairs.vchanged notations
_ #1and_ #2from level 9 to level 1 (#235, by Pierre Roux).
in
NZBits.vchanged notation
_ .[ _ ]from level 5 to level 1 (#235, by Pierre Roux).
in
NZDomain.vchanged notation
[ _ ]from level 7 to level 0 (#235, by Pierre Roux).
in
theories/Zmod/Bits.vFixed lemma
bits.skipn_appto actually describe the interaction between the titular functions. Developments relying on the previous tautological statement can restore it by adding that version of the lemma to the codebase (#258, by Andres Erbsen).
Version 9.1
Changes in 9.1.0
Changed
in
RelationPairs.vchanged notations
_ @@1and_ @@2from level 30 to level 1 (#235, by Pierre Roux).
in
FMapAVL.vin
MSetAVL.vin
ZNatPairs.vchanged notations
_ #1and_ #2from level 9 to level 1 (#235, by Pierre Roux).
in
NZBits.vchanged notation
_ .[ _ ]from level 5 to level 1 (#235, by Pierre Roux).
in
NZDomain.vchanged notation
[ _ ]from level 7 to level 0 (#235, by Pierre Roux).
in
theories/Zmod/Bits.vFixed lemma
bits.skipn_appto actually describe the interaction between the titular functions. Developments relying on the previous tautological statement can resore it by adding that version of the lemma to the codebase (#258, by Andres Erbsen).
Changed
Internal dependencies between about 50 stdlib files
To diagnose a failing qualified reference use
From Stdlib Require All. Locate My.Qualified.reference.Then add a Require command for the appropriately granular containing file (#150, by Andres Erbsen).
in
FinFunSplit out non-
Fin-specific definitons intoLists.Finite(#154, by Andres Erbsen).
in
HLevels.vSplit into
HLevelsintoHLevelsBase, which does not depend on axioms, andHLevels, which exports the former and provides the previous functionality (#133, by Andres Erbsen).
in
NsatzTactic.vSplit NsatzTactic into a smaller
NsatzTacticthat only depends onsetoid_ring, and per-domain filesZNsatz,QNsatz, andRNsatz(#155, by Andres Erbsen).
in
PermutationMoved
Fin-specific definitons intoFinFun(#154, by Andres Erbsen).
in
RIneq.vin
ZArith,vand dependenciesReducing reliance on
Znumtheorywithin stdlib changed the internal dependencies between files, code relying on files being transitively required in stdlib may need to now explicitlyRequireZnumtheory,BinInt,BinList,BinNat,BinNums,BinPos,Setoid,Tauto,Zhints,Zpow_def,Zpow_facts, orZbool(#136, by Andres Erbsen).
Added
in
BinIntAdded lemmas
div_eucl_0_r,mod_0_r,div_0_r(#150, by Andres Erbsen).
in
BinNatDef.vandBinNat.vAdded definition
Niter_opfor repeating associative operations, a proof relating it to the genericN.iter(iter_op_correct), and propertiesiter_op_0_r,iter_op_1_r,iter_op_succ_r, anditer_op_add_r(#134, by Andres Erbsen).
in
Diaconescu.vAdd a proof of Diaconescu's theorem assuming propositional extensionality rather than predicate extensionality (#214, by Jean Abou Samra).
in
ENsatzTacticAdd new tactic
ensatzfor proving polynomial equalities with existential quantifiers or existential variables (#160, by Lionel Blatter).
in
HLevelsBase.vtransparent lemmas
false_hprop,true_hprop,Is_true_hprop,eq_true_hprop, and a wrapperstransparent_Is_trueandtransparent_eq_trueto produce transparent proofs forIs_trueandeq_truegiven not necessarily transparent proofs of the same (#133, by Andres Erbsen).
in
Ncring_tacAdded extension-point typeclass
extra_reifythat is only resolved on non-variables for which built-in syntax-directed reification did not find a match (#156, by Andres Erbsen).
in
NsatzTacticAdded support for
nsatzusing ring hypotheses above non-ring hypotheses. If a proof relies onnsatznot using earlier ring hypotheses, clear these hypotheses before calling nsatz. (#157, by Andres Erbsen).
in
ZArithRingAdded
Zpower_theoryto replace the now-deprecated one inZpow_def(#150, by Andres Erbsen).
in
Zcong.vtheory of integer congruences and multiplicative inverses up to Chinese Remainder Theorem (#135, by Andres Erbsen).
new file
Zdivisibility.vRefactored theory of integer divisibility including primality and coprimality. This file is intended to replace
Znumtheory(#136, by Andres Erbsen).
in
Zmod.vAdded theory of modular integer arithmetic, including machine words / bitvectors and the multiplicative group of integers modulo another integer. About 450 lemmas are provided (#144, by Andres Erbsen).
in
ZmodNsatzandZmodAdded support for the
nsatztactic onZmod(#156, by Andres Erbsen).
in
ZModOffset.vAdded theory of
Z.modulowith output range shifted by a constant. The main definition isZ.omodulo, withZ.smodulocapturing the special case where the offset is equal to half of the modulus, such as in two's-complement arithmetic (#135, by Andres Erbsen).
Removed
in
Zdiv.valias
ZmodforZ.modulo, deprecated since 8.17 (#149, by Andres Erbsen).
in
ZMicromegaSupport for
EnumProof`s in `ZChecker. Theliaplugin does not generate such proofs anymore. If you have a different certificate generator that targets the same checker, please open an issue (#150, by Andres Erbsen).
Deprecated
in
DivLemmas
Zmod_0_randZdiv_0_rin favor ofBinInt.Z.mod_0_randBinInt.Z.div_0_r(#150, by Andres Erbsen).
in
Rtauto and rtauto.BintreeIf you use this plugin and would like to continue using it, please open an issue to discuss its maintainership (#161, by Andres Erbsen).
in
ZMicromegaInternal tactics
flatten_boolandinv, definitionsEnumProof,isZ0,bdepth,vars, and lemmaseq_le_iff,isZ0_0,isZ0_0,isZ0_n0,isZ0_n0,eq_true_iff_eq,max_var_le,max_var_correct,max_var_nformulae_correct_aux,max_var_nformalae_correct,ltof_bdepth_split_l,ltof_bdepth_split_r(#150, by Andres Erbsen).Misplaced lemma
Zpower_theory, with replacement inZArithRing(#150, by Andres Erbsen).
in
Znumtheory.vDeprecated most definitions in favor of
Zdivisibility.vor appropriate established files (#136, by Andres Erbsen).
Version 9.0
Changes in 9.0.0
Changed
Changed the requirement prefix of the standard library from
CoqtoStdliband made it mandatory. As a temporary measure, for backward compatibility with older versions,Coq, or a missingFrom Stdlib, is immediatly translated toStdlibwith a warning. It is thus not recommended to name anythingCoqorCoq.*. The recommended transition path is to first potentially silence the warnings, adding the lines-arg -w -arg -deprecated-from-Coq,-arg -w -arg -deprecated-dirpath-Coqand-arg -w -arg -deprecated-missing-stdlibor simply the more generic-arg -compat -arg 8.20to your_CoqProject. Then, when droping support for Coq <= 8.20, replacing requirement of Stdlib modules byFrom Stdlib Require {Import,Export,} <LibraryModules>.. Beware that the Stdlib still has a handful redundant names, that is for modulesByte, you still have to useFrom Stdlib.StringsorFrom Stdlib.Init, forTacticsuseFrom Stdlib.ProgramorFrom Stdlib.Init, forTautouseFrom Stdlib.micromegaorFrom Stdlib.Initand forWf, useFrom Stdlib.ProgramorFrom Stdlib.Init(#19310 and #19530, the latter starting to implement CEP#83 by Pierre Roux).in
Fin.vcase_L_R'andcase_L_Rmade transparent definitions (#19655, by Andrej Dudenhefner).
in
List.vlemmas that were using the letter
Oin their name to refer to zero now use instead the digit0(#19479, by Hugo Herbelin).
in several files
remove transitive requirements or export of theories about
Z, you may need to add explicitRequireorImportofZArithorLia(#19801, by Andres Erbsen).
in
Zbool.vdefinition of
Zeq_boolis now an alias forZ.eqb, this is expected to simplify simultaneous compatibility with 8.20 and 9.0 (#19801, by Andres Erbsen).
Added
file
All.vwhich doesRequire Exportof all other files in Stdlib (#19914, by Gaëtan Gilbert).in
BinPos.vlemma
BinPos.iter_op_correct, relatingPos.iter_opfor associative operations to the more generalPos.iter(#19749, by Andres Erbsen).
in
Eqdep_dec.vinLogiclemmas
UIP_None_l,UIP_None_r,UIP_None_None,UIP_nil_l,UIP_nil_r,UIP_nil_nil(#19483, by Andres Erbsen).
in
EquivDec.vinClassesEqDecinstance foroption(#19949, by Daniil Iaitskov).
in
Fin.vlemmas
case_L_R'_L,case_L_R'_R,case_L_R_L,case_L_R_R(#19655, by Andrej Dudenhefner).
in
Inverse_Image.vinWellfoundedlemmas
Acc_simulationandwf_simulation(#18183, by Andrej Dudenhefner).
in
List.vlemmas
length_consandlength_nil(#19479, by Hugo Herbelin).Properinstance to enablesetoid_rewriteto rewrite inside the function argument ofList.map(#19515, by Andres Erbsen).lemmas
length_tl,tl_map,filter_rev,filter_map_swap,filter_true,filter_false,list_prod_as_flat_map,skipn_seq,map_const,fst_list_prod,snd_list_prod,Injective_map_NoDup_in, andPermutation_map_same_l(#19748, by Andres Erbsen).lemma
length_app_comm(#75, by Nicholas Hubbard).
file
List_Extension.vinWellfounded(#18183, by Andrej Dudenhefner).in
List_Extension.vwell-founded list extension
list_extof a well-founded relation, including infrastructure lemmas. It can be used for well-foundedness proofs such aswf_lex_expinLexicographic_Exponentiation.v(#18183, by Andrej Dudenhefner).
in
NatInt.vlemmas
mul_reg_landmul_reg_r(#17560, by Remzi Yang).
in
Operators_Properties.vinRelationslemma
clos_t_clos_rt(#18183, by Andrej Dudenhefner).
in
Realsnew file
Zfloor.vwith definitions ofZfloorandZceiland corresponding lemmasup_Zfloor,IZR_up_Zfloor,Zfloor_bound,Zfloor_lub,Zfloor_eq,Zfloor_le,Zfloor_addz,ZfloorZ,ZfloorNZ,ZfloorD_cond,Zceil_eq,Zceil_le,Zceil_addz,ZceilD_cond,ZfloorB_cond,ZceilB_cond(#89, by Laurent Théry).
in
VectorSpec.vlemma
Forall2_cons_iff(#19269, by Lucas Donati and Andrej Dudenhefner and Pierre Rousselin).
in
Zdiv.vlemma
Z.mod_id_iffgeneralizesZ.mod_small. (#19752, by Andres Erbsen).lemmas
Z.mod_opp_mod_opp,Z.mod_mod_opp_r,Z.mod_opp_r_mod,Z.mod_mod_abs_r,Z.mod_abs_r_modcombiningZ.modulowithZ.opporZ.abs(#19752, by Andres Erbsen).Lemmas
cong_iff_0andcong_iff_excan be used to reduce congruence equalities to equations where only one side is headed byZ.modulo. (#19752, by Andres Erbsen).Lemmas
Z.gcd_mod_landZ.gcd_mod_rgeneralizeZ.gcd_mod. (#19752, by Andres Erbsen).Lemma
Z.mod_mod_dividegeneralizesZmod_mod. (#19752, by Andres Erbsen).Lemma
Z.mod_pow_lallows pushing modulo inside exponentiation (#19752, by Andres Erbsen).
file
Zdiv_facts.v(#19752, by Andres Erbsen).in
Zdiv_facts.vin
Znat.vlemmas
N2Z.inj_lxor,N2Z.inj_land,N2Z.inj_lor,N2Z.inj_ldiff,N2Z.inj_shiftl, andN2Z.inj_shiftrrelating bitwise operations onNto those onZ(#19750, by Andres Erbsen).
Deprecated
Previous versions
The standard library historically used to be distributed with Coq, please look in Coq own changelog for details about older changes.