diff options
| author | Erik Martin-Dorel | 2019-08-06 22:52:16 +0200 |
|---|---|---|
| committer | Erik Martin-Dorel | 2019-08-08 11:11:51 +0200 |
| commit | d60b807c868f4d54a273549519ea51c196242370 (patch) | |
| tree | 35c18ac9c3a269c96340ebfbc17c4e92c3723cc5 /doc | |
| parent | 75f93e90e95f049ae23023f39add16a861ae114b (diff) | |
[ssr] Refactor under's Setoid generalization to ease stdlib2 porting
Changes:
* Add ssrclasses.v that redefines [Reflexive] and [iff_Reflexive];
* Add ssrsetoid.v that links
[ssrclasses.Reflexive] and [RelationClasses.Reflexive];
* Add [Require Coq.ssr.ssrsetoid] in Setoid.v;
* Update ssrfwd.ml accordingly, using a helper file ssrclasses.ml that
ports some non-exported material from rewrite.ml;
* Some upside in passing: ssrfwd.ml no more depends on Ltac_plugin;
* Update doc and tests as well.
Summary:
* We can now use the under tactic in two flavors:
- with the [eq] or [iff] relations: [Require Import ssreflect.]
- or a [RewriteRelation]: [Require Import ssreflect. Require Setoid.]
(while [ssreflect] does not require [RelationClasses] nor [Setoid],
and conversely [Setoid] does not require [ssreflect]).
* The file ssrsetoid.v could be skipped when porting under to stdlib2.
Diffstat (limited to 'doc')
| -rw-r--r-- | doc/sphinx/proof-engine/ssreflect-proof-language.rst | 6 | ||||
| -rw-r--r-- | doc/stdlib/hidden-files | 1 | ||||
| -rw-r--r-- | doc/stdlib/index-list.html.template | 1 |
3 files changed, 5 insertions, 3 deletions
diff --git a/doc/sphinx/proof-engine/ssreflect-proof-language.rst b/doc/sphinx/proof-engine/ssreflect-proof-language.rst index 0af23354cc..3db771b0ba 100644 --- a/doc/sphinx/proof-engine/ssreflect-proof-language.rst +++ b/doc/sphinx/proof-engine/ssreflect-proof-language.rst @@ -3756,9 +3756,9 @@ involves the following steps: the corresponding intro pattern :n:`@i_pattern__i` in each goal. 4. Then :tacn:`under` checks that the first n subgoals - are (quantified) Leibniz equalities or registered Setoid equalities - between a term and an evar (e.g. ``m - m = ?F2 m`` in the running - example). + are (quantified) Leibniz equalities, double implications or + registered Setoid equalities between a term and an evar + (e.g. ``m - m = ?F2 m`` in the running example). 5. If so :tacn:`under` protects these n goals against an accidental instantiation of the evar. diff --git a/doc/stdlib/hidden-files b/doc/stdlib/hidden-files index 46175e37ed..4f8986984f 100644 --- a/doc/stdlib/hidden-files +++ b/doc/stdlib/hidden-files @@ -77,3 +77,4 @@ plugins/setoid_ring/Rings_Q.v plugins/setoid_ring/Rings_R.v plugins/setoid_ring/Rings_Z.v plugins/setoid_ring/ZArithRing.v +plugins/ssr/ssrsetoid.v diff --git a/doc/stdlib/index-list.html.template b/doc/stdlib/index-list.html.template index dcfe4a08f3..2673d8db82 100644 --- a/doc/stdlib/index-list.html.template +++ b/doc/stdlib/index-list.html.template @@ -602,6 +602,7 @@ through the <tt>Require Import</tt> command.</p> </dt> <dd> plugins/ssrmatching/ssrmatching.v + plugins/ssr/ssrclasses.v plugins/ssr/ssreflect.v plugins/ssr/ssrbool.v plugins/ssr/ssrfun.v |
