aboutsummaryrefslogtreecommitdiff
path: root/mathcomp/ssreflect/binomial.v
AgeCommit message (Collapse)Author
2020-11-20Tuning simplifications using Arguments simpl nomatchCyril Cohen
2020-11-13Rename `eq_sorted` lemmas to `sorted_eq` and generalize `sort_le_id`Kazuhiko Sakaguchi
- Rename `eq_sorted` lemmas to `sorted_eq` to address a naming inconsistency. - Lemma `sort_le_id` has been generalized from `orderType` to `porderType`.
2020-09-29rename mem_imset to imset_f (with deprecation)Christian Doczkal
2020-05-16A few more revisionsKazuhiko Sakaguchi
2020-05-13Revise proofs in ssreflect/*.vKazuhiko Sakaguchi
This change reduces - use of numerical occurrence selectors (#436) and - use of non ssreflect tactics such as `auto`, and improves use of comparison predicates such as `posnP`, `leqP`, `ltnP`, `ltngtP`, and `eqVneq`.
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-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-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-09-30ffact as a product similar to fact_prod (#374)Laurent Théry
Thanks!
2019-09-16fermat little theoremthery
2019-05-08suppress use of `Arith` hintsSora Chen
2019-04-26Cleaning Require and Require ImportsCyril Cohen
2019-04-01Making {fun ...} structural and extending it to dependent functionsGeorges Gonthier
Construct `finfun_of` directly from a bespoke indexed inductive type, which both makes it structurally positive (and therefore usable as a container in an `Inductive` definition), and accommodates naturally dependent functions. This is still WIP, because this PR exposed a serious shortcoming of the Coq unification algorithm’s implantation of Miller patterns. This bug defeats the inference of `Canonical` structures for `{ffun S -> T}` when the instances are defined in the dependent case! This causes unmanageable regressions starting in `matrix.v`, so I have not been able to check for any impact past that. I’m pushing this commit so that the Coq issue may be addressed. Made `fun_of_fin` structurally decreasing: Changed the primitive accessor of `finfun_of` from `tfgraph` to the `Funclass` coercion `fun_of_fin`. This will make it possible to define recursive functions on inductive types built using finite functions. While`tfgraph` is still useful to transport the tuple canonical structures to `finfun_of`, it is no longer central to the theory so its role has been reduced.
2019-03-24Compat of sumn with bigop and renaming dep to cond when appropriateCyril Cohen
2018-02-06running semi-automated linting on the whole libraryCyril Cohen
2018-02-05tide up proof of card_inj_ffunsEnrico Tassi
2016-11-07update copyright bannerAssia Mahboubi
2016-09-16Refactoring of binonialthery
Variable renaming from 'C(m,n) to 'C(n,m) Renaming theorem mul_Sm_binn to mul_bin_diag Adding theorems mul_bin_left mul_bin_right
2015-11-05merge basic/ into ssreflect/Enrico Tassi