All notable changes to this project will be documented in this file.
Last releases: [1.15.0] - 2022-06-30, [1.14.0] - 2022-01-19, [1.13.0] - 2021-10-28 and [1.12.0] - 2020-11-26.
The format is based on Keep a Changelog.
This release is compatible with Coq versions 8.13, 8.14, 8.15 and 8.16.
The contributors to this version are: Cyril Cohen, ed-hermoreyes, Enrico Tassi, Erik Martin-Dorel, Evgenii Moiseenko, Georges Gonthier, Jonathan Sterling, Kazuhiko Sakaguchi, Laurent Théry, Mireia G. Bedmar, Pierre Jouvelot, Pierre Roux, Reynald Affeldt, Wojciech Karpiel
-
in
bigop.v
- lemmas
leq_prod
,telescope_big
,telescope_sumn
,telescope_sumn_in
leq_bigmax_seq
,bigmax_leqP_seq
,bigmax_sup_seq
,eq_bigl_supp
,perm_big_supp_cond
,perm_big_supp
- lemmas
-
in
path.v
- lemma
sortedP
- lemma
-
in
seq.v
,- definitions
prefix
,suffix
,infix
,infix_index
- lemmas
nilpE
,prefixE
,prefix_refl
,prefixs0
,prefix0s
,prefix_cons
,prefix_catr
,prefix_prefix
,prefixP
,prefix_trans
,prefixs1
,catl_prefix
,prefix_catl
,prefix_rcons
,prefix_rev
,prefix_revLR
,prefix1s
,prefix_uniq
,prefix_take
,prefix_drop_gt0
,size_prefix
,suffixE
,suffix_refl
,suffixs0
,suffix0s
,suffix_rev
,suffix_revLR
,suffix_suffix
,suffixP
,suffix_trans
,suffix_rcons
,suffix_catl
,suffix_catr
,catl_suffix
,suffix_cons
,suffixW
,suffix1s
,suffix_uniq
,suffix_drop
,size_suffix
,infix0s
,infixs0
,infix_consl
,infix_indexss
,infix_index_le
,infixTindex
,infixPn
,infix_index0s
,infix_indexs0
,infixE
,infix_refl
,prefixW
,prefix_infix
,infix_infix
,suffix_infix
,infixP
,infix_rev
,infix_trans
,infix_revLR
,infix_rconsl
,infix_cons
,infixs1
,catl_infix
,catr_infix
,cons2_infix
,rcons2_infix
,catr2_infix
,catl2_infix
,infix_catl
,infix_catr
,prefix_infix_trans
,suffix_infix_trans
,infix_prefix_trans
,infix_suffix_trans
,prefix_suffix_trans
,suffix_prefix_trans
,infixW
,mem_infix
,infix1s
,infix_rcons
,infix_uniq
,infix_take
,infix_drop
,consr_infix
,consl_infix
,prefix_index
,size_infix
,mkseqS
,mkseq_uniqP
,nth_seq1
,set_nthE
,count_set_nth
,count_set_nth_ltn
,count_set_nthF
,subseq_anti
,size_take_min
,subseq_anti
- definitions
-
in
ssralg.v
- notation
\- f
for definitionopp_fun
- notation
f \* g
for definitionmul_fun
- lemmas
opp_fun_is_additive
andopp_fun_is_scalable
- canonical instances
opp_fun_additive
andopp_fun_linear
- missing export for
eqr_div
- number notation in scope ring_scope, numbers such as
12
or42
are now read as12%:R
or42%:R
- notation
-
in
rat.v
- Number Notation for numbers of the form
-? [0-9][0-9_]* ([.][0-9_]+)?
in scoperat_scope
(for instance 12%Q or 3.14%Q) - lemma
rat_vm_compute
which is a specialization to the rewriting rulevm_compute
to triggervm_compute
by a rewrite
- Number Notation for numbers of the form
-
in
ssrint.v
- number notation in scope int_scope,
12
or-42
are now read asPosz 12
orNegz 41
- number notation in scope ring_scope, numbers such as
-12
are now read as(-12)%:~R
- number notation in scope int_scope,
-
in
fintype.v
- lemmas
enum_ord0
,enum_ordSl
,enum_ordSr
- lemmas
-
in
ssrbool.v
- definition
pred_oapp
- lemmas
all_sig2_cond
,all_sig2_cond
,can_in_pcan
,pcan_in_inj
,in_inj_comp
,can_in_comp
,pcan_in_comp
,ocan_in_comp
,eqbLR
,eqbRL
,homo_mono1
- definition
-
in
choice.v
- coercion
Choice.mixin
- coercion
-
in
eqtype.v
- notations
eqbLHS
andeqbRHS
- notations
-
in
order.v
- notations
leLHS
,leRHS
,ltLHS
,ltRHS
- notation
f \min g
andf \max g
for definitionsmin_fun
andmax_fun
- lemma
le_le_trans
- notations
-
in
ssrnat.v
- notations
leqLHS
,leqRHS
,ltnLHS
,ltnRHS
- lemmas
geq_half_double
,leq_uphalf_double
- notations
-
in
ssrfun.v
- definition
olift
- lemmas
obindEapp
,omapEbind
,omapEapp
,oappEmap
,omap_comp
,oapp_comp
,oapp_comp_f
,olift_comp
,compA
,ocan_comp
- definition
-
in
tuple.v
- lemma
tuple_uniqP
- lemma
-
in
ssreflect.v
:- typeclass
vm_compute_eq
and lemmavm_compute
in order to trigger a call to the tacticvm_compute
when rewriting usingrewrite [pattern]vm_compute
- notation
[elaborate t]
forcing the elaboration oft
using Coq'srefine
tactic. This notation can be used in tandem withhave
to force type class resolution when an explicit proof termt
is provided (otherwise type class instances are quantified implicitly byhave
)
- typeclass
-
in
ssrnum.v
- lemmas
mulCii
,ReE
,ImE
,conjCN1
,CrealJ
,eqCP
,eqC
,ImM
,ImMil
,ReMil
,ImMir
,ReMir
,ReM
,invC_Crect
,ImV
,ReV
,rectC_mulr
,rectC_mull
,divC_Crect
,divC_rect
,Im_div
,Re_div
- adding resolution of
'Re x \in Num.real
and'Im x \in Num.real
as inHint Extern
tocore
database
- lemmas
-
in
ssrnum.v
- lemmas
gtr_opp
,mulr_ge0_gt0
,splitr
,ler_addgt0Pr
,ler_addgt0Pl
,lt_le
,gt_ge
- lemmas
-
in
interval.v
- definition
miditv
- lemmas
in_segment_addgt0Pr
,in_segment_addgt0Pl
,ltBSide
,leBSide
,lteBSide
,ltBRight_leBLeft
,leBRight_ltBLeft
,bnd_simp
,itv_splitU1
,itv_split1U
,mem_miditv
,miditv_le_left
,miditv_ge_right
,predC_itvl
,predC_itvr
,predC_itv
- coercion
pair_of_interval
- definition
-
The following notations are now declared in
type_scope
{tuple n of T}
and{bseq n of T}
intuple.v
{subset T}
and{subset [d] T}
inorder.v
{morphism D >-> T}
inmorphism.v
{acts A, on S | to}
and{acts A, on group G | to}
inaction.v
{additive U -> V}
,{rmorphism R -> S}
,{linear U -> V}
{linear U -> V | s}
,{scalar U}
,{lrmorphism A -> B}
{lrmorphism A -> B | s}
inssralg.v
{poly R}
inpoly.v
{quot I}
and{ideal_quot I}
inring_quotient.v
{ratio T}
and{fraction T}
infraction.v
-
in
rat.v
zeroq
andoneq
(hence0%Q
and1%Q
) are now the evaluation of termsfracq (0, 1)
andfracq (1, 1)
(and not the term themselves), the old and new values are convertible and can be easily converted withrewrite -[0%Q]valqK -[1%Q]valqK
-
in
order.v
- fix
[distrLatticeType of T with disp]
notation
- fix
-
in
fintype.v
enum_ordS
now a notation
-
in
gproduct.v
- put notations
G ><| H
,G \* H
andG \x H
ingroup_scope
- put notations
-
in
ssrnum.v
- locked definitions
Re
andIm
- locked definitions
- in
ssrbool.v
mono2W_in
tomono1W_in
(was misnamed)
-
in
ssrbool.v
- notations
{pred T}
,[rel _ | _]
,[rel _ in _]
,xrelpre
(now in ssrbool in Coq) - definitions
PredType
,simpl_rel
,SimplRel
,relpre
(now in ssrbool in Coq) - coercion
rel_of_simpl_rel
deprecated forrel_of_simpl
(in ssrbool in Coq) - lemmas
simpl_pred_sortE
,homo_sym
,mono_sym
,homo_sym_in
,mono_sym_in
,homo_sym_in11
,mono_sym_in11
,onW_can
,onW_can_in
,in_onW_can
,onS_can
,onS_can_in
,in_onS_can
,homoRL_in
,homoLR_in
,homo_mono_in
,monoLR_in
,monoRL_in
,can_mono_in
,inj_can_sym_in_on
,inj_can_sym_on
,inj_can_sym_in
,contra_not
,contraPnot
,contraTnot
,contraNnot
,contraPT
,contra_notT
,contra_notN
,contraPN
,contraFnot
,contraPF
,contra_notF
(now in ssrbool in Coq, beware thatsimpl_pred_sortE
,contra_not
,contraPnot
,contraTnot
,contraNnot
,contraPT
,contra_notT
,contra_notN
,contraPN
,contraFnot
,contraPF
,contra_notF
have different implicit arguments and the order of arguments changes inhomoRL_in
,homoLR_in
,homo_mono_in
,monoLR_in
,monoRL_in
,can_mono_in
)
- notations
-
in
ssreflect.v
- structure
NonPropType.call_of
, constructorCall
and fieldcallee
(now in ssreflect in Coq) - definitions
maybeProp
,call
(now in ssreflect in Coq) - structure
NonPropType.test_of
, constructorTest
and fieldcondition
(now in ssreflect in Coq, beware that implicit arguments ofcondition
differ) - definitions
test_Prop
,test_negative
(now in ssreflect in Coq) - structure
NonPropType.type
, constructorCheck
and fieldsresult
,test
,frame
(now in ssreflect in Coq, beware that implicit arguments ofCheck
differ) - definition
check
(now in ssreflect in Coq, beware that implicit arguments ofcheck
differ) - notation
[apply]
,[swap]
,[dup]
in scopessripat_scope
(now in ssreflect in Coq)
- structure
-
in
ssrfun.v
- lemmas
Some_inj
,of_voidK
,inj_compr
(now in ssrfun in Coq, beware that implicit arguments ofinj_compr
differ) - notation
void
(now in ssrfun in Coq) - definition
of_void
(now in ssrfun in Coq)
- lemmas
-
in
bigop.v
- notation
big_uncond
- notations
mulm_addl
,mulm_addr
,filter_index_enum
- notation
-
in
ssrnat.v
- notations
odd_add
,odd_sub
,iter_add
,maxn_mulr
,maxn_mull
,minn_mulr
,minn_mull
,odd_opp
,odd_mul
,odd_exp
,sqrn_sub
- notations
-
in
seq.v
- notations
take_addn
,rot_addn
,nseq_addn
,allpairs_catr
,allpairs_consr
,perm_allpairs_rconsr
,iota_addl
- notations
-
in
fintype.v
- notations
arg_minP
,arg_maxP
,bump_addl
,unbump_addl
,disjoint_trans
- notations
-
in
perm.v
- notations
tuple_perm_eqP
,pcycle
,pcycles
,mem_pcycle
,pcycle_id
,uniq_traject_pcycle
,pcycle_traject
,iter_pcycle
,eq_pcycle_mem
,pcycle_sym
,pcycle_perm
,ncycles_mul_tperm
- notations
-
in
classfun.v
- notation
cf_triangle_lerif
- notation
-
in
action.v
- notations
pcycleE
,pcycle_actperm
- notations
-
in
prime.v
- notations
primes_mul
,primes_exp
,pnat_mul
,pnat_exp
- notations
-
in
path.v
- notations
sorted_lt_nth
,sorted_le_nth
,ltn_index
,leq_index
,subseq_order_path
- notations
-
in
div.v
- notations
coprime_mull
,coprime_mulr
,coprime_expl
,coprime_expr
- notations
-
in
vector.v
- notation
limg_add
- notation
-
in
ssrint.v
- notation
polyC_mulrz
- notation
-
in
poly.v
- notations
polyC_add
,polyC_opp
,polyC_sub
,polyC_muln
,polyC_mul
,polyC_inv
,lead_coef_opp
,derivn_sub
- notations
-
in
polydiv.v
- notations
rdivp_addl
,rdivp_addr
,rmodp_add
,dvdp_scalel
,dvdp_scaler
,dvdp_opp
,coprimep_scalel
,coprimep_scaler
,coprimep_mull
,coprimep_mulr
,modp_scalel
,modp_scaler
,modp_opp
,modp_add
,divp_scalel
,divp_scaler
,divp_opp
,divp_add
,modp_scalel
,modp_scaler
,modp_opp
,modp_add
,divp_scalel
,divp_scaler
,divp_opp
,divp_add
- notations
-
in
mxalgebra.v
- notations
mulsmx_addl
,mulsmx_addr
- notations
-
in
matrix.v
- notations
scalar_mx_comm
,map_mx_sub
- notations
-
in
interval.v
- notations
@ 'lersif'
,lersif
,x <= y ?< 'if' b
,subr_lersifr0
,subr_lersif0r
,subr_lersif0
,lersif_trans
,lersif01
,lersif_anti
,lersifxx
,lersifNF
,lersifS
,lersifT
,lersifF
,lersif_oppl
,lersif_oppr
,lersif_0oppr
,lersif_oppr0
,lersif_opp2
,lersif_oppE
,lersif_add2l
,lersif_add2r
,lersif_add2
,lersif_subl_addr
,lersif_subr_addr
,lersif_sub_addr
,lersif_subl_addl
,lersif_subr_addl
,lersif_sub_addl
,lersif_andb
,lersif_orb
,lersif_imply
,lersifW
,ltrW_lersif
,lersif_pmul2l
,lersif_pmul2r
,lersif_nmul2l
,lersif_nmul2r
,real_lersifN
,real_lersif_norml
,real_lersif_normr
,lersif_nnormr
,lersifN
,lersif_norml
,lersif_normr
,lersif_distl
,lersif_minr
,lersif_minl
,lersif_maxr
,lersif_maxl
,lersif_pdivl_mulr
,lersif_pdivr_mulr
,lersif_pdivl_mull
,lersif_pdivr_mull
,lersif_ndivl_mulr
,lersif_ndivr_mulr
,lersif_ndivl_mull
,lersif_ndivr_mull
,lersif_in_itv
,itv_gte
,ltr_in_itv
,ler_in_itv
,itv_splitU2
,@ 'itv_intersection'
,itv_intersection
,@ 'itv_intersection1i'
,itv_intersection1i
,@ 'itv_intersectioni1'
,itv_intersectioni1
,@ 'itv_intersectionii'
,itv_intersectionii
,@ 'itv_intersectionC'
,itv_intersectionC
,@ 'itv_intersectionA'
,itv_intersectionA
- notations
-
in
intdiv.v
- notations
coprimez_mull
,coprimez_mulr
,coprimez_expl
,coprimez_expr
- notations
- in
builddoc_lib.sh
:- change the sed command that removes all starred lines
- fix warning
deprecated-hint-without-locality
by adding the#[global]
attribute to most hints - turn warning
deprecated-hint-without-locality
into an error
This release is compatible with Coq versions 8.11, 8.12, 8.13, 8.14, and 8.15.
The contributors to this version are: Cyril Cohen, Erik Martin-Dorel, Kazuhiko Sakaguchi, Laurent Théry, Pierre Roux
-
in
seq.v
, added theorempairwise_trans
, -
in
prime.v
- theorems
trunc_log0
,trunc_log1
,trunc_log_eq0
,trunc_log_gt0
,trunc_log0n
,trunc_log1n
,leq_trunc_log
,trunc_log_eq
,trunc_lognn
,trunc_expnK
,trunc_logMp
,trunc_log2_double
,trunc_log2S
- definition
up_log
- theorems
up_log0
,up_log1
,up_log_eq0
,up_log_gt0
,up_log_bounds
,up_logP
,up_log_gtn
,up_log_min
,leq_up_log
,up_log_eq
,up_lognn
,up_expnK
,up_logMp
,up_log2_double
,up_log2S
,up_log_trunc_log
,trunc_log_up_log
- theorems
-
in
prime.v
- definition
trunc_log
now it is 0 when p <= 1
- definition
-
in
ssrnum.v
- generalized lemma
rootCV
so that the degree is not necessarily positive.
- generalized lemma
This release is compatible with Coq versions 8.11, 8.12, 8.13, and 8.14.
The contributors to this version are: Amel Kebbouche, Anders Mörtberg, Anton Trunov, Christian Doczkal, Cyril Cohen, Emilio Jesus Gallego Arias, Enrico Tassi, Erik Martin-Dorel, Evgenii Moiseenko, Florent Hivert, Gaëtan Gilbert, Kazuhiko Sakaguchi, Laurent Théry, Maxime Dénès, Pierre Jouvelot, Pierre Roux, Reynald Affeldt, Yves Bertot
-
Added intro pattern ltac views for rewrite:
/[1! rules]
,/[! rules]
. -
in
ssrbool.v
, added lemmasnegPP
,andPP
,orPP
, andimplyPP
. -
In
ssrnat.v
: new lemmasfact_geq
,leq_pfact
,leq_fact
,ltn_pfact
,uphalf_leq
,uphalf_gt0
. -
in
seq.v
,- new higher-order predicate
pairwise r xs
which asserts that the relationr
holds for any i-th and j-th element ofxs
such that i < j. - new lemmas
allrel_mask(l|r)
,allrel_filter(l|r)
,sub(_in)_allrel
,pairwise_cons
,pairwise_cat
,pairwise_rcons
,pairwise2
,pairwise_mask
,pairwise_filter
,pairwiseP
,pairwise_all2rel
,sub(_in)_pairwise
,eq(_in)_pairwise
,pairwise_map
,subseq_pairwise
,uniq_pairwise
,pairwise_uniq
, andpairwise_eq
. - new lemmas
zip_map
,eqseq_all
, andeq_map_all
. - new lemmas
count_undup
,eq_count_undup
,rev_take
,rev_drop
,takeEmask
,dropEmask
,filter_iota_ltn
,filter_iota_leq
,map_nth_iota0
andmap_nth_iota
- new lemmas
cat_nilp
,rev_nilp
,allrelT
,allrel_relI
, andpairwise_relI
. - new lemma
undup_map_inj
. - new lemmas:
forall_cons
,exists_cons
,sub_map
,eq_mem_map
,eq_in_pmap
.
- new higher-order predicate
-
in
path.v
,- new lemmas:
sorted_pairwise(_in)
,path_pairwise(_in)
,cycle_all2rel(_in)
,pairwise_sort
, andsort_pairwise_stable
. - new lemmas
cat_sorted2
,path_le
,take_path
,take_sorted
,drop_sorted
,undup_path
,undup_sorted
,count_merge
,eq_count_merge
- new lemmas:
pairwise_sorted
,path_relI
,cycle_relI
,sorted_relI
,eq(_in)_sorted
,mergeA
,all_merge
, andhomo_sort_map(_in)
.
- new lemmas:
-
in
fintype.v
, new lemmabij_eq_card
. -
in
fingraph.v
, new lemmas:connect_rev
,sym_connect_sym
-
in
finset.v
,- new lemmas:
bigcup0P
,bigcup_disjointP
,imset_cover
,cover1
,trivIset1
,trivIsetD
,trivIsetU
,coverD1
,partition0
,partiton_neq0
,partition_trivIset
,partitionS
,partitionD1
,partitionU1
,partition_set0
,partition_pigeonhole
,indexed_partition
,imset_inj
,imset_disjoint
,imset_trivIset
,imset0mem
,imset_partition
. - generalized
eq_preimset
,eq_imset
,eq_in_imset
,eq_in_imset2
to predicates (not only {set T}).
- new lemmas:
-
in
tuple.v
, added type of bounded sequencesn.-bseq T
and its theory, i.e.- definition
bseq
with constructorBseq
, - notation
n.-bseq
,{bseq n of T}
,[bseq of s]
,[bseq x1 ; .. ; xn]
, and[bseq]
, coercions ton.-tuple
and toseq
(which commute definitionally), definitionsinsub_bseq
,in_bseq
,cast_bseq
,widen_bseq
,bseq_tagged_tuple
andtagged_tuple_bseq
(the later two are mutual inverses). - canonical instances making
n.-bseq
canonically aneqType
, apredType
, achoiceType
, acountType
, asubCountType
, afinType
, asubFinType
; and makingnil
,cons
,rcons
,behead
,belast
,cat
,take
,drop
,rev
,rot
,rotr
,map
,scanl
,pairmap
,allpairs
, andsort
canonical_.-bseq
. - lemmas
size_bseq
,bseqE
,size_insub_bseq
,cast_bseq_id
,cast_bseqK
,cast_bseqKV
,cast_bseq_trans
,size_cast_bseq
,widen_bseq_id
,cast_bseqEwiden
,widen_bseqK
,widen_bseq_trans
,size_widen_bseq
,in_bseqE
,widen_bseq_in_bseq
,bseq0
,membsE
,bseq_tagged_tupleK
,tagged_tuple_bseqK
,bseq_tagged_tuple_bij
, andtagged_tuple_bseq_bij
. - added Canonical tuple for sort.
- new lemma
val_tcast
- definition
-
in
bigop.v
,- generalized lemma
partition_big
. - new lemmas
big_pmap
,sumnB
,card_bseq
,big_nat_widenl
,big_geq_mkord
,big_bool
,big_rev_mkord
,big_nat_mul
- generalized lemma
-
in
interval.v
, new lemmas:ge_pinfty
,le_ninfty
,gt_pinfty
,lt_ninfty
. -
in
order.v
- we provide a canonical total order on ordinals and lemmas
leEord
,ltEord
,botEord
, andtopEord
to translate generic symbols to the concrete ones. Because of a shortcoming of the current interface, which requiresfinOrderType
structures to be nonempty, thefinOrderType
is only defined for ordinal which are manifestly nonempty (i.e.'I_n.+1
). - we provide a canonical finite complemented distributive lattice structure
on finite set ({set T}) ordered by inclusion and lemmas
leEsubset
,meetEsubset
,joinEsubset
,botEsubset
,topEsubset
subEsubset
,complEsubset
to translate generic symbols to the concrete ones. - new notation
Order.enum A
forsort <=%O (enum A)
, with new lemmas in moduleOrder
:cardE
,mem_enum
,enum_uniq
,cardT
,enumT
,enum0
,enum1
,eq_enum
,eq_cardT
,set_enum
,enum_set0
,enum_setT
,enum_set1
,enum_ord
,val_enum_ord
,size_enum_ord
,nth_enum_ord
,nth_ord_enum
,index_enum_ord
,mono_sorted_enum
, andmono_unique
. - a new module
Order.EnumVal
(which can be imported locally), with definitionsenum_rank_in
,enum_rank
,enum_val
on a finite partially ordered typeT
, which are the same as the one fromfintype.v
, except they are monotonous whenOrder.le T
is total. We provide the following lemmas:enum_valP
,enum_val_nth
,nth_enum_rank_in
,nth_enum_rank
,enum_rankK_in
,enum_rankK
,enum_valK_in
,enum_valK
,enum_rank_inj
,enum_val_inj
,enum_val_bij_in
,eq_enum_rank_in
,enum_rank_in_inj
,enum_rank_bij
,enum_val_bij
,le_enum_val
,le_enum_rank_in
, andle_enum_rank
. They are all accessible via moduleOrder
if one chooses not to importOrder.EnumVal
. - a new module
tagnat
which provides a monotonous bijection between the finite ordered types{i : 'I_n & 'I_(p_ i)}
(canonically ordered lexicographically), and'I_(\sum_i p_ i)
, via the functionssig
andrank
. We provide direct access to the components of the former type via the functionssig1
,sig2
andRank
. We provide the following lemmas on these definitions:card
,sigK
,sig_inj
,rankK
,rank_inj
,sigE12
,rankE
,sig2K
,Rank1K
,Rank2K
,rank_bij
,sig_bij
,rank_bij_on
,sig_bij_on
,le_sig
,le_sig1
,le_rank
,le_Rank
,lt_sig
,lt_rank
,lt_Rank
,eq_Rank
,rankEsum
,RankEsum
,rect
, andeqRank
. - lemmas
joins_le
andmeets_ge
. - new lemmas
le_sorted_ltn_nth
,le_sorted_leq_nth
,lt_sorted_leq_nth
,lt_sorted_ltn_nth
,filter_lt_nth
,count_lt_nth
,filter_le_nth
,count_le_nth
,count_lt_le_mem
,sorted_filter_lt
,sorted_filter_le
,nth_count_le
,nth_count_lt
,count_le_gt
,count_lt_ge
,sorted_filter_gt
,sorted_filter_ge
,nth_count_ge
,nth_count_lt
andnth_count_eq
- new lemmas
(le|lt)_path_min
,(le|lt)_path_sortedE
,(le|lt)_(path|sorted)_pairwise
,(le|lt)_(path|sorted)_(mask|filter)
,subseq_(le|lt)_(path|sorted)
,lt_sorted_uniq
,sort_lt_id
,perm_sort_leP
,filter_sort_le
,(sorted_)(mask|subseq)_sort_le
,mem2_sort_le
. - a new mixin
meetJoinLeMixin
constructing alatticeType
frommeet
,join
and proofs that those are respectvely the greatest lower bound and the least upper bound.
- we provide a canonical total order on ordinals and lemmas
-
in
matrix.v
,- seven new definitions:
mxblock
,mxcol
,mxrow
andmxdiag
with notations\mxblock_(i < m, j < n) B_ i j
,\mxcol_(i < m) B_ i
,\mxrow_(j < n) B_ j
, and\mxdiag_(i < n) B_ i
(and variants without explicit< n
), to form big matrices described by blocks. submxblock
,submxcol
andsubmxrow
to extract blocks from the former constructions. There is no analogous formxdiag
because one can simply applysubmxblock A i i
.- We provide the following lemmas on these definitions:
mxblockEh
,mxblockEv
,submxblockEh
,submxblockEv
,mxblockK
,mxrowK
,mxcolK
,submxrow_matrix
,submxcol_matrix
,submxblockK
,submxrowK
,submxcolK
,mxblockP
,mxrowP
,mxcolP
,eq_mxblockP
,eq_mxblock
,eq_mxrowP
,eq_mxrow
,eq_mxcolP
,eq_mxcol
,row_mxrow
,col_mxrow
,row_mxcol
,col_mxcol
,row_mxblock
,col_mxblock
,tr_mxblock
,tr_mxrow
,tr_mxcol
,tr_submxblock
,tr_submxrow
,tr_submxcol
,mxsize_recl
,mxrow_recl
,mxcol_recu
,mxblock_recl
,mxblock_recu
,mxblock_recul
,mxrowEblock
,mxcolEblock
,mxEmxrow
,mxEmxcol
,mxEmxblock
,mxrowD
,mxrowN
,mxrowB
,mxrow0
,mxrow_const
,mxrow_sum
,submxrowD
,submxrowN
,submxrowB
,submxrow0
,submxrow_sum
,mul_mxrow
,mul_submxrow
,mxcolD
,mxcolN
,mxcolB
,mxcol0
,mxcol_const
,mxcol_sum
,submxcolD
,submxcolN
,submxcolB
,submxcol0
,submxcol_sum
,mxcol_mul
,submxcol_mul
,mxblockD
,mxblockN
,mxblockB
,mxblock0
,mxblock_const
,mxblock_sum
,submxblockD
,submxblockN
,submxblockB
,submxblock0
,submxblock_sum
,mul_mxrow_mxcol
,mul_mxcol_mxrow
,mul_mxrow_mxblock
,mul_mxblock_mxrow
,mul_mxblock
,is_trig_mxblockP
,is_trig_mxblock
,is_diag_mxblockP
,is_diag_mxblock
,submxblock_diag
,eq_mxdiagP
,eq_mxdiag
,mxdiagD
,mxdiagN
,mxdiagB
,mxdiag0
,mxdiag_sum
,tr_mxdiag
,row_mxdiag
,col_mxdiag
,mxdiag_recl
,mxtrace_mxblock
,mxdiagZ
,diag_mxrow
,mxtrace_mxdiag
,mul_mxdiag_mxcol
,mul_mxrow_mxdiag
,mul_mxblock_mxdiag
, andmul_mxdiag_mxblock
. - adding missing lemmas
trmx_conform
andeq_castmx
. - new lemmas:
row_thin_mx
,col_flat_mx
,col1
,colE
,mulmx_lsub
,mulmx_rsub
,mul_usub_mx
,mul_dsub_mx
,exp_block_diag_mx
,block_diag_mx_unit
,invmx_block_diag
- seven new definitions:
-
in
mxalgegra.v
,- Lemmas about rank of block matrices with
0
s insiderank_col_mx0
,rank_col_0mx
,rank_row_mx0
,rank_row_0mx
,rank_diag_block_mx
, andrank_mxdiag
. - we provide an equality of spaces
eqmx_col
between\mxcol_i V_i
and the sum of spaces\sum_i <<V_ i>>)%MS
.
- Lemmas about rank of block matrices with
-
In
mxpoly.v
- developed the theory of diagonalization. To that
effect, we define
conjmx
,restrictmx
, and notationsA ~_P B
,A ~_P {in S'}
,A ~_{in S} B
,A ~_{in S} {in S'}
,all_simmx_in
,diagonalizable_for
,diagonalizable_in
,diagonalizable
,codiagonalizable_in
, andcodiagonalizable
; and their theory:stablemx_comp
,stablemx_restrict
,conjmxM
,conjMmx
,conjuMmx
,conjMumx
,conjuMumx
,conjmx_scalar
,conj0mx
,conjmx0
,conjumx
,conj1mx
,conjVmx
,conjmxK
,conjmxVK
,horner_mx_conj
,horner_mx_uconj
,horner_mx_uconjC
,mxminpoly_conj
,mxminpoly_uconj
,sub_kermxpoly_conjmx
,sub_eigenspace_conjmx
,eigenpoly_conjmx
,eigenvalue_conjmx
,conjmx_eigenvalue
,simmxPp
,simmxW
,simmxP
,simmxRL
,simmxLR
,simmx_minpoly
,diagonalizable_for_row_base
,diagonalizable_forPp
,diagonalizable_forP
,diagonalizable_forPex
,diagonalizable_forLR
,diagonalizable_for_mxminpoly
,diagonalizable_for_sum
,codiagonalizable1
,codiagonalizable_on
,diagonalizable_diag
,diagonalizable_scalar
,diagonalizable0
,diagonalizablePeigen
,diagonalizableP
,diagonalizable_conj_diag
, andcodiagonalizableP
. - new lemmas
row'_col'_char_poly_mx
andchar_block_diag_mx
- developed the theory of diagonalization. To that
effect, we define
-
In
ssralg.v
- new lemma
fmorph_eq
- Canonical additive, linear and rmorphism for
fst
andsnd
- multi-rules
linearE
,rmorphE
, andraddfE
, for easier automatic reasoning with linear functions, morphisms, and additive functions. - new lemma
eqr_div
- new lemmas
lregMl
andrregMr
- new lemma
-
In
ssrnum.v
:- new lemmas
ltr_distlC
,ler_distlC
, new definitionlter_distlC
- new lemmas
sqrtrV
,eqNr
- new lemmas
-
in
ssrint.v
, new lemmasmulr_absz
,natr_absz
,lez_abs
-
In
intdiv.v
- new definition
lcmz
- new lemmas
dvdz_lcmr
,dvdz_lcml
,dvdz_lcm
,lcmzC
,lcm0z
,lcmz0
,lcmz_ge0
,lcmz_neq0
- new lemma
lez_pdiv2r
- new definition
-
in
polydiv.v
, new lemmacoprimep_XsubC2
-
in
poly.v
, new lemmasmonic_lreg
andmonic_rreg
-
In
rat.v
- new lemmas
minr_rat
,maxr_rat
- constants
fracq
,oppq
,addq
,mulq
,invq
,normq
,le_rat
, andlt_rat
are "locked" when applied to variables, computation occurs only when applied to constructors. Moreover the new definition offracq
ensures that ifx
andy
of typeint * int
represent the same rational thenfracq x
is definitionally equal tofracq y
(i.e. the underlying proofs are the same). Additionally,addq
andmulq
are tuned to minimize the number of integer arithmetic operations when the denominators are equal to one. - notation
[rat x // y]
for displaying the normal form of a rational. We also provide the parsable notation for debugging purposes.
- new lemmas
-
In
binomial.v
: new lemmafact_split
-
In
interval.v
: new lemmassubset_itv
,subset_itv_oo_cc
,subset_itv_oo_oc
,subset_itv_oo_co
,subset_itv_oc_cc
,subset_itv_co_cc
,itvxx
,itvxxP
-
In
perm.v
: new lemmaperm_onV
,porbitV
,porbitsV
-
In
ssrnum.v
, lemmanormr_nneg
, declared aHint Resolve
in thecore
database -
In
ssralg.v
andssrint.v
, the nullary ring notations-%R
,+%R
,*%R
,*:%R
, and*~%R
are now declared infun_scope
. -
across the library, the deprecation mechanism to use has been changed from the
deprecate
notation to thedeprecated
attribute (cf. Removed section). -
in
finalg.v
,finFieldType
now inherits fromcountDecFieldType
. -
fact_smonotone
moved frombinomial.v
tossrnat.v
and renamed toltn_fact
. -
in
presentation.v
fixes the doc wrongly describing the meaning ofG \isog Grp( ... )
-
in
path.v
,sub_(path|cycle|sorted)_in
->sub_in_(path|cycle|sorted)
eq_(path|cycle)_in
->eq_in_(path|cycle)
-
in
order.v
join_(|sup_|min_)seq
->joins_(|sup_|min_)seq
meet_(|sup_|min_)seq
->meets_(|sup_|min_)seq
join_(sup|min)
->joins_(sup|min)
-
in
matrix.v
,card_matrix
->card_mx
-
in
ssralg.v
,prodr_natmul
->prodrMn
-
in
bigop.v
,big_uncond
->big_rmcond
-
in
finset
mem_imset_eq
->mem_imset
mem_imset2_eq
->mem_imset2
-
in
ssreflect.v
, thedeprecate
notation has been deprecated. Use thedeprecated
attribute instead (cf. Changed section). -
in
seq.v
,iota_add
has been deprecated. UseiotaD
instead. -
in
ssrnat.v
andssrnum.v
, deprecation aliases and themc_1_10
compatibility modules introduced in MathComp 1.11+beta1 have been removed. -
in
seq.v
, remove the following deprecation aliases introduced in MathComp 1.9.0:perm_eq_rev
,perm_eq_flatten
,perm_eq_all
,perm_eq_small
,perm_eq_nilP
,perm_eq_consP
,leq_size_perm
,uniq_perm_eq
,perm_eq_iotaP
, andperm_undup_count
. -
in
path.v
, remove the deprecation aliaseseq(_in)_sorted
introduced in MathComp 1.12.0. These names of lemmas are now taken by new lemmas (cf. Added section). -
in
order.v
, remove the deprecation aliaseseq_sorted_(le|lt)
.
- The way
hierarchy.ml
recognizes inheritance has been changed:S1
inherits fromS2
when there is a coercion path fromS1.sort
toS2.sort
and there is a canonical structure instance that unifiesS1.sort
andS2.sort
, regardless of where (which module) these constants are declared. As a result, it recognizes non-forgetful inheritance and checks the uniqueness of join and exhaustiveness of canonical declarations involving it.
This release is compatible with Coq versions 8.10, 8.11, and 8.12.
The contributors to this version are: Anton Trunov, Christian Doczkal, Cyril Cohen, Enrico Tassi, Erik Martin-Dorel, Jasper Hugunin, Kazuhiko Sakaguchi, Laurent Théry, Reynald Affeldt, and Yves Bertot.
-
Contraposition lemmas involving propositions:
- in
ssrbool.v
:contra_not
,contraPnot
,contraTnot
,contraNnot
,contraPT
,contra_notT
,contra_notN
,contraPN
,contraFnot
,contraPF
andcontra_notF
. - in
eqtype.v
:contraPeq
,contra_not_eq
,contraPneq
, andcontra_neq_not
,contra_not_neq
,contra_eq_not
.
- in
-
Contraposition lemmas involving inequalities:
- in
ssrnat.v
:contraTleq
,contraTltn
,contraNleq
,contraNltn
,contraFleq
,contraFltn
,contra_leqT
,contra_ltnT
,contra_leqN
,contra_ltnN
,contra_leqF
,contra_ltnF
,contra_leq
,contra_ltn
,contra_leq_ltn
,contra_ltn_leq
,contraPleq
,contraPltn
,contra_not_leq
,contra_not_ltn
,contra_leq_not
,contra_ltn_not
- in
order.v
:comparable_contraTle
,comparable_contraTlt
,comparable_contraNle
,comparable_contraNlt
,comparable_contraFle
,comparable_contraFlt
,contra_leT
,contra_ltT
,contra_leN
,contra_ltN
,contra_leF
,contra_ltF
,comparable_contra_leq_le
,comparable_contra_leq_lt
,comparable_contra_ltn_le
,comparable_contra_ltn_lt
,contra_le_leq
,contra_le_ltn
,contra_lt_leq
,contra_lt_ltn
,comparable_contra_le
,comparable_contra_le_lt
,comparable_contra_lt_le
,comparable_contra_lt
,contraTle
,contraTlt
,contraNle
,contraNlt
,contraFle
,contraFlt
,contra_leq_le
,contra_leq_lt
,contra_ltn_le
,contra_ltn_lt
,contra_le
,contra_le_lt
,contra_lt_le
,contra_lt
,contra_le_not
,contra_lt_not
,comparable_contraPle
,comparable_contraPlt
,comparable_contra_not_le
,comparable_contra_not_lt
,contraPle
,contraPlt
,contra_not_le
,contra_not_lt
- in
-
in
ssreflect.v
, added intro pattern ltac views for dup, swap, apply:/[apply]
,/[swap]
and/[dup]
. -
in
ssrbool.v
(waiting to be integrated in Coq)- generic lemmas about interaction between
{in _, _}
and{on _, _}
:in_on1P
,in_on1lP
,in_on2P
,on1W_in
,on1lW_in
,on2W_in
,in_on1W
,in_on1lW
,in_on2W
,on1S
,on1lS
,on2S
,on1S_in
,on1lS_in
,on2S_in
,in_on1S
,in_on1lS
,in_on2S
. - lemmas about interaction between
{in _, _}
andsig
:in1_sig
,in2_sig
, andin3_sig
.
- generic lemmas about interaction between
-
in
ssrnat.v
, new lemmas:subn_minl
,subn_maxl
,oddS
,subnA
,addnBn
,addnCAC
,addnACl
,iterM
,iterX
-
in
seq.v
,- new lemmas
take_uniq
,drop_uniq
- new lemma
mkseqP
to abstract a sequences
withmkseq f n
, wheref
andn
are fresh variables. - new high-order relation
allrel r xs ys
which asserts thatr x y
holds wheneverx
is inxs
andy
is inys
, new notationall2rel r xs (:= allrel r xs xs)
which asserts thatr
holds on all pairs of elements ofxs
, and- lemmas
allrel0(l|r)
,allrel_cons(l|r|2)
,allrel1(l|r)
,allrel_cat(l|r)
,allrel_allpairsE
,eq_in_allrel
,eq_allrel
,allrelC
,allrel_map(l|r)
,allrelP
, - new lemmas
all2rel1
,all2rel2
, andall2rel_cons
under assumptions of symmetry ofr
.
- lemmas
- new lemmas
allss
,all_mask
, andall_sigP
.allss
has also been declared as a hint. - new lemmas
index_pivot
,take_pivot
,rev_pivot
,eqseq_pivot2l
,eqseq_pivot2r
,eqseq_pivotl
,eqseq_pivotr
uniq_eqseq_pivotl
,uniq_eqseq_pivotr
,mask_rcons
,rev_mask
,subseq_rev
,subseq_cat2l
,subseq_cat2r
,subseq_rot
, anduniq_subseq_pivot
. - new lemmas
find_ltn
,has_take
,has_take_leq
,index_ltn
,in_take
,in_take_leq
,split_find_nth
,split_find
andnth_rcons_cat_find
. - added
drop_index
,in_mask
,mask0s
,cons_subseq
,undup_subseq
,leq_count_mask
,leq_count_subseq
,count_maskP
,count_subseqP
,count_rem
,count_mem_rem
,rem_cons
,remE
,subseq_rem
,leq_uniq_countP
, andleq_uniq_count
. - new definition
rot_add
and new lemmasrot_minn
,leq_rot_add
,rot_addC
,rot_rot_add
. - new lemmas
perm_catACA
,allpairs0l
,allpairs0r
,allpairs1l
,allpairs1r
,allpairs_cons
,eq_allpairsr
,allpairs_rcons
,perm_allpairs_catr
,perm_allpairs_consr
,mem_allpairs_rconsr
, andallpairs_rconsr
(with the aliasperm_allpairs_rconsr
for the sake of uniformity, but which is already deprecated in favor ofallpairs_rconsr
, cf renamed section).
- new lemmas
-
in
path.v
,- new lemmas
sub_cycle(_in)
,eq_cycle_in
,(path|sorted)_(mask|filter)_in
,rev_cycle
,cycle_map
,(homo|mono)_cycle(_in)
. - new lemma
sort_iota_stable
. - new lemmas
order_path_min_in
,path_sorted_inE
,sorted_(leq|ltn)_nth_in
,subseq_path_in
,subseq_sorted_in
,sorted_(leq|ltn)_index_in
,sorted_uniq_in
,sorted_eq_in
,irr_sorted_eq_in
,sort_sorted_in
,sorted_sort_in
,perm_sort_inP
,all_sort
,sort_stable_in
,filter_sort_in
,(sorted_)mask_sort_in
,(sorted_)subseq_sort_in
, andmem2_sort_in
. - added
size_merge_sort_push
, which documents an invariant ofmerge_sort_push
.
- new lemmas
-
in
fintype.v
,- new lemmas
card_geqP
,card_gt1P
,card_gt2P
,card_le1_eqP
(generalizesfintype_le1P
), - adds lemma
split_ordP
, a variant ofsplitP
which introduces ordinal equalities between the index andlshift
/rshift
, rather than equalities innat
, which in some proofs makes the reasoning easier (cfmatrix.v
), especially together with the new lemmaeq_shift
(which is a multi-rule for new lemmaseq_lshift
,eq_rshift
,eq_lrshift
andeq_rlshift
). - new lemmas
eq_liftF
andlift_eqF
. - new lemmas
disjointFr
,disjointFl
,disjointWr
,disjointW
- new (pigeonhole) lemmas
leq_card_in
,leq_card
, - added
mask_enum_ord
.
- new lemmas
-
in
finset.v
- new lemmas
set_enum
,cards_eqP
,cards2P
- new lemmas
properC
,properCr
,properCl
- new lemmas
mem_imset_eq
,mem_imset2_eq
. These lemmas will lose the_eq
suffix in the next release, when the shortende names will become available (cf. Renamed section) - new lemma
disjoints1
- new lemmas
-
in
order.v
- new lemmas
comparable_bigl
andcomparable_bigr
. - added a factory
distrLatticePOrderMixin
to build adistrLatticeType
from aporderType
. - new notations
0^d
and1^d
for bottom and top elements of dual lattices. - new definition
lteif
and notations<?<=%O
,<?<=^d%O
,_ < _ ?<= if _
, and_ <^d _ ?<= if _
(cf Changed section). - new lemmas
lteifN
,comparable_lteifNE
, andcomparable_lteif_(min|max)(l|r)
.
- new lemmas
-
in
bigop.v
,- new lemma
sig_big_dep
, analogous topair_big_dep
but with an additional dependency in the index typesI
andJ
. - new lemma
reindex_omap
generalizesreindex_onto
to the case where the inverse function toh
is partial (i.e. with codomainoption J
, to cope with a potentially emptyJ
. - new lemma
bigD1_ord
takes out an element in the middle of a\big_(i < n)
and reindexes the remainder usinglift
. - new lemma
big_uncond
. The ideal name isbig_rmcond
but it has just been deprecated from its previous meaning (see Changed section) so as to reuse it in next mathcomp release. - new lemma
big_uncond_in
is a new alias ofbig_rmcond_in
for the sake of uniformity, but it is already deprecated and will be removed two releases from now. - added
big_mask_tuple
andbig_mask
.
- new lemma
-
in
fingraph.v
, new lemmasfcard_gt0P
,fcard_gt1P
-
in
perm.v
, new lemmapermS01
. -
in
ssralg.v
- new lemmas
sumr_const_nat
anditer_addr_0
- new lemmas
iter_addr
,iter_mulr
,iter_mulr_1
, andprodr_const_nat
. - new lemma
raddf_inj
, characterizing injectivity for additive maps. - Lemma
expr_sum
: equivalent for ring ofexpn_sum
- Lemma
prodr_natmul
: generalization ofprodrMn_const
. Its name will becomeprodrMn
in the next release when this name will become available (cf. Renamed section).
- new lemmas
-
in
poly.v
, new lemmacommr_horner
. -
in
polydiv.v
, new lemmadvdpNl
. -
in
matrix.v
,- new definitions
is_diag_mx
andis_trig_mx
characterizing respectively diagonal and lower triangular matrices. We provide the new lemmasrow_diag_mx
,is_diag_mxP
,diag_mxP
,diag_mx_is_diag
,mx0_is_diag
,is_trig_mxP
,is_diag_mx_is_trig
,diag_mx_trig
,mx0_is_trig
,scalar_mx_is_diag
,is_scalar_mx_is_diag
,scalar_mx_is_trig
andis_scalar_mx_is_trig
. - new lemmas
matrix_eq0
,matrix0Pn
,rV0Pn
andcV0Pn
to characterize nonzero matrices and find a nonzero coefficient. - new predicate
mxOver S
qualified with\is a
, and- new lemmas
mxOverP
,mxOverS
,mxOver_const
,mxOver_constE
,thinmxOver
,flatmxOver
,mxOver_scalar
,mxOver_scalarE
,mxOverZ
,mxOverM
,mxOver_diag
,mxOver_diagE
. - new canonical structures:
-
mxOver S
is closed under addition ifS
is. -
mxOver S
is closed under negation ifS
is. -
mxOver S
is a sub Z-module ifS
is. -
mxOver S
is a semiring for square matrices ifS
is. -
mxOver S
is a subring for square matrices ifS
is.
-
- new lemmas
- new lemmas about
map_mx
:map_mx_id
,map_mx_comp
,eq_in_map_mx
,eq_map_mx
andmap_mx_id_in
. - new lemmas
row_usubmx
,row_dsubmx
,col_lsubmx
, andcol_rsubmx
. - new lemma
mul_rVP
. - new inductions lemmas:
row_ind
,col_ind
,mx_ind
,sqmx_ind
,ringmx_ind
,trigmx_ind
,trigsqmx_ind
,diagmx_ind
,diagsqmx_ind
. - added missing lemma
trmx_eq0
,det_mx11
. - new lemmas about diagonal and triangular matrices:
mx11_is_diag
,mx11_is_trig
,diag_mx_row
,is_diag_mxEtrig
,is_diag_trmx
,ursubmx_trig
,dlsubmx_diag
,ulsubmx_trig
,drsubmx_trig
,ulsubmx_diag
,drsubmx_diag
,is_trig_block_mx
,is_diag_block_mx
, anddet_trig
. - new definition
mxsub
,rowsub
andcolsub
, corresponding to arbitrary submatrices/reindexation of a matrix.- we provide the theorems
x?(row|col)(_perm|')?Esub
,t?permEsub
[lrud]submxEsub
,(ul|ur|dl|dr)submxEsub
for compatibility with ad-hoc submatrices/permutations. - we provide a new, configurable, induction lemma
mxsub_ind
. - we provide the basic theory
mxsub_id
,eq_mxsub
,eq_rowsub
,eq_colsub
,mxsub_eq_id
,mxsub_eq_colsub
,mxsub_eq_rowsub
,mxsub_ffunl
,mxsub_ffunr
,mxsub_ffun
,mxsub_const
,mxsub_comp
,rowsub_comp
,colsub_comp
,mxsubrc
,mxsubcr
,trmx_mxsub
,row_mxsub
,col_mxsub
,row_rowsub
,col_colsub
, andmap_mxsub
,pid_mxErow
andpid_mxEcol
. - interaction with
castmx
through lemmasrowsub_cast
,colsub_cast
,mxsub_cast
, andcastmxEsub
. -
(mx|row|col)sub
are canonically additive and linear. - interaction with
mulmx
through lemmasmxsub_mul
,mul_rowsub_mx
,mulmx_colsub
, androwsubE
.
- we provide the theorems
- added
comm_mx
andcomm_mxb
the propositional and boolean versions of matrix commutation,comm_mx A B
is definitionally equal toGRing.comm A B
whenA B : 'M_n.+1
, this is witnessed by the lemmacomm_mxE
. New notationall_comm_mx
stands forallrel comm_mxb
. New lemmascomm_mx_sym
,comm_mx_refl
,comm_mx0
,comm0mx
,comm_mx1
,comm1mx
,comm_mxN
,comm_mxN1
,comm_mxD
,comm_mxB
,comm_mx_sum
,comm_mxP
,all_comm_mxP
,all_comm_mx1
,all_comm_mx2P
,all_comm_mx_cons
,comm_mx_scalar
, andcomm_scalar_mx
. The common arguments of these lemmasR
andn
are maximal implicits.
- new definitions
-
in
mxalgebra.v
,- completed the theory of
pinvmx
in corner cases, using lemmasmulmxVp
,mulmxKp
,pinvmxE
,mulVpmx
,pinvmx_free
, andpinvmx_full
. - new lemmas
row_base0
,sub_kermx
,kermx0
andmulmx_free_eq0
. - new lemma
sub_sums_genmxP
(generalizessub_sumsmxP
). - new lemma
rowsub_sub
,eq_row_full
,row_full_castmx
,row_free_castmx
,rowsub_comp_sub
,submx_rowsub
,eqmx_rowsub_comp_perm
,eqmx_rowsub_comp
,eqmx_rowsub
,row_freePn
, andnegb_row_free
. - new lemma
row_free_injr
which duplicatesrow_free_inj
but exposingmulmxr
for compositionality purposes (e.g. withraddf_eq0
), and lemmainj_row_free
characterizingrow_free
matricesA
throughv *m A = 0 -> v = 0
for allv
. - new notation
stablemx V f
asserting thatf
stabilizesV
, with new theorems:eigenvectorP
,eqmx_stable
,stablemx_row_base
,stablemx_full
,stablemxM
,stablemxD
,stablemxN
,stablemxC
,stablemx0
,stableDmx
,stableNmx
,stable0mx
,stableCmx
,stablemx_sums
, andstablemx_unit
. - added
comm_mx_stable
,comm_mx_stable_ker
, andcomm_mx_stable_eigenspace
. - new definitions
maxrankfun
,fullrankfun
which are "subset function" to be plugged inrowsub
, with lemmas:maxrowsub_free
,eq_maxrowsub
,maxrankfun_inj
,maxrowsub_full
,fullrowsub_full
,fullrowsub_unit
,fullrowsub_free
,mxrank_fullrowsub
,eq_fullrowsub
, andfullrankfun_inj
.
- completed the theory of
-
in
mxpoly.v
,- new lemmas
mxminpoly_minP
anddvd_mxminpoly
. - new lemmas
horner_mx_diag
andchar_poly_trig
,root_mxminpoly
, andmxminpoly_diag
- new definitions
kermxpoly g p
(the kernel of polynomial $p(g)$).- new elementary theorems:
kermxpolyC
,kermxpoly1
,kermxpolyX
,kermxpoly_min
- kernel lemmas:
mxdirect_kermxpoly
,kermxpolyM
,kermxpoly_prod
, andmxdirect_sum_kermx
- correspondance between
eigenspace
andkermxpoly
:eigenspace_poly
- new elementary theorems:
- generalized eigenspace
geigenspace
and a generalization of eigenvalues calledeigenpoly g
(i.e. polynomials such thatkermxpoly g p
is nonzero, e.g. eigen polynomials of degree 1 are of the form'X - a%:P
wherea
are eigenvalues), and- correspondance with
kermx
:geigenspaceE
, - application of kernel lemmas
mxdirect_sum_geigenspace
, - new lemmas:
eigenpolyP
,eigenvalue_poly
,eigenspace_sub_geigen
,
- correspondance with
- new
map_mx
lemmas:map_kermxpoly
,map_geigenspace
,eigenpoly_map
. - new lemma
horner_mx_stable
. - added
comm_mx_horner
,comm_horner_mx
,comm_horner_mx2
,horner_mx_stable
,comm_mx_stable_kermxpoly
, andcomm_mx_stable_geigenspace
.
- new lemmas
-
in
ssrnum.v
,- new lemma
ler_sum_nat
- new lemmas
big_real
,sum_real
,prod_real
,max_real
,min_real
,bigmax_real
, andbigmin_real
. - new lemma
real_lteif_distl
.
- new lemma
-
in
interval.v
,- intervals and their bounds of
T
now have canonical ordered type instances whose ordering relations are the subset relation and the left to right ordering respectively. They form partially ordered types ifT
is aporderType
. IfT
is alatticeType
, they also formtbLatticeType
where the join and meet are intersection and convex hull respectively. IfT
is anorderType
, they are distributive, and the interval bounds are totally ordered. (cf Changed section) - new lemmas
bound_ltxx
,subitvE
,in_itv
,itv_ge
,in_itvI
,itv_total_meet3E
, anditv_total_join3E
.
- intervals and their bounds of
-
in
ssrbool.v
, useReserved Notation
for[rel _ _ : _ | _]
to avoid warnings with coq-8.12 -
in
seq.v
,mask
will only expand if both arguments are constructors, the casemask [::] s
can be dealt with usingmask0s
or explicit conversion. -
in
path.v
,- generalized lemmas
sub_path_in
,sub_sorted_in
, andeq_path_in
for non-eqType
s. - generalized lemmas
sorted_ltn_nth
andsorted_leq_nth
(formerlysorted_lt_nth
andsorted_le_nth
, cf Renamed section) for non-eqType
s.
- generalized lemmas
-
in
fintype.v
,- added lemma
ord1
, it is the same aszmodp.ord1
, exceptfintype.ord1
does not rely on'I_n
zmodType structure. - rename
disjoint_trans
todisjointWl
- lemmas
inj_card_onto
andinj_card_bij
take a weaker hypothesis (i.e.#|T| >= #|T'|
instead of#|T| = #|T'|
thanks toleq_card
under injectivity assumption).
- added lemma
-
in
finset.v
, fixed printing of notation[set E | x in A , y in B & P ]
-
in
bigop.v
, lemmabig_rmcond
is deprecated and has been renamedbig_rmcomd_in
(and aliasedbig_uncond_in
, see Added). The variant which does not require aneqType
is currently namedbig_uncond
(cf Added) but it will be renamedbig_mkcond
in the next release. -
in
ssrAC.v
, fixnon-reversible-notation
warnings -
in
order.v
,- in the definition of structures, displays are removed from
parameters of mixins and fields of classes internally and now only
appear in parameters of structures. Consequently, each mixin is
now parameterized by a class rather than a structure, and the
corresponding factory parameterized by a structure is provided to
replace the use of the mixin. These factories have the same names
as in the mixins before this change except that
bLatticeMixin
andtbLatticeMixin
have been renamed tobottomMixin
andtopMixin
respectively. - the
dual_*
notations such asdual_le
are now qualified with theOrder
module. \join^d_
and\meet^d_
notations are now properly specialized fordual_display
.- rephrased
comparable_(min|max)[rl]
in terms of{in _, forall x y, _}
, hence reordering the arguments. Made them hints for smoother combination withcomparable_big[lr]
. >=< y
now stands for[pred x | x >=< y]
>< y
now stands for[pred x | x >< y]
- and the same holds for the dual
>=<^d
,><^d
, the product>=<^p
,><^p
, and lexicographic>=<^l
,><^l
. The previous meanings can be obtained through>=<%O x
and><%O x
. - generalized
sort_le_id
for anyporderType
. - the names of lemmas
join_idPl
andjoin_idPr
are transposed to follow the naming convention.
- in the definition of structures, displays are removed from
parameters of mixins and fields of classes internally and now only
appear in parameters of structures. Consequently, each mixin is
now parameterized by a class rather than a structure, and the
corresponding factory parameterized by a structure is provided to
replace the use of the mixin. These factories have the same names
as in the mixins before this change except that
-
In
ssrnum.v
,>=< y
now stands for[pred x | x >=< y]
- fixed notations
@minr
and@maxr
to pointOrder.min
andOrder.max
respectively.
-
in
ssrint.v
, generalizedmulpz
for anyringType
. -
in
interval.v
:x <= y ?< if c
(lersif
) has been generalized toporderType
, relocated toorder.v
, and replaced withx < y ?<= if c'
(lteif
) wherec'
is negation ofc
.- Many definitions and lemmas on intervals such as the membership test are generalized from numeric domains to ordered types.
- Interval bounds
itv_bound : Type -> Type
are redefined with two constructorsBSide : bool -> T -> itv_bound T
andBInfty : bool -> itv_bound T
. New notationsBLeft
andBRight
are aliases forBSide true
andBSide false
respectively.BInfty false
andBInfty true
respectively means positive and negative infinity.BLeft x
andBRight x
respectively mean close and open bounds as left bounds, and they respectively mean open and close bounds as right bounds. This change gives us the canonical "left to right" ordering of interval bounds. - Lemmas
mid_in_itv(|oo|cc)
have been generalized fromrealFieldType
tonumFieldType
.
-
In
matrix.v
, generalizeddiag_mx_comm
andscalar_mx_comm
to alln
, instead ofn'.+1
, thanks tocommmmx
.
-
in
ssrnat.v
iter_add
->iterD
maxn_mul(l|r)
->maxnM(l|r)
minn_mul(l|r)
->minnM(l|r)
odd_(opp|mul|exp)
->odd(N|M|X)
sqrn_sub
->sqrnB
-
in
div.v
coprime_mul(l|r)
->coprimeM(l|r)
coprime_exp(l|r)
->coprimeX(l|r)
-
in
prime.v
primes_(mul|exp)
->primes(M|X)
pnat_(mul|exp)
->pnat(M|X)
-
in
seq.v
,iota_add(|l)
->iotaD(|l)
allpairs_(cons|cat)r
->mem_allpairs_(cons|cat)r
(allpairs_consr
andallpairs_catr
are now deprecated alias, and will be attributed to the newperm_allpairs_catr
).
-
in
path.v
,eq_sorted(_irr)
->(irr_)sorted_eq
sorted_(lt|le)_nth
->sorted_(ltn|leq)_nth
(ltn|leq)_index
->sorted_(ltn|leq)_index
subseq_order_path
->subseq_path
-
in
fintype.v
bump_addl
->bumpDl
unbump_addl
->unbumpDl
-
in
finset.v
,mem_imset
->imset_f
(with deprecation alias, cf. Added section)mem_imset2
->imset2_f
(with deprecation alias, cf. Added section)
-
in
bigop.v
big_rmcond
->big_rmcond_in
(cf Changed section)mulm_add(l|r)
->mulmD(l|r)
-
in
order.v
,eq_sorted_(le|lt)
->(le|lt)_sorted_eq
-
in
interval.v
, we deprecate, rename, and relocate toorder.v
the following:lersif_(trans|anti)
->lteif_(trans|anti)
lersif(xx|NF|S|T|F|W)
->lteif(xx|NF|S|T|F|W)
lersif_(andb|orb|imply)
->lteif_(andb|orb|imply)
ltrW_lersif
->ltrW_lteif
lersifN
->lteifNE
lersif_(min|max)(l|r)
->lteif_(min|max)(l|r)
-
in
interval.v
, we deprecate, rename, and relocate tossrnum.v
the following:subr_lersif(r0|0r|0)
->subr_lteif(r0|0r|0)
lersif01
->lteif01
lersif_(oppl|oppr|0oppr|oppr0|opp2|oppE)
->lteif_(oppl|oppr|0oppr|oppr0|opp2|oppE)
lersif_add2(|l|r)
->lteif_add2(|l|r)
lersif_sub(l|r)_add(l|r)
->lteif_sub(l|r)_add(l|r)
lersif_sub_add(l|r)
->lteif_sub_add(l|r)
lersif_(p|n)mul2(l|r)
->lteif_(p|n)mul2(l|r)
real_lersifN
->real_lteifNE
real_lersif_norm(l|r)
->real_lteif_norm(l|r)
lersif_nnormr
->lteif_nnormr
lersif_norm(l|r)
->lteif_norm(l|r)
lersif_distl
->lteif_distl
lersif_(p|n)div(l|r)_mul(l|r)
->lteif_(p|n)div(l|r)_mul(l|r)
-
in
interval.v
, we deprecate and replace the following:lersif_in_itv
->lteif_in_itv
itv_gte
->itv_ge
l(t|e)r_in_itv
->lt_in_itv
-
in
ssralg.v
,prodrMn
->prodrMn_const
(with deprecation alias, cf. Added section) -
in
ssrint.v
,polyC_mulrz
->polyCMz
-
in
poly.v
polyC_(add|opp|sub|muln|mul|inv)
->polyC(D|N|B|Mn|M|V)
lead_coef_opp
->lead_coefN
derivn_sub
->derivnB
-
in
polydiv.v
rdivp_add(l|r)
->rdivpD(l|r)
rmodp_add
->rmodpD
dvdp_scale(l|r)
->dvdpZ(l|r)
dvdp_opp
->dvdpNl
coprimep_scale(l|r)
->coprimepZ(l|r)
coprimep_mul(l|r)
->coprimepM(l|r)
modp_scale(l|r)
->modpZ(l|r)
modp_(opp|add|scalel|scaler)
->modp(N|D|Zl|Zr)
divp_(opp|add|scalel|scaler)
->divp(N|D|Zl|Zr)
-
in
matrix.v
,map_mx_sub
->map_mxB
-
in
mxalgebra.v
,mulsmx_add(l|r)
->mulsmxD(l|r)
-
in
vector.v
,limg_add
->limgD
-
in
intdiv.v
coprimez_mul(l|r)
->coprimezM(l|r)
coprimez_exp(l|r)
->coprimezX(l|r)
-
in
ssrnat.v
, we remove the compatibility modulemc_1_9
. -
in
interval.v
, we remove the following:le_bound(l|r)
(useOrder.le
instead)le_bound(l|r)_refl
(uselexx
instead)le_bound(l|r)_anti
(useeq_le
instead)le_bound(l|r)_trans
(usele_trans
instead)le_bound(l|r)_bb
(usebound_lexx
instead)le_bound(l|r)_total
(usele_total
instead)
-
in
interval.v
, we deprecate the following:itv_intersection
(useOrder.meet
instead)itv_intersection1i
(usemeet1x
instead)itv_intersectioni1
(usemeetx1
instead)itv_intersectionii
(usemeetxx
instead)itv_intersectionC
(usemeetC
instead)itv_intersectionA
(usemeetA
instead)
-
in
mxpoly.v
, we deprecatescalar_mx_comm
, and advise to usecomm_mxC
instead (with maximal implicit argumentsR
andn
).
-
in all the hierarchies (in
eqtype.v
,choice.v
,order.v
,ssralg.v
,...), theclass_of
records of structures are turned into primitive records to prevent prevent potential issues of ambiguous paths and convertibility of structure instances. -
across the library, the following constants have been tuned to only reduce when they do not expose a match:
subn_rec
,decode_rec
,nth
(thus avoiding a notorious problem ofp`_0
expanding too eagerly),set_nth
,take
,drop
,eqseq
,incr_nth
,elogn2
,binomial_rec
,sumpT
.
This release is compatible with Coq versions 8.7, 8.8, 8.9, 8.10, and 8.11.
The contributors to this version are: Antonio Nikishaev, Anton Trunov, Assia Mahboubi, Christian Doczkal, Cyril Cohen, Enrico Tassi, Erik Martin-Dorel, Florent Hivert, Kazuhiko Sakaguchi, Pierre-Marie Pédrot, Pierre-Yves Strub, Reynald Affeldt, Simon Boulier, Yves Bertot.
-
Added lemmas about monotony of functions
nat -> T
whereT
is an ordered type:homo_ltn_lt_in
,incn_inP
,nondecn_inP
,nhomo_ltn_lt_in
,decn_inP
,nonincn_inP
,homo_ltn_lt
,incnP
,nondecnP
,nhomo_ltn_lt
,decnP
,nonincnP
in fileorder.v
. -
Added lemmas for swaping arguments of homomorphisms and monomorphisms:
homo_sym
,mono_sym
,homo_sym_in
,mono_sym_in
,homo_sym_in11
,mono_sym_in11
inssrbool.v
-
in
ssrnum.v
, new lemmas:(real_)ltr_normlW
,(real_)ltrNnormlW
,(real_)ler_normlW
,(real_)lerNnormlW
(real_)ltr_distl_addr
,(real_)ler_distl_addr
,(real_)ltr_distlC_addr
,(real_)ler_distlC_addr
,(real_)ltr_distl_subl
,(real_)ler_distl_subl
,(real_)ltr_distlC_subl
,(real_)ler_distlC_subl
-
in
order.v
, definingmin
andmax
independently frommeet
andjoin
, and providing a theory about for min and max, hence generalizing the theory ofNum.min
andNum.max
from versions <=1.10
, instead of specializing to total order as in1.11+beta1
:Definition min (T : porderType) (x y : T) := if x < y then x else y. Definition max (T : porderType) (x y : T) := if x < y then y else x.
- Lemmas:
min_l
,min_r
,max_l
,max_r
,minxx
,maxxx
,eq_minl
,eq_maxr
,min_idPl
,max_idPr
,min_minxK
,min_minKx
,max_maxxK
,max_maxKx
,comparable_minl
,comparable_minr
,comparable_maxl
, andcomparable_maxr
- Lemmas about interaction with lattice operations:
meetEtotal
,joinEtotal
, - Lemmas under condition of pairwise comparability of a (sub)set of their arguments:
comparable_minC
,comparable_maxC
,comparable_eq_minr
,comparable_eq_maxl
,comparable_le_minr
,comparable_le_minl
,comparable_min_idPr
,comparable_max_idPl
,comparableP
,comparable_lt_minr
,comparable_lt_minl
,comparable_le_maxr
,comparable_le_maxl
,comparable_lt_maxr
,comparable_lt_maxl
,comparable_minxK
,comparable_minKx
,comparable_maxxK
,comparable_maxKx
,comparable_minA
,comparable_maxA
,comparable_max_minl
,comparable_min_maxl
,comparable_minAC
,comparable_maxAC
,comparable_minCA
,comparable_maxCA
,comparable_minACA
,comparable_maxACA
,comparable_max_minr
,comparable_min_maxr
- and the same but in a total order:
minC
,maxC
,minA
,maxA
,minAC
,maxAC
,minCA
,maxCA
,minACA
,maxACA
,eq_minr
,eq_maxl
,min_idPr
,max_idPl
,le_minr
,le_minl
,lt_minr
,lt_minl
,le_maxr
,le_maxl
,lt_maxr
,lt_maxl
,minxK
,minKx
,maxxK
,maxKx
,max_minl
,min_maxl
,max_minr
,min_maxr
- Lemmas:
-
in
ssrnum.v
, theory aboutmin
andmax
extended tonumDomainType
:- Lemmas:
real_oppr_max
,real_oppr_min
,real_addr_minl
,real_addr_minr
,real_addr_maxl
,real_addr_maxr
,minr_pmulr
,maxr_pmulr
,real_maxr_nmulr
,real_minr_nmulr
,minr_pmull
,maxr_pmull
,real_minr_nmull
,real_maxr_nmull
,real_maxrN
,real_maxNr
,real_minrN
,real_minNr
- Lemmas:
-
the compatibility module
ssrnum.mc_1_10
was extended to support definitional compatibility withmin
andmax
which had been lost in1.11+beta1
for most instances. -
in
fintype.v
, new lemmas:seq_sub_default
,seq_subE
-
in
order.v
, new "unfolding" lemmas:minEnat
andmaxEnat
-
in
ssrbool.v
- lemmas about the
cancel
predicate and{in _, _}
/{on _, _}
notations:onW_can
,onW_can_in
,in_onW_can
,onS_can
,onS_can_in
,in_onS_can
- lemmas about the
cancel
predicate and injective functions:inj_can_sym_in_on
,inj_can_sym_on
,inj_can_sym_in
- lemmas about the
-
in
order.v
,le_xor_gt
,lt_xor_ge
,compare
,incompare
,lel_xor_gt
,ltl_xor_ge
,comparel
,incomparel
have more parameters, so that the the following now deal withmin
andmax
comparable_ltgtP
,comparable_leP
,comparable_ltP
,comparableP
lcomparableP
,lcomparable_ltgtP
,lcomparable_leP
,lcomparable_ltP
,ltgtP
-
in
order.v
:[arg min_(i < i0 | P) M]
now forporderType
(was fororderType
)[arg max_(i < i0 | P) M]
now forporderType
(was fororderType
)- added
comparable_arg_minP
,comparable_arg_maxP
,real_arg_minP
,real_arg_maxP
, in order to take advantage of the former generalizations.
-
in
ssrnum.v
,maxr
is a notation for(@Order.max ring_display _)
(wasOrder.join
) (resp.minr
is a notation for(@Order.min ring_display _)
) -
in
ssrnum.v
,ler_xor_gt
,ltr_xor_ge
,comparer
,ger0_xor_lt0
,ler0_xor_gt0
,comparer0
have now more parameters, so that the following now deal with min and max:real_leP
,real_ltP x y
,real_ltgtP
,real_ge0P
,real_le0P
,real_ltgt0P
lerP
,ltrP
,ltrgtP
,ger0P
,ler0P
,ltrgt0P
-
in
ssrnum.v
, the following have been restated (which were formerly derived fromorder.v
and stated with specializations of themeet
andjoin
operators):minrC
,minrr
,minr_l
,minr_r
,maxrC
,maxrr
,maxr_l
,maxr_r
,minrA
,minrCA
,minrAC
,maxrA
,maxrCA
,maxrAC
eqr_minl
,eqr_minr
,eqr_maxl
,eqr_maxr
,ler_minr
,ler_minl
,ler_maxr
,ler_maxl
,ltr_minr
,ltr_minl
,ltr_maxr
,ltr_maxl
minrK
,minKr
,maxr_minl
,maxr_minr
,minr_maxl
,minr_maxr
-
The new definitions of
min
andmax
may require the following rewrite rules changes when dealing withmax
andmin
instead ofmeet
andjoin
:ltexI
->(le_minr,lt_minr)
lteIx
->(le_minl,lt_minl)
ltexU
->(le_maxr,lt_maxr)
lteUx
->(le_maxl,lt_maxl)
lexU
->le_maxr
ltxU
->lt_maxr
lexU
->le_maxr
-
in
ssrbool.v
- lemmas about monotone functions and the
{in _, _}
notation:homoRL_in
,homoLR_in
,homo_mono_in
,monoLR_in
,monoRL_in
,can_mono_in
- lemmas about monotone functions and the
-
in
fintype
we deprecate and rename the following:arg_minP
->arg_minnP
arg_maxP
->arg_maxnP
-
in
order.v
, in moduleNatOrder
, renamings:meetEnat
->minEnat
,joinEnat
->maxEnat
,meetEnat
->minEnat
,joinEnat
->maxEnat
- in
order.v
, removedtotal_display
(was used to provide the notationmax
forjoin
andmin
formeet
). - in
order.v
, removedminnE
andmaxnE
- in
order.v
,- removed
meetEnat
(in favor ofmeetEtotal
followed byminEnat
) - removed
joinEnat
(in favor ofjoinEtotal
followed bymaxEnat
)
- removed
This release is compatible with Coq versions 8.7, 8.8, 8.9 and 8.10.
The contributors to this version are: Antonio Nikishaev, Anton Trunov, Assia Mahboubi, Cyril Cohen, Enrico Tassi, Erik Martin-Dorel, Florent Hivert, Kazuhiko Sakaguchi, Pierre-Marie Pédrot, Pierre-Yves Strub, Reynald Affeldt, Simon Boulier, Yves Bertot.
-
Arithmetic theorems in ssrnat, div and prime about
logn
,coprime
,gcd
,lcm
andpartn
:logn_coprime
,logn_gcd
,logn_lcm
,eq_partn_from_log
andeqn_from_log
. -
Lemmas
ltnNleqif
,eq_leqif
,eqTleqif
inssrnat
-
Lemmas
eqEtupe
,tnthS
andtnth_nseq
intuple
-
Ported
order.v
from the finmap library, which provides structures of ordered sets (porderType
,latticeType
,distrLatticeType
,orderType
, etc.) and its theory. -
Lemmas
path_map
,eq_path_in
,sub_path_in
,path_sortedE
,sub_sorted
andsub_sorted_in
inpath
(and refactored related proofs) -
Added lemmas
hasNfind
,memNindex
andfindP
inseq
-
Added lemmas
foldr_rcons
,foldl_rcons
,scanl_rcons
andnth_cons_scanl
inseq
-
ssrAC tactics, see header of
ssreflect/ssrAC.v
for documentation of(AC patternshape reordering)
,(ACl reordering)
(ACof reordering reordering)
,op.[AC patternshape reordering]
,op.[ACl reordering]
andop.[ACof reordering reordering]
. -
Added definition
cast_perm
with a group morphism canonical structure, and lemmaspermX_fix
,imset_perm1
,permS0
,permS1
,cast_perm_id
,cast_ord_permE
,cast_permE
,cast_perm_comp
,cast_permK
,cast_permKV
,cast_perm_inj
,cast_perm_sym
,cast_perm_morphM
, andisom_cast_perm
inperm
andrestr_perm_commute
inaction
. -
Added
card_porbit_neq0
,porbitP
, andporbitPmin
inperm
-
Added definition
Sym
with a group set canonical structure and lemmascard_Sn
andcard_Sym
inperm
andSymE
inaction
-
Reorganized the algebraic hierarchy and the theory of
ssrnum.v
.numDomainType
andrealDomainType
get inheritances respectively fromporderType
andorderType
.normedZmodType
is a new structure fornumDomainType
indexed normed additive abelian groups.[arg minr_( i < n | P ) F]
and[arg maxr_( i < n | P ) F]
notations are removed. Now[arg min_( i < n | P ) F]
and[arg max_( i < n | P ) F]
notations are defined innat_scope
(specialized fornat
),order_scope
(general one), andring_scope
(specialized forring_display
). Lemmafintype.arg_minP
is aliased toarg_minnP
and the same forarg_maxnP
.- The following lemmas are generalized, renamed, and relocated to
order.v
:-
ltr_def
->lt_def
-
(ger|gtr)E
->(ge|gt)E
-
(le|lt|lte)rr
->(le|lt|lte)xx
-
ltrW
->ltW
-
ltr_neqAle
->lt_neqAle
-
ler_eqVlt
->le_eqVlt
-
(gtr|ltr)_eqF
->(gt|lt)_eqF
-
ler_anti
,ler_asym
->le_anti
-
eqr_le
->eq_le
-
(ltr|ler_lt|ltr_le|ler)_trans
->(lt|le_lt|lt_le|le)_trans
-
lerifP
->leifP
-
(ltr|ltr_le|ler_lt)_asym
->(lt|lt_le|le_lt)_asym
-
lter_anti
->lte_anti
-
ltr_geF
->lt_geF
-
ler_gtF
->le_gtF
-
ltr_gtF
->lt_gtF
-
lt(r|nr|rn)W_(n)homo(_in)
->ltW_(n)homo(_in)
-
inj_(n)homo_lt(r|nr|rn)(_in)
->inj_(n)homo_lt(_in)
-
(inc|dec)(r|nr|rn)_inj(_in)
->(inc_dec)_inj(_in)
-
le(r|nr|rn)W_(n)mono(_in)
->leW_(n)mono(_in)
-
lenr_(n)mono(_in)
->le_(n)mono(_in)
-
lerif_(refl|trans|le|eq)
->leif_(refl|trans|le|eq)
-
(ger|ltr)_lerif
->(ge|lt)_leif
-
(n)mono(_in)_lerif
->(n)mono(_in)_leif
-
(ler|ltr)_total
->(le|lt)_total
-
wlog_(ler|ltr)
->wlog_(le|lt)
-
ltrNge
->ltNge
-
lerNgt
->leNgt
-
neqr_lt
->neq_lt
-
eqr_(le|lt)(LR|RL)
->eq_(le|lt)(LR|RL)
-
eqr_(min|max)(l|r)
->eq_(meet|join)(l|r)
-
ler_minr
->lexI
-
ler_minl
->leIx
-
ler_maxr
->lexU
-
ler_maxl
->leUx
-
lt(e)r_min(r|l)
->lt(e)(xI|Ix)
-
lt(e)r_max(r|l)
->lt(e)(xU|Ux)
-
minrK
->meetUKC
-
minKr
->joinKIC
-
maxr_min(l|r)
->joinI(l|r)
-
minr_max(l|r)
->meetU(l|r)
-
minrP
,maxrP
->leP
,ltP
Replacing
minrP
andmaxrP
withleP
andltP
may require to provide some arguments explicitly. The former ones respectively try to match withminr
andmaxr
first but the latter ones try that in the order of<
,<=
,maxr
, andminr
. -
(minr|maxr)(r|C|A|CA|AC)
->(meet|join)(xx|C|A|CA|AC)
-
minr_(l|r)
->meet_(l|r)
-
maxr_(l|r)
->join_(l|r)
-
arg_minrP
->arg_minP
-
arg_maxrP
->arg_maxP
-
- Generalized the following lemmas as properties of
normedDomainType
:normr0
,normr0P
,normr_eq0
,distrC
,normr_id
,normr_ge0
,normr_le0
,normr_lt0
,normr_gt0
,normrE
,normr_real
,ler_norm_sum
,ler_norm_sub
,ler_dist_add
,ler_sub_norm_add
,ler_sub_dist
,ler_dist_dist
,ler_dist_norm_add
,ler_nnorml
,ltr_nnorml
,lter_nnormr
. - The compatibility layer for the version 1.10 is provided as the
ssrnum.mc_1_10
module. One may compile proofs compatible with the version 1.10 in newer versions by using themc_1_10.Num
module instead of theNum
module. However, instances of the number structures may require changes.
-
Extended comparison predicates
leqP
,ltnP
, andltngtP
in ssrnat to allow case analysis onminn
andmaxn
.- The compatibility layer for the version 1.10 is provided as the
ssrnat.mc_1_10
module. One may compile proofs compatible with the version 1.10 in newer versions by using this module.
- The compatibility layer for the version 1.10 is provided as the
-
The definition of
all2
was slightly altered for a better interaction with the guard condition (#469)
real_lerP
->real_leP
real_ltrP
->real_ltP
real_ltrNge
->real_ltNge
real_lerNgt
->real_leNgt
real_ltrgtP
->real_ltgtP
real_ger0P
->real_ge0P
real_ltrgt0P
->real_ltgt0P
lerif_nat
->leif_nat_r
- Replaced
lerif
withleif
in the following names of lemmas:lerif_subLR
,lerif_subRL
,lerif_add
,lerif_sum
,lerif_0_sum
,real_lerif_norm
,lerif_pmul
,lerif_nmul
,lerif_pprod
,real_lerif_mean_square_scaled
,real_lerif_AGM2_scaled
,lerif_AGM_scaled
,real_lerif_mean_square
,real_lerif_AGM2
,lerif_AGM
,relif_mean_square_scaled
,lerif_AGM2_scaled
,lerif_mean_square
,lerif_AGM2
,lerif_normC_Re_Creal
,lerif_Re_Creal
,lerif_rootC_AGM
.
- The following naming inconsistencies have been fixed in
ssrnat.v
:homo_inj_lt(_in)
->inj_homo_ltn(_in)
(inc|dec)r_inj(_in)
->(inc|dec)n_inj(_in)
- switching long suffixes to short suffixes
odd_add
->oddD
odd_sub
->oddB
take_addn
->takeD
rot_addn
->rotD
nseq_addn
->nseqD
- Replaced
cycle
byorbit
inperm/action
:pcycle
->porbit
pcycles
->porbits
pcycleE
->porbitE
pcycle_actperm
->porbit_actperm
mem_pcycle
->mem_porbit
pcycle_id
->porbit_id
uniq_traject_pcycle
->uniq_traject_porbit
pcycle_traject
->porbit_traject
iter_pcycle
->iter_porbit
eq_pcycle_mem
->eq_porbit_mem
pcycle_sym
->porbit_sym
pcycle_perm
->porbit_perm
ncycles_mul_tperm
->porbits_mul_tperm
The following were deprecated since release 1.9.0
tuple_perm_eqP
(usetuple_permP
instead, fromperm.v
)eq_big_perm
(useperm_big
instead, frombigop.v
)perm_eqP
(usepermP
instead, from seq.v)perm_eqlP
(usepermPl
instead)perm_eqrP
(usepermPr
instead)perm_eqlE
(usepermEl
instead)perm_eq_refl
(useperm_refl
instead)perm_eq_sym
(useperm_sym
instead)perm_eq_trans
(useperm_trans
instead)perm_eq_size
(useperm_size
instead)perm_eq_mem
(useperm_mem
instead)perm_eq_uniq
(useperm_uniq
instead)
This release is compatible with Coq versions 8.9 and 8.10.
The contributors to this version are: Antonio Nikishaev, Anton Trunov, Arthur Azevedo de Amorim, Christian Doczkal, Cyril Cohen, Enrico Tassi, Erik Martin-Dorel, Florent Hivert, Gabriel Taumaturgo, Georges Gonthier, Kazuhiko Sakaguchi, Laurent Théry, Maxime Dénès, Reynald Affeldt, and Yves Bertot.
-
Added a
void
notation for theEmpty_set
type of the standard library, the canonical injectionof_void
and its cancellation lemmaof_voidK
, andeq
,choice
,count
andfin
instances. -
Added
ltn_ind
general induction principle fornat
variables, helper lemmasubnP
,ltnSE
, ubnPleq, ubnPgeq and ubnPeq, in support of a generalized induction idiom fornat
measures that does not rely on the{-2}
numerical occurrence selector, and purged this idiom from themathcomp
library (see below). -
Added fixpoint and cofixpoint constructions to
finset
:fixset
,cofixset
andfix_order
, with a few theorems about them -
Added functions
tuple_of_finfun
,finfun_of_tuple
, and their "cancellation" lemmas. -
Added theorems
totient_prime
andEuclid_dvd_prod
inprime.v
-
Added theorems
ffact_prod
,prime_modn_expSn
andfermat_little
inbinomial.v
-
Added theorems
flatten_map1
,allpairs_consr
,mask_filter
,all_filter
,all_pmap
, andall_allpairsP
inseq.v
. -
Added theorems
nth_rcons_default
,undup_rcons
,undup_cat
andundup_flatten_nseq
inseq.v
-
Fintype theorems:
fintype0
,card_le1P
,mem_card1
,card1P
,fintype_le1P
,fintype1
,fintype1P
,existsPn
,exists_inPn
,forallPn
,forall_inPn
,eq_enum_rank_in
,enum_rank_in_inj
,lshift_inj
, andrshift_inj
. -
Bigop theorems:
index_enum_uniq
,big_rmcond
,bigD1_seq
,big_enum_val_cond
,big_enum_rank_cond
,big_enum_val
,big_enum_rank
,big_set
,big_enumP
,big_enum_cond
,big_enum
-
Arithmetic theorems in ssrnat and div:
- some trivial results in ssrnat:
ltn_predL
,ltn_predRL
,ltn_subrR
,leq_subrR
,ltn_subrL
andpredn_sub
, - theorems about
n <=/< p +/- m
andm +/- n <=/< p
:leq_psubRL
,ltn_psubLR
,leq_subRL
,ltn_subLR
,leq_subCl
,leq_psubCr
,leq_subCr
,ltn_subCr
,ltn_psubCl
andltn_subCl
, - some commutations between modulo and division:
modn_divl
anddivn_modl
, - theorems about the euclidean division of additions and subtraction,
- without preconditions of divisibility:
edivnD
,edivnB
,divnD
,divnB
,modnD
,modnB
, - with divisibility of one argument:
divnDMl
,divnMBl
,divnBMl
,divnBl
anddivnBr
, - specialization of the former theorems for .+1 and .-1:
edivnS
,divnS
,modnS
,edivn_pred
,divn_pred
andmodn_pred
.
- without preconditions of divisibility:
- some trivial results in ssrnat:
-
Added
sort_rec1
andsortE
to help inductive reasoning onsort
. -
Added map/parametricity theorems about
path
,sort
, andsorted
:homo_path
,mono_path
,homo_path_in
,mono_path_in
,homo_sorted
,mono_sorted
,map_merge
,merge_map
,map_sort
,sort_map
,sorted_map
,homo_sorted_in
,mono_sorted_in
. -
Extracting lemma
fpathE
fromfpathP
, and shortening the proof of the latter. -
Added the theorem
perm_iota_sort
to express that the sorting of any sequences
is equal to a mapping ofiota 0 (size s)
to the nth elements ofs
, so that one can still reason onnat
, even though the elements ofs
are not in aneqType
. -
Added stability theorems about
merge
andsort
:sorted_merge
,merge_stable_path
,merge_stable_sorted
,sorted_sort
,sort_stable
,filter_sort
,mask_sort
,sorted_mask_sort
,subseq_sort
,sorted_subseq_sort
, andmem2_sort
. -
New algebraic interfaces in
ssralg.v
: comAlgebra and comUnitAlgebra for commutative and commutative-unitary algebras. -
Initial property for polynomials in algebras: New canonical lrMoprphism
horner_alg
evaluating a polynomial in an element of an algebra. The theory include the lemmasin_alg_comm
,horner_algC
,horner_algX
,poly_alg_initial
. -
Added lemmas on commutation with difference, big sum and prod:
commrB
,commr_sum
,commr_prod
. -
Added a few basic seq lemmas about
nseq
,take
anddrop
:nseq_addn
,take_take
,take_drop
,take_addn
,takeC
,take_nseq
,drop_nseq
,rev_nseq
,take_iota
,drop_iota
. -
Added ssrfun theorem
inj_compr
. -
Added theorems
mem2E
,nextE
,mem_fcycle
,inj_cycle
,take_traject
,trajectD
andcycle_catC
inpath.v
-
Added lemmas about
cycle
,connect
,fconnect
,order
andorbit
infingraph.v
:- lemma
connect_cycle
, - lemmas
in_orbit
,order_gt0
,findex_eq0
,mem_orbit
,image_orbit
, - lemmas
fcycle_rconsE
,fcycle_consE
,fcycle_consEflatten
andundup_cycle_cons
which operate under the precondition that the sequencex :: p
is a cycle for f (i.e.fcycle f (x :: p)
). - lemmas which operate under the precondition there is a sequence
p
which is a cycle forf
(i.e.fcycle f p
):order_le_cycle
,finv_cycle
,f_finv_cycle
,finv_f_cycle
,finv_inj_cycle
,iter_finv_cycle
,cycle_orbit_cycle
,fpath_finv_cycle
,fpath_finv_f_cycle
,fpath_f_finv_cycle
,prevE
,fcycleEflatten
,fcycle_undup
,in_orbit_cycle
,eq_order_cycle
,iter_order_cycle
, - lemmas
injectivePcycle
,orbitPcycle
,fconnect_eqVf
,order_id_cycle
,orderPcycle
,fconnect_f
,fconnect_findex
.
- lemma
-
Added lemma
rot_index
which explicits the index given byrot_to
. -
Added tactic
tfae
to split an equivalence between n+1 propositions into n+1 goals, and referenced orbitPcycle as a reference of use.
-
Replaced the legacy generalised induction idiom with a more robust one that does not rely on the
{-2}
numerical occurrence selector, using newssrnat
helper lemmasltn_ind
,ubnP
,ubnPleq
, ...., (see above). The new idiom is documented inssrnat
. This change anticipates an expected evolution offintype
to integratefinmap
. It is likely that the new definition of the#|A|
notation will hide multiple occurrences ofA
, which will break the{-2}
induction idiom. Client libraries should update before the 1.11 release (see PR #434 for examples). -
Replaced the use of the accidental convertibility between
enum A
andfilter A (index_enum T)
with more explicit lemmasbig_enumP
,big_enum
,big_enum_cond
,big_image
added to thebigop
library, and deprecated thefilter_index_enum
lemma that states the corresponding equality. Both convertibility and equality may no longer hold in futuremathcomp
releases when sets overfinType
s are generalised to finite sets overchoiceType
s, so client libraries should stop relying on this identity. Filebigop.v
has some boilerplate to help with the port; also see PR #441 for examples. -
Restricted
big_image
,big_image_cond
,big_image_id
andbig_image_cond_id
tobigop
s over abelian monoids, anticipating the change in the definition ofenum
. This may introduce some incompatibilities - non-abelian instances should be dealt with a combination ofbig_map
andbig_enumP
. -
eqVneq
lemma is changed from{x = y} + {x != y}
toeq_xor_neq x y (y == x) (x == y)
, on which a case analysis performs simultaneous replacement of expressions of the formx == y
andy == x
bytrue
orfalse
, while keeping the ability to use it in the way it was used before. -
Generalized the
allpairs_catr
lemma to the case where the types ofs
,t1
, andt2
are non-eqType
s in[seq E | i <- s, j <- t1 ++ t2]
. -
Generalized
muln_modr
andmuln_modl
removing hypothesis0 < p
. -
Generalized
sort
to non-eqType
s (as well asmerge
,merge_sort_push
,merge_sort_pop
), together with all the lemmas that did not really rely on aneqType
:size_merge
,size_sort
,merge_path
,merge_sorted
,sort_sorted
,path_min_sorted
(which statement was modified to remove the dependency ineqType
), andorder_path_min
. -
compare_nat
type family andltngtP
comparison predicate are changed fromcompare_nat m n (m <= n) (n <= m) (m < n) (n < m) (n == m) (m == n)
tocompare_nat m n (n == m) (m == n) (n <= m) (m <= n) (n < m) (m < n)
, to make it tries to match subterms withm < n
first,m <= n
, thenm == n
.- The compatibility layer for the version 1.9 is provided as the
ssrnat.mc_1_9
module. One may compile proofs compatible with the version 1.9 in newer versions by using this module.
- The compatibility layer for the version 1.9 is provided as the
-
Moved
iter_in
to ssrnat and reordered its arguments. -
Notation
[<-> P0 ; .. ; Pn]
now forcesPi
to be of typeProp
.
fin_inj_bij
lemma is removed as a duplicate ofinjF_bij
lemma fromfintype
library.
-
Makefile
now supports thetest-suite
andonly
targets. Currently,make test-suite
will verify the implementation of mathematical structures and their inheritances of MathComp automatically, by using thehierarchy.ml
utility. One can use theonly
target to build the sub-libraries of MathComp specified by theTGTS
variable, e.g.,make only TGTS="ssreflect/all_ssreflect.vo fingroup/all_fingroup.vo"
. -
Makefile
now supports adoc
target to build the documentation as made available on https://mathcomp.github.io/htmldoc/index.html
MathComp 1.9.0 is compatible with Coq 8.7, 8.8, 8.9 and 8.10beta1. Minor releases will remain compatible with Coq 8.9 and 8.10; compatibility with earlier versions may be dropped.
The contributors to this version are: Cyril Cohen, Enrico Tassi, Erik Martin-Dorel, Georges Gonthier, Kazuhiko Sakaguchi, Sora Chen, Søren Eller Thomsen.
-
nonPropType
, an interface for non-Prop
types, and{pred T}
andrelpre f r
, all of which will be in the Coq 8.10 core SSreflect library. -
deprecate old_id new_id
, notation fornew_id
that prints a deprecation warning forold_id
;Import Deprecation.Silent
turns off those warnings,Import Deprecation.Reject
raises errors instead of only warning. -
filter_nseq
,count_nseq
,mem_nseq
,rcons_inj
,rcons_injl
,rcons_injr
,nthK
,sumn_rot
. -
some
perm_eq
lemmas:perm_cat[lr]
,perm_nilP
,perm_consP
,perm_has
,perm_flatten
,perm_sumn
. -
computing (efficiently) (item, multiplicity) tallies of sequences over an
eqType
:tally s
,incr_tally bs x
,bs \is a wf_tally
,tally_seq bs
.
-
definition of
PredType
which now takes only aP -> pred T
function; definition ofsimpl_rel
to improve simplification byinE
. Both these changes will be in the Coq 8.10 SSReflect core library. -
definition of
permutations s
now uses an optimal algorithm (in space and time) to generate all permutations of s back-to-front, usingtally s
.
perm_eqP
->permP
(seq.permP
ifperm.v
is also imported)perm_eqlP
->permPl
perm_eqrP
->permPr
perm_eqlE
->permEl
perm_eq_refl
->perm_refl
perm_eq_sym
->perm_sym
perm_eq_trans
->perm_trans
perm_eq_size
->perm_size
perm_eq_mem
->perm_mem
perm_eq_uniq
->perm_uniq
perm_eq_rev
->perm_rev
perm_eq_flatten
->perm_flatten
perm_eq_all
->perm_all
perm_eq_small
->perm_small_eq
perm_eq_nilP
->perm_nilP
perm_eq_consP
->perm_consP
leq_size_perm
->uniq_min_size
(permuting conclusions)perm_uniq
->eq_uniq
(permuting assumptions) --> bewareperm_uniq
now meansperm_eq_uniq
uniq_perm_eq
->uniq_perm
perm_eq_iotaP
->perm_iotaP
perm_undup_count
->perm_count_undup
tuple_perm_eqP
->tuple_permP
eq_big_perm
->perm_big
perm_eq_abelian_type
->abelian_type_pgroup
- removed Coq prelude hints
plus_n_O
plus_n_Sm
mult_n_O
mult_n_Sm
, to improve robustness ofby ...
; scripts may need to invokeaddn0
,addnS
,muln0
ormulnS
explicitly where these hints were used accidentally.
Drop compatibility with Coq 8.6 (OCaml plugin removed). MathComp 1.8.0 is compatible with Coq 8.7, 8.8 and 8.9.
The contributors to this version are: Anton Trunov, Assia Mahboubi, Cyril Cohen, Enrico Tassi, Erik Martin-Dorel, Florent Hivert, Georges Gonthier, Kazuhiko Sakaguchi, Laurence Rideau, Laurent Théry, Pierre-Yves Strub, Søren Eller Thomsen, Yves Bertot.
-
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 with its theory:mem_permutations
,size_permutations
,permutations_uniq
,permutations_all_uniq
,perm_permutations
. -
eq_mktuple
,eq_ffun
,eq_finset
,eq_poly
,ex_mx
that can be used with theunder
tactic from the Coq 8.10 SSReflect plugin (cf. coq/coq#9651)
-
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