All notable changes to this project will be documented in this file.
Last releases: [1.8.0] - 2019-04-08 and [1.7.0] - 2018-04-24.
The format is based on Keep a Changelog.
Drop compatibility with Coq 8.6 (OCaml plugin removed). MathComp 1.8.0 is compatible with Coq 8.7, 8.8 and 8.9.
-
Companion matrix of a polynomial
companionmx p
and the theorems:companionmxK
,map_mx_companion
andcompanion_map_poly
-
homoW_in
,inj_homo_in
,mono_inj_in
,anti_mono_in
,total_homo_mono_in
,homoW
,inj_homo
,monoj
,anti_mono
,total_homo_mono
-
sorted_lt_nth
,ltn_index
,sorted_le_nth
,leq_index
. -
[arg minr_( i < n | P ) F]
and[arg maxr_( i < n | P ) F]
with all their variants, following the same convention as fornat
-
contra_neqN
,contra_neqF
,contra_neqT
,contra_neq_eq
,contra_eq_neq
-
take_subseq
,drop_subseq
-
big_imset_cond
,big_map_id
,big_image_cond
big_image
,big_image_cond_id
andbig_image_id
-
foldrE
,foldlE
,foldl_idx
andsumnE
to turn "seq statements" into "bigop statements" -
all_iff
with notation[<-> P0; P1; ..; Pn]
to talk about circular implicationP0 -> P1 -> ... -> Pn -> P0
. Related theorems areall_iffLR
andall_iffP
-
support for casts in map comprehension notations, e.g.,
[seq E : T | s <- s]
. -
a predicate
all2
, a parallel doubleseq
version ofall
. -
some
perm_eq
lemmas:perm_cat[lr]
,perm_eq_nilP
,perm_eq_consP
,perm_eq_flatten
. -
a function
permutations
that computes a duplicate-free list of all permutations of a given sequences
over aneqType
, along whit its theory.
-
Theory of
lersif
and intervals:- Many
lersif
related lemmas are ported fromssrnum
- Changed:
prev_of_itv
,itv_decompose
, anditv_rewrite
- New theory of intersections of intervals
- Many
-
Generalized
extremum_spec
and its theory, addedextremum
andextremumP
, generalizingarg_min
for an arbitraryeqType
with an order relation on it (rather thannat
). Redefinedarg_min
andarg_max
with it. -
Reshuffled theorems inside files and packages:
countalg
goes from the field to the algebra packagefinalg
inherits from countalgclosed_field
contains the construction of algebraic closure for countable fields that used to be in the filecountalg
.
-
Maximal implicits applied to reflection, injectivity and cancellation lemmas so that they are easier to pass to combinator lemmas such as
sameP
,inj_eq
orcanLR
. -
Added
reindex_inj s
shorthand for reindexing a bigop with a permutations
. -
Added lemma
eqmxMunitP
: two matrices with the same shape represent the same subspace iff they differ only by a change of basis. -
Corrected implicits and documentation of
MatrixGenField
. -
Rewritten proof of quantifier elimination for closed field in a monadic style.
-
Specialized
bool_irrelevance
so that the statement reflects the name. -
Changed the shape of the type of
FieldMixin
to allow one-line in-proof definition of bespokefieldType
structure. -
Refactored and extended Arguments directives to provide more comprehensive signature information.
-
Generalized the notation
[seq E | i <- s, j <- t]
to the case wheret
may depend oni
. The notation is now primitive and expressed usingflatten
andmap
(see documentation of seq).allpairs
now expands to this notation when fully applied.- Added
allpairs_dep
and made it self-expanding as well. - Generalized some lemmas in a backward compatible way.
- Some strictly more general lemmas now have suffix
_dep
. - Replaced
allpairs_comp
with its conversemap_allpairs
. - Added
allpairs
extensionality lemmas for the following cases: non-localised (eq_allpairs
), dependent localised (eq_in_allpairs_dep
) and non-dependent localised (eq_in_allpairs
); as pereq_in_map
, the latter two are equivalences.
- Added
-
Generalized
{ffun A -> R}
to handle dependent functions, and to be structurally positive so it can be used in recursive inductive type definitions.Minor backward incompatibilities:
fgraph f
is no longer a field accessor, and no longer equal toval f
as{ffun A -> R}
is no longer asubType
; some instances offinfun
,ffunE
,ffunK
may not unify with a generic non-dependent function typeA -> ?R
due to a bug in Coq version 8.9 or below. -
Renamed double
seq
induction lemma fromseq2_ind
toseq_ind2
, and weakened its induction hypothesis. -
Replaced the
nosimpl
inrev
with aArguments simpl never
directive. -
Many corrections in implicits declarations.
-
fixed missing joins in
ssralg
,ssrnum
,finalg
andcountalg
Renamings also involve the _in
suffix counterpart when applicable
mono_inj
->incr_inj
nmono_inj
->decr_inj
leq_mono_inj
->incnr_inj
leq_nmono_inj
->decnr_inj
homo_inj_ltn_lt
->incnr_inj
nhomo_inj_ltn_lt
->decnr_inj
homo_inj_in_lt
->inj_homo_ltr_in
nhomo_inj_in_lt
->inj_nhomo_ltr_in
ltn_ltrW_homo
->ltnrW_homo
ltn_ltrW_nhomo
->ltnrW_nhomo
leq_lerW_mono
->lenrW_mono
leq_lerW_nmono
->lenrW_nmono
homo_leq_mono
->lenr_mono
nhomo_leq_mono
->lenr_nmono
homo_inj_lt
->inj_homo_ltr
nhomo_inj_lt
->inj_nhomo_ltr
homo_inj_ltn_lt
->inj_homo_ltnr
nhomo_inj_ltn_lt
->inj_nhomo_ltnr
homo_mono
->ler_mono
nhomo_mono
->ler_nmono
big_setIDdep
->big_setIDcond
sum_nat_dep_const
->sum_nat_cond_const
-
Removed trailing
_ : Type
field from packed classes. This performance optimization is not strictly necessary with modern Coq versions. -
Removed duplicated definitions of
tag
,tagged
andTagged
fromeqtype.v
. They are already inssrfun.v
. -
Miscellaneous improvements to proof scripts and file organisation.
Compatibility with Coq 8.8 and lost compatibility with Coq <= 8.5. This release is compatible with Coq 8.6, 8.7 and 8.8.
-
Integration in Coq startng from version 8.7 of:
- OCaml plugin (plugin for 8.6 still in the archive for backward compatibility)
ssreflect.v
,ssrbool.v
,ssrfun.v
andssrtest/
-
Cleaning up the github repository: the math-comp repository is now dedicated to the released material (as in the present release). For instance, directories
real-closed/
andodd-order/
now have their own repository.
-
Library refactoring:
algC
andssrnum
. Libraryssrnum.v
provides an interfacenumClosedFieldType
, which abstracts the theory of algebraic numbers. In particular,Re
,Im
,'i
,conjC
,n.-root
andsqrtC
, previously defined in libraryalgC.v
, are now part of this generic interface. In case of ambiguity, a cast to typealgC
, of complex algebraic numbers, can be used to disambiguate via typing constraints. Some theory was thus made more generic, and the corresponding lemmas, previously defined in libraryalgC.v
(e.g.conjCK
) now feature an extra, non maximal implicit, parameter of typenumClosedFieldType
. This could break some proofs. Every theorem fromssrnum
that used to be inalgC
changed statement. -
ltngtP
,contra_eq
,contra_neq
,odd_opp
,nth_iota
iter_in
,finv_in
,inv_f_in
,finv_inj_in
,fconnect_sym_in
,iter_order_in
,iter_finv_in
,cycle_orbit_in
,fpath_finv_in
,fpath_finv_f_in
,fpath_f_finv_in
big_allpairs
uniqP, uniqPn
dec_factor_theorem
,mul_bin_down
,mul_bin_left
abstract_context
(in ssreflect.v
, now merged in Coq proper)
- Lemma
dvdn_fact
was moved from libraryprime.v
to librarydiv.v
- `mul_Sm_binm -> mul_bin_diag
divn1
->divz1
(in intdiv)rootC
->nthroot
algRe
->Re
algIm
->Im
algCi
->imaginaryC
reshape_index_leq
->reshape_leq
Major reorganization of the archive.
-
Files split into sub-directories:
ssreflect/
,algebra/
,fingroup/
,solvable/
,field/
andcharacter/
. In this way the user can decide to compile only the subset of the Mathematical Components library that is relevant to her. Note that this introduces a possible incompatibility for users of the previous version. A replacement scheme is suggested in the installation notes. -
The archive is now open and based on git. Public mirror at: https://github.com/math-comp/math-comp
-
Sources of the reference manual of the Ssreflect tactic language are also open and available at: https://github.com/math-comp/ssr-manual Pull requests improving the documentation are welcome.
conjC_closed
->cfConjC_closed
class_transr
->class_eqP
cfclass_transl
->cfclass_transr
nontrivial_ideal
->proper_ideal
zchar_orthonormalP
->vchar_orthonormalP
seq_sub
orbit_in_transl
,orbit_sym
,orbit_trans
,orbit_transl
,orbit_transr
,cfAut_char
,cfConjC_char
,invg_lcosets
,lcoset_transl
,lcoset_transr
,rcoset_transl
,rcoset_transr
,mem2_last
,bind_unless
,unless_contra
,all_and2
,all_and3
,all_and4
,all_and5
,ltr0_neq0
,ltr_prod
,Zisometry_of_iso
adhoc_seq_sub_choiceMixin
,adhoc_seq_sub_[choice|fin]Type
orbit_in_eqP
,cards_draws
,cfAut_lin_char
,cfConjC_lin_char
,extend_cfConjC_subset
,isometry_of_free
,cfAutK
,cfAutVK
,lcoset_eqP
,rcoset_eqP
,class_eqP
,gFsub_trans
,gFnorms
,gFchar_trans
,gFnormal_trans
,gFnorm_trans
,mem2_seq1
,dvdn_fact
,prime_above
,subKr
,subrI
,subIr
,subr0_eq
,divrI
,divIr
,divKr
,divfI
,divIf
,divKf
,impliesP
,impliesPn
,unlessL
,unlessR
,unless_sym
,unlessP
(coercion),classicW
,ltr_prod_nat
- Notation
\unless C, P
Split the archive in SSReflect and MathComp
-
With this release "ssreflect" has been split into two packages. The Ssreflect one contains the proof language (plugin for Coq) and a small set of core theory libraries about boolean, natural numbers, sequences, decidable equality and finite types. The Mathematical Components one contains advanced theory files covering a wider spectrum of mathematics.
-
With respect to version 1.4 the proof language got a few new features related to forward reasoning and some bug fixes. The Mathematical Components library features 16 new theory files and in particular: some field and Galois theory, advanced character theory and a construction of algebraic numbers.
-
With this release the plugin code received many bug fixes and the existing libraries relevant updates. This release also includes some new libraries on the following topics: rational numbers, divisibility of integers, F-algebras, finite dimensional field extensions and Euclidean division for polynomials over a ring.
-
The release includes a major code refactoring of the plugin for Coq 8.4. In particular a documented ML API to access the pattern matching facilities of Ssreflect from third party plugins has been introduced.
-
The tactic language has been extended with several new features, inspired by the five years of intensive use in our project. However we have kept the core of the language unchanged; the new library compiles with Ssreflect 1.2. Users of a Coq 8.2 toplevel statically linked with Ssreflect 1.2 need to comment the Declare ML Module "ssreflect" line in ssreflect.v to properly compile the 1.3 library. We will continue supporting new releases of Coq in due course.
-
The new library adds general linear algebra (matrix rank, subspaces) and all of the advanced finite group that was developed in the course of completing the Local Analysis part of the Odd Order Theorem, starting from the Sylow and Hall theorems and including full structure theorems for abelian, extremal and extraspecial groups, and general (modular) linear representation theory.
No change log
First public release