aboutsummaryrefslogtreecommitdiff
path: root/mathcomp/algebra/matrix.v
AgeCommit message (Collapse)Author
2021-03-08Adding big block matricesCyril Cohen
- with special cases for row, column, and diagonal matrices - we define an order bijection between the indexing of the whole matrix and the indexing of the blocks to preserve triangularity
2021-01-16Drop support for Coq 8.10 and deprecate the `deprecate` notationKazuhiko Sakaguchi
- The `deprecate` notation and `iota_add` have been deprecated. All the uses of the `deprecate` notation have been replaced with the `deprecated` attribute. - Deprecation aliases in `ssrnat` and `ssrnum` introduced in MathComp 1.11+beta1 have been removed. - Remove `VDFILE` related hacks from `Makefile.common`.
2020-11-25Rename `all1rel` to `all2rel`, restate `eq_allrel`, and add CHANGELOG entriesKazuhiko Sakaguchi
Co-authored-by: Cyril Cohen <CohenCyril@users.noreply.github.com>
2020-11-25Generalize `allrel` to take two lists as argumentsKazuhiko Sakaguchi
2020-11-23Merge pull request #667 from CohenCyril/ssrcoq8.10Enrico Tassi
Using Coq 8.10 ssreflect new features
2020-11-20Using Coq 8.10 ssreflect new featuresCyril Cohen
2020-11-20Merge pull request #663 from CohenCyril/clean_headaffeldt-aist
Using Arguments / to deal with volatile definitions
2020-11-20Using Arguments / to deal with volatile definitionsCyril Cohen
2020-11-19Removing duplicate clears and turning the warning into an errorCyril Cohen
2020-11-09`comm(Cmx|_mxC)` -> `comm(_scalar_mx|_mx_scalar)`Cyril Cohen
2020-10-29Switch from long suffixes to short suffixesKazuhiko Sakaguchi
2020-10-21Adding matrix commutation and its theoryCyril Cohen
2020-09-29Merge pull request #582 from CohenCyril/fix_map_mxKazuhiko Sakaguchi
Fix map_mx_id and a few implicit arguments
2020-09-28Submatrix theoryCyril Cohen
2020-09-28Update `map_mx_id`, fix some implicits and argument ordersCyril Cohen
- Fix implicits of `eq_map_mx`, `eq_in_map_mx`, `map_mx_id_in` and `map_mx_id`, in order to give more practical arguments first. - Generalized `map_mx_id` to take the shape f =1 id -> M ^ f = M. The previous behaviour can be recovered through `map_mx_id (frefl id)` or `[_ ^ id]map_mx_id`
2020-09-24Adding `det_mx11`Cyril Cohen
2020-09-08Merge pull request #573 from CohenCyril/horner_diagLaurent Théry
Polynomial evaluation and minimal/char poly of a diagonal/triangular matrices
2020-09-08Lemma mul_rvPCyril Cohen
2020-09-07Adding [row|col]_[udlr]submx lemmasCyril Cohen
2020-09-07compat Coq < 8.10Cyril Cohen
2020-09-07Refactoring proof of det_trig and spawning sublemmasCyril Cohen
2020-09-07Polynomial evaluation and minimal poly of a diagonal matrixCyril Cohen
2020-09-04Adding more map_mx lemmasCyril Cohen
2020-09-04Merge pull request #575 from CohenCyril/mxOverLaurent Théry
Adding mxOver predicate
2020-09-03Lemmas reindex_omap and bigD1_ordCyril Cohen
+ eq_liftF and lift_eqF + proof simplificaions
2020-09-03Merge pull request #565 from CohenCyril/split_ordPLaurent Théry
Expliciting relation between split and [lr]shift
2020-09-03Adding mxOver predicateCyril Cohen
2020-09-03Expliciting relation between split and [lr]shiftCyril Cohen
2020-09-03Extracting a nonzero coefficient from a nonzero matrixCyril Cohen
+ shortening some proofs
2020-09-03Elementary theory of diagonal and triagular matricesCyril Cohen
2020-06-09fix coq 8.12 warningsCyril Cohen
2020-04-09Merge pull request #473 from affeldt-aist/long_short_suffixesaffeldt-aist
switching long suffixes to short suffixes
2020-04-09- switching long suffixes to short suffixesReynald Affeldt
+ `odd_add` -> `oddD` + `odd_sub` -> `oddB` + `take_addn` -> `takeD` + `rot_addn` -> `rotD` + `nseq_addn` -> `nseqD` fixes #359
2020-04-08fix typos in documentation: formulaeAntonio Nikishaev
2020-04-08fix typos in documentation: textAntonio Nikishaev
2019-12-28Refactoring and linting especially polydivKazuhiko Sakaguchi
- Replace `altP eqP` and `altP (_ =P _)` with `eqVneq`: The improved `eqVneq` lemma (#351) is redesigned as a comparison predicate and introduces a hypothesis in the form of `x != y` in the second case. Thus, `case: (altP eqP)`, `case: (altP (x =P _))` and `case: (altP (x =P y))` idioms can be replaced with `case: eqVneq`, `case: (eqVneq x)` and `case: (eqVneq x y)` respectively. This replacement slightly simplifies and reduces proof scripts. - use `have [] :=` rather than `case` if it is better. - `by apply:` -> `exact:`. - `apply/lem1; apply/lem2` or `apply: lem1; apply: lem2` -> `apply/lem1/lem2`. - `move/lem1; move/lem2` -> `move/lem1/lem2`. - Remove `GRing.` prefix if applicable. - `negbTE` -> `negPf`, `eq_refl` -> `eqxx` and `sym_equal` -> `esym`.
2019-05-29Replace eqVneq with eqPsymAnton Trunov
Also changed eqsVneq.
2019-05-29Rename eqsP to eqPsym as suggested by @CohenCyrilAnton Trunov
2019-05-28Add eqsP view to destruct not only x == y, but also y == xAnton Trunov
2019-04-26Cleaning Require and Require ImportsCyril Cohen
2019-03-20Add extra eta lemmas for the under tacticErik Martin-Dorel
Related: coq/coq#9651
2018-12-13Adjust implicits of cancellation lemmasGeorges Gonthier
Like injectivity lemmas, instances of cancellation lemmas (whose conclusion is `cancel ? ?`, `{in ?, cancel ? ?}`, `pcancel`, or `ocancel`) are passed to generic lemmas such as `canRL` or `canLR_in`. Thus such lemmas should not have trailing on-demand implicits _just before_ the `cancel` conclusion, as these would be inconvenient to insert (requiring essentially an explicit eta-expansion). We therefore use `Arguments` or `Prenex Implicits` directives to make all such arguments maximally inserted implicits. We don’t, however make other arguments implicit, so as not to spoil direct instantiation of the lemmas (in, e.g., `rewrite -[y](invmK injf)`). We have also tried to do this with lemmas whose statement matches a `cancel`, i.e., ending in `forall x, g (E[x]) = x` (where pattern unification will pick up `f = fun x => E[x]`). We also adjusted implicits of a few stray injectivity lemmas, and defined constants. We provide a shorthand for reindexing a bigop with a permutation. Finally we used the new implicit signatures to simplify proofs that use injectivity or cancellation lemmas.
2018-12-04Document parameter names whenever possibleAnton Trunov
As suggested by @ggonthier [here](https://github.com/math-comp/math-comp/pull/249#pullrequestreview-177938295) > One of the design ideas for the `Arguments` command was that it would allow to centralise the documentation of the application of constants. In that spirit it would be in my opinion better to make as much use of this as possible, and to document the parameter names whenever possible, especially that of implicit parameters. and [here](https://github.com/math-comp/math-comp/pull/253#discussion_r237434163): > As a general rule, defined functional constants should have maximal prenex implicit arguments, as this facilitates their use as arguments to functionals, because this mimics the way function constants are treated in functional programming languages with Hindley-Milner type inference. Conversely, lemmas and theorems should have on-demand implicit arguments, possibly interspersed with explicit ones, as it's fairly common for other lemmas to have universally quantified premises; also, this makes it easier to specify such arguments with the apply: tactic. This policy may be amended for lemmas that are used as functional arguments, such as reflection or cancellation lemmas. Unfortunately there is currently no easy way to tell Coq to use different defaults for definitions and lemmas, so MathComp sticks to the on-demand default, as there are significantly more lemmas than definition, and use the Prenex Implicits to redress matters in bulk for definitions. However, this is not completely systematic, and is sometimes omitted for constants that are not used as functional arguments in the library, or inside the sections in which the definition occur, since such commands need to be repeated after the section is closed. Since Arguments commands should document the intended constant usage as best as possible, they should follow the implicits policy - even in cases such as this where the Prenex Implicits had been skipped.
2018-11-21Merge Arguments and Prenex ImplicitsAnton Trunov
See the discussion here: https://github.com/math-comp/math-comp/pull/242#discussion_r233778114
2018-10-26moving countalg and closed_field aroundCyril Cohen
- countalg goes to the algebra package - finalg now get the expected inheritance from countalg - closed_field now contains the construction of algebraic closure for countable fields (previously in countalg) - proof of quantifier elimination for closed field rewritten in a monadic style
2018-07-12Replace all the CoInductives with VariantsKazuhiko Sakaguchi
2018-03-04Change deprecated Arguments Scope to ArgumentsJasper Hugunin
2018-02-21Change Implicit Arguments to Arguments in algebraJasper Hugunin
2018-02-06running semi-automated linting on the whole libraryCyril Cohen
2017-12-12Adding row/col/block_mx_eq0Cyril Cohen