- Apr 23, 2022
-
-
Robbert Krebbers authored
-
- Feb 11, 2022
-
-
Robbert Krebbers authored
-
- Feb 02, 2022
-
-
Robbert Krebbers authored
-
- Jan 24, 2022
-
-
- Dec 16, 2021
-
-
- Nov 08, 2021
-
-
Ralf Jung authored
-
- Oct 01, 2021
-
-
Armaël Guéneau authored
-
- Sep 05, 2021
-
-
Ralf Jung authored
-
- Sep 03, 2021
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
- Jul 29, 2021
-
-
Ralf Jung authored
suggested by Huge Herbelin
-
- Jul 28, 2021
-
-
Ralf Jung authored
to avoid bad regressions, some other notations also ha to be tweaked
-
- Jun 18, 2021
-
-
Ralf Jung authored
-
- Jun 14, 2021
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
- May 25, 2021
- Jan 27, 2021
-
-
- Jan 13, 2021
-
-
Ralf Jung authored
-
- Dec 04, 2020
-
-
Robbert Krebbers authored
This is an alternative to !591.
-
- Nov 11, 2020
-
-
Tej Chajed authored
-
Tej Chajed authored
-
- Sep 28, 2020
-
-
Tej Chajed authored
A failing iIntros for implications should prettify the identifier before printing, and iIntros on something that isn't a wand or implication should say what couldn't be introduced (to clarify that `iIntros "HP HQ"` failed because of the HQ in particular, for example).
-
- Sep 24, 2020
-
-
Tej Chajed authored
`iDestruct H as "H1 H2"` produces an error that says the pattern should contain exactly one proper introduction pattern. When multiple patterns are provided, due to Ltac variable shadowing iDestructHypFindPat was instead reporting only the first pattern in the error message (and even that was printed as the parsed AST rather than the original string).
-
- Sep 21, 2020
-
-
Tej Chajed authored
The error handling for `iIntro (?)` and similar tactics didn't correctly report failures when the goal couldn't be turned into a universal quantifier. This is something missing from !482 due to no test triggering the error.
-
- Jul 22, 2020
-
-
Fixes #337.
-
- Jul 21, 2020
-
-
Tej Chajed authored
Preserve identifiers in binders where possible, analogous to the support for destructing existentials in !479. Fixes #336.
-
Robbert Krebbers authored
-
When running `iDestruct "H" as (?) "H"`, use the name of the binder in "H". For example, if "H" has type `∃ y, Φ y`, we now use `y` as the name of the variable after freshening. Previously the name was always the equivalent of running `fresh H`. The implementation achieves this by forwarding the desired identifier name through the `IntoExist` typeclass. Identifiers are serialized in Gallina by using them as the name of a function of type `ident_name := unit -> unit`.
-
- Jun 12, 2020
-
-
Tej Chajed authored
Fixes #325. Also added a tests for the various `iSpecialize` error cases involving the `[%]` and `[//]` specialization patterns.
-
- May 23, 2020
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
- Apr 07, 2020
-
-
Tej Chajed authored
Fixes #307.
-
- Apr 06, 2020
-
-
Tej Chajed authored
Notably this support relies on string to identifier conversion, which works natively using Ltac2 in Coq 8.11+ and with a plugin (https://github.com/ppedrot/coq-string-ident) in Coq 8.10. To use it, you must replace intro_patterns.string_to_ident_hook with a real implementation; see https://gitlab.mpi-sws.org/iris/string-ident for a working implementation that works with Coq 8.11 (using Ltac2). The syntax is %H (within a string intro pattern). This is technically backwards-incompatible, because this was previously supported and parsed as % and H separately. To restore the old behavior, separate with a space, eg [% H].
-
- Mar 20, 2020
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
- The error messages were wrong: the goal needs to be absorbing, not the hypothesis. - The wrong failure number was used in `iAssumption`, which caused the error not to be propagated properly.
-
- Feb 28, 2020
-
-
Ralf Jung authored
-
- Feb 18, 2020
-
-
Robbert Krebbers authored
-
- Feb 01, 2020
-
-
Robbert Krebbers authored
-
- Nov 20, 2019
-
-
Robbert Krebbers authored
Also, rewrite `iIntoEmpValid`. Now, instead of using Ltac to traverse the type of the term and generate goals for the premises, we repeatedly apply a series of lemmas. This has the advantage that it works up to convertability, and we no longer need the `eval ...` hacks.
-