aboutsummaryrefslogtreecommitdiff
path: root/mathcomp
AgeCommit message (Collapse)Author
2019-12-11Reorder the arguments of the comparison predicates in order.vKazuhiko Sakaguchi
The comparison predicates (for nat, ordered types, ordered integral domains) must have the following order of arguments: - leP x y : le_xor_gt x y ... (x <= y) (y < x) ... . - ltP x y : lt_xor_ge x y ... (y <= x) (x < y) ... . - ltgtP x y : compare x y ... (y == x) (x == y) (x >= y) (x <= y) (x > y) (x < y) ... .
2019-12-11Fixes in naming, mixins, doc and canonical orderingCyril Cohen
- comparer -> compare (in order.v) - eq constructor of compare goes last - "x < y" is matched before "x > y" - "x <= y" is matched before "x >= y" - adding prod and lexi ordering on tuple - adding missing CS - edit CHANGELOG
2019-12-11Use `deprecate` notation in ssrnumKazuhiko Sakaguchi
2019-12-11Changing licenseCyril Cohen
2019-12-11Make an appropriate use of the order library everywhere (#278, #280, #282, ↵Kazuhiko Sakaguchi
#283, #285, #286, #288, #296, #330, #334, and #341) ssrnum related changes: - Redefine the intermediate structure between `idomainType` and `numDomainType`, which is `normedDomainType` (normed integral domain without an order). - Generalize (by using `normedDomainType` or the order structures), relocate (to order.v), and rename ssrnum related definitions and lemmas. - Add a compatibility module `Num.mc_1_9` and export it to check compilation. - Remove the use of the deprecated definitions and lemmas from entire theories. - Implement factories mechanism to construct several ordered and num structures from fewer axioms. order related changes: - Reorganize the hierarchy of finite lattice structures. Finite lattices have top and bottom elements except for empty set. Therefore we removed finite lattice structures without top and bottom. - Reorganize the theory modules in order.v: + `LTheory` (lattice and partial order, without complement and totality) + `CTheory` (`LTheory` + complement) + `Theory` (all) - Give a unique head symbol for `Total.mixin_of`. - Replace reverse and `^r` with converse and `^c` respectively. - Fix packing and cloning functions and notations. - Provide more ordered type instances: Products and lists can be ordered in two different ways: the lexicographical ordering and the pointwise ordering. Now their canonical instances are not exported to make the users choose them. - Export `Order.*.Exports` modules by default. - Specify the core hint database explicitly in order.v. (see #252) - Apply 80 chars per line restriction. General changes: - Give consistency to shape of formulae and namings of `lt_def` and `lt_neqAle` like lemmas: lt_def x y : (x < y) = (y != x) && (x <= y), lt_neqAle x y : (x < y) = (x != y) && (x <= y). - Enable notation overloading by using scopes and displays: + Define `min` and `max` notations (`minr` and `maxr` for `ring_display`) as aliases of `meet` and `join` specialized for `total_display`. + Provide the `ring_display` version of `le`, `lt`, `ge`, `gt`, `leif`, and `comparable` notations and their explicit variants in `Num.Def`. + Define 3 variants of `[arg min_(i < n | P) F]` and `[arg max_(i < n | P) F]` notations in `nat_scope` (specialized for nat), `order_scope` (general version), and `ring_scope` (specialized for `ring_display`). - Update documents and put CHANGELOG entries.
2019-12-11Initial import of order.v into mathcompCohen Cyril
2019-11-29Return of PR #226: adds relevant theorems when fcycle f (orbit f x) and the ↵Cyril Cohen
needed lemmas (#261) * adds relevant theorems when fcycle f (orbit f x) and the needed lemmas * Generalize f_step lemmas * Generalizations, shorter proofs, bugfixes, CHANGELOG - changelog, renamings and comments - renaming `homo_cycle` to `mem_fcycle` and other small renamings - name swap `mem_orbit` and `in_orbit` - simplifications - generalization following @pi8027's comment - Getting rid of many uniquness condition in `fingraph.v` - added cases to the equivalence `orbitPcycle` - added `cycle_catC`
2019-11-29Fix MakefileKazuhiko Sakaguchi
2019-11-27Merge pull request #441 from ggonthier/big_enumCyril Cohen
Big enum
2019-11-27Explicit `bigop` enumeration handlingGeorges Gonthier
Added lemmas `big_enum_cond`, `big_enum` and `big_enumP` to handle more explicitly big ops iterating over explicit enumerations in a `finType`. The previous practice was to rely on the convertibility between `enum A` and `filter A (index_enum T)`, sometimes explicitly via the `filter_index_enum` equality, more often than not implicitly. Both are likely to fail after the integration of `finmap`, as the `choiceType` theory can’t guarantee that the order in selected enumerations is consistent. For this reason `big_enum` and the related (but currently unused) `big_image` lemmas are restricted to the abelian case. The `big_enumP` lemma can be used to handle enumerations in the non-abelian case, as explained in the `bigop.v` internal documentation. The Changelog entry enjoins clients to stop relying on either `filter_index_enum` and convertibility (though this PR still provides both), and warns about the restriction of the `big_image` lemma set to the abelian case, as it it a possible source of incompatibility.
2019-11-25Have to change directory before checking for the dependency fileYves Bertot
2019-11-25adds a comment so that dead code can be remove when it is no longer usedYves Bertot
2019-11-25dependency file will change name after coq-8.10Yves Bertot
2019-11-25things that are needed to make 'make doc' workYves Bertot
2019-11-25Add missing dependenciesMaxime Dénès
Spotted by Yves.
2019-11-25Add Makefile target to build the docMaxime Dénès
2019-11-25Fix hint declarations to specify the database explicitlyKazuhiko Sakaguchi
2019-11-22Injectivity lemmas in fintype (#426)Kazuhiko Sakaguchi
2019-11-22Added ssrfun theorem `inj_compr` (#432)Cyril Cohen
2019-11-22New generalised induction idiom (#434)Georges Gonthier
Replaced the legacy generalised induction idiom with a more robust one that does not rely on the `{-2}` numerical occurrence selector, using either new helper lemmas `ubnP` and `ltnSE` or a specific `nat` induction principle `ltn_ind`. Added (non-strict in)equality induction helper lemmas Added `ubnP[lg]?eq` helper lemmas that abstract an integer expression along with some (in)equality, in preparation for some generalised induction. Note that while `ubnPleq` is very similar to `ubnP` (indeed `ubnP M` is basically `ubnPleq M.+1`), `ubnPgeq` is used to remember that the inductive value remains below the initial one. Used the change log to give notice to users to update the generalised induction idioms in their proofs to one of the new forms before Mathcomp 1.11.
2019-11-20Merge pull request #399 from CohenCyril/ltn_subYves Bertot
More arithmetic theorems
2019-11-19Merge pull request #420 from pi8027/all-lemmasCyril Cohen
Add all_filter, all_pmap, and all_allpairsP in seq.v
2019-11-18fixing CHANGELOG and ltn_pred lemmasCyril Cohen
2019-11-18Documenting `L` and `R` in `CONTRIBUTING.md`Cyril Cohen
2019-11-18More arithmetic theoremsCyril Cohen
- Generalizing `ltn_subr` - Adding `ltn_subl` and `ltn_subr` - Changing conclusion of `ltn_predl` to `0 < n` instead of `n != 0`
2019-11-18Merge pull request #381 from hivert/seqYves Bertot
More lemmas on seqs
2019-11-15More lemmas on seqsFlorent Hivert
2019-11-15fix in ssralg (#421)Cyril Cohen
* missing exports of lemmas `commrB`, `commr_sum` and `commr_prod` * missing `regular_*` canonical exports
2019-11-15Add all_filter, all_pmap, and all_allpairsP in seq.vKazuhiko Sakaguchi
2019-11-14typothery
2019-11-14fingraph: remove fin_inj_bij lemma as duplicate of injF_bij from fintype (#403)Anton Trunov
2019-11-14Lemmas on commutation with big sum and prod (#413)Florent Hivert
* Lemmas on commutation with big sum and prod * Added commrB Lemma * @CohenCyril review * apply -> apply:
2019-11-14Update zmodp.v (#411)Gabriel Taumaturgo
2019-11-14typo (#412)Laurent Théry
2019-11-06Merge pull request #408 from chdoc/existsPnCyril Cohen
add existsPn/forallPn lemmas
2019-11-06Merge pull request #406 from hivert/algebrasCyril Cohen
Commutative Algebras
2019-11-04Fixed the documentationFlorent Hivert
2019-11-04minor revisionChristian Doczkal
2019-11-04Fixed inheritance of fieldExt / fieldOver / splitting fieldFlorent Hivert
2019-11-04add existsPn/forallPn lemmasChristian Doczkal
2019-11-03Interface for commutative and commutative-unitary algebrasFlorent Hivert
Initial properties of polynomials in R-algebras
2019-10-30Change the order of arguments in `ltngtP`Kazuhiko Sakaguchi
from `ltngtP m n : compare_nat m n (m <= n) (n <= m) (m < n) (n < m) (n == m) (m == n)` to `ltngtP m n : compare_nat m n (n == m) (m == n) (n <= m) (m <= n) (n < m) (m < n)`, to make it tries to match subterms with `m < n` first, `m <= n`, then `m == n`.
2019-10-26Add an explicit type annotation to GRing.scaleKazuhiko Sakaguchi
`V` was wrongly eta-expanded before: GRing.scale : forall (R : ringType) (V : lmodType R), R -> GRing.Zmodule.Pack (GRing.Lmodule.class V) -> GRing.Zmodule.Pack (GRing.Lmodule.class V)
2019-10-25Removing duplicate lemma `addnKC` (= `addKn`)Cyril Cohen
2019-10-25Merge pull request #396 from CohenCyril/edivnDLaurent Théry
More arithmetic theorems
2019-10-25Instances for empty type. (#393)Arthur Azevedo de Amorim
* Add notation and instances for empty type. * Update change log. * Mention void in fintype header. * Remove unnecessary explicit argument. * Documentation header for void.
2019-10-25Stability proofs of sort (#358)Kazuhiko Sakaguchi
* Modified the definition of sort to work on any type * Other Generalizations, fixes and CHANGELOG entry * Add stability lemmas for `path.sort` - Inverse the comparison in `merge` and swap arguments of it everywhere. - Add `sort_rec1` and `sortE` to simplify inductive proofs on `sort`. - Add `seq.mask_filter`, `mem2E`, `path_mask`, `path_filter`, and `sorted_mask`. - Generalize `sorted_filter`, `homo_path_in`, `mono_path_in`, `homo_sorted_in`, and `mono_sorted_in` to non-`eqType`s. - Add the following lemmas to state the stability of `path.merge` and `path.sort`. sorted_merge : forall (T : Type) (leT : rel T), transitive leT -> forall s t : seq T, sorted leT (s ++ t) -> merge leT s t = s ++ t merge_stable_path : forall (T : Type) (leT leT' : rel T), total leT -> forall (x : T) (s1 s2 : seq T), all (fun y : T => all (leT' y) s2) s1 -> path [rel x0 y | leT x0 y && (leT y x0 ==> leT' x0 y)] x s1 -> path [rel x0 y | leT x0 y && (leT y x0 ==> leT' x0 y)] x s2 -> path [rel x0 y | leT x0 y && (leT y x0 ==> leT' x0 y)] x (merge leT s1 s2) merge_stable_sorted : forall (T : Type) (leT leT' : rel T), total leT -> forall s1 s2 : seq T, all (fun x : T => all (leT' x) s2) s1 -> sorted [rel x y | leT x y && (leT y x ==> leT' x y)] s1 -> sorted [rel x y | leT x y && (leT y x ==> leT' x y)] s2 -> sorted [rel x y | leT x y && (leT y x ==> leT' x y)] (merge leT s1 s2) sorted_sort : forall (T : Type) (leT : rel T), transitive leT -> forall s : seq T, sorted leT s -> sort leT s = s sort_stable : forall (T : Type) (leT leT' : rel T), total leT -> transitive leT' -> forall s : seq T, sorted leT' s -> sorted [rel x y | leT x y && (leT y x ==> leT' x y)] (sort leT s) filter_sort : forall (T : Type) (leT : rel T), total leT -> transitive leT -> forall (p : pred T) (s : seq T), [seq x <- sort leT s | p x] = sort leT [seq x <- s | p x] mask_sort : forall (T : Type) (leT : rel T), total leT -> transitive leT -> forall (s : seq T) (m : bitseq), {m_s : bitseq | mask m_s (sort leT s) = sort leT (mask m s)} mask_sort' : forall (T : Type) (leT : rel T), total leT -> transitive leT -> forall (s : seq T) (m : bitseq), sorted leT (mask m s) -> {m_s : bitseq | mask m_s (sort leT s) = mask m s} subseq_sort : forall (T : eqType) (leT : rel T), total leT -> transitive leT -> {homo sort leT : t s / subseq t s} subseq_sort' : forall (T : eqType) (leT : rel T), total leT -> transitive leT -> forall t s : seq T, subseq t s -> sorted leT t -> subseq t (sort leT s) mem2_sort : forall (T : eqType) (leT : rel T), total leT -> transitive leT -> forall (s : seq T) (x y : T), leT x y -> mem2 s x y -> mem2 (sort leT s) x y * Avoid some eta-expansions * Get the proper fix of `order_path_min` and remove `sort_map_in` * Update documentation and CHANGELOG entries
2019-10-25More arithmetic theoremsCyril Cohen
In ssrnat: - some trivial results in ssrnat `addnKC`, `ltn_predl`, `ltn_predr`, `ltn_subr` and `predn_sub` - theorems about `n <=/< p +/- m` and `m +/- n <=/< p` `leq_psubRL`, `ltn_psubLR`, `leq_subRL`, `ltn_subLR`, `leq_subCl`, `leq_psubCr`, `leq_subCr`, `ltn_subCr`, `ltn_psubCl` and `ltn_subCl` In div: - 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` and `divnBr` + specialization of the former theorems for .+1 and .-1: `edivnS`, `divnS`, `modnS`, `edivn_pred`, `divn_pred` and `modn_pred`
2019-10-24Added and generalized arithmetic theorems. (#394)Cyril Cohen
- Added: `modn_divl` and `divn_modl`. - Generalized `muln_modr` and `muln_modl` removing hypothesis `0 < p`.
2019-10-16renaming new `reindex_` lemmas with prefix `big_`Cyril Cohen