- Sep 06, 2021
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
This should ensure that `coqchk` no longer reports axioms.
-
Robbert Krebbers authored
-
Robbert Krebbers authored
1. Improve naming 2. Make `wf_` proofs of `gmap` and `pmap` opaque 3. Avoid `bind` and `fmap` combinators for `SProp` 4. Drop `simpl` tests Items 2-3 are crucial for performance, otherwise each operation checks if the map is still well-formed, which destroys log(n) complexity of map operations. Why 3 is needed is subtle: The `bind` and `fmap` lemmas for `SProp` contain Booleans as implicit arguments, which are eagerly evaluated by `vm_compute`. As a result of 2-3, `simpl` will not normalize proofs to `stt`, and `simpl` tests do not give a desirable result.
-
Tej Chajed authored
-
- Jun 10, 2021
-
-
Robbert Krebbers authored
-
- May 25, 2021
-
-
Ralf Jung authored
-
- Feb 17, 2021
-
-
Ralf Jung authored
-
- Jan 07, 2021
-
-
Ralf Jung authored
-
- Sep 16, 2020
-
-
Ralf Jung authored
-
- Sep 15, 2020
-
-
Set Default Goal Selector "!" makes it illegal to ever apply a tactic with more than one goal (instead, must focus with bullets or braces).
-
- Mar 13, 2020
-
-
Robbert Krebbers authored
This follows iris!387 This closes issue #54.
-
- Sep 19, 2019
-
-
Robbert Krebbers authored
For example, change `(!! i)` into `(.!! x)` so that `!!` can also be used as a prefix, as done in VST for example. This closes issue #42. I have used the `sed` script below. This script took care of nearly all uses apart from a few occurrences where a space was missing, e.g. `(,foo)`. In this case, `coqc` will just fail, allowing one to patch up things manually. The script is slightly too eager on Iris developments, where it also replaces `($ ...)` introduction patterns. When porting Iris developments you thus may want to remove the line for `$`. ``` sed ' s/(= /(.= /g; s/ =)/ =.)/g; s/(≠ /(.≠ /g; s/ ≠)/ ≠.)/g; s/(≡ /(.≡ /g; s/ ≡)/ ≡.)/g; s/(≢ /(.≢ /g; s/ ≢)/ ≢.)/g; s/(∧ /(.∧ /g; s/ ∧)/ ∧.)/g; s/(∨ /(.∨ /g; s/ ∨)/ ∨.)/g; s/(
/(. /g; s/ )/ .)/g; s/(→ /(.→ /g; s/ →)/ →.)/g; s/($ /(.$ /g; s/(∘ /(.∘ /g; s/ ∘)/ ∘.)/g; s/(, /(., /g; s/ ,)/ ,.)/g; s/(∘ /(.∘ /g; s/ ∘)/ ∘.)/g; s/(∪ /(.∪ /g; s/ ∪)/ ∪.)/g; s/(⊎ /(.⊎ /g; s/ ⊎)/ ⊎.)/g; s/(∩ /(.∩ /g; s/ ∩)/ ∩.)/g; s/(∖ /(.∖ /g; s/ ∖)/ ∖.)/g; s/(⊆ /(.⊆ /g; s/ ⊆)/ ⊆.)/g; s/(⊈ /(.⊈ /g; s/ ⊈)/ ⊈.)/g; s/(⊂ /(.⊂ /g; s/ ⊂)/ ⊂.)/g; s/(⊄ /(.⊄ /g; s/ ⊄)/ ⊄.)/g; s/(∈ /(.∈ /g; s/ ∈)/ ∈.)/g; s/(∉ /(.∉ /g; s/ ∉)/ ∉.)/g; s/(≫= /(.≫= /g; s/ ≫=)/ ≫=.)/g; s/(!! /(.!! /g; s/ !!)/ !!.)/g; s/(⊑ /(.⊑ /g; s/ ⊑)/ ⊑.)/g; s/(⊓ /(.⊓ /g; s/ ⊓)/ ⊓.)/g; s/(⊔ /(.⊔ /g; s/ ⊔)/ ⊔.)/g; s/(:: /(.:: /g; s/ ::)/ ::.)/g; s/(++ /(.++ /g; s/ ++)/ ++.)/g; s/(≡ₚ /(.≡ₚ /g; s/ ≡ₚ)/ ≡ₚ.)/g; s/(≢ₚ /(.≢ₚ /g; s/ ≢ₚ)/ ≢ₚ.)/g; s/(::: /(.::: /g; s/ :::)/ :::.)/g; s/(+++ /(.+++ /g; s/ +++)/ +++.)/g; ' -i $(find -name "*.v") ```
-
- Mar 03, 2019
-
-
Robbert Krebbers authored
- The class `Infinite A` is now defined as having a function `fresh : list A → A`, that given a list `xs`, gives an element `x ∉ xs`. - For most types this `fresh` function has a sensible computable behavior, for example: + For numbers, it yields one added to the maximal element in `xs`. + For strings, it yields the first string representation of a number that is not in `xs`. - For any type `C` of finite sets with elements of infinite type `A`, we lift the fresh function to `C → A`. As a consequence: - It is now possible to pick fresh elements from _any_ finite set and from _any_ list with elements of an infinite type. Before it was only possible for specific finite sets, e.g. `gset`, `pset`, ... - It makes the code more uniform. There was a lot of overlap between having a `Fresh` and an `Infinite` instance. This got unified.
-
- Feb 20, 2019
-
-
Robbert Krebbers authored
Get rid of using `Collection` and favor `set` everywhere. Also, prefer conversion functions that are called `X_to_Y`. The following sed script performs most of the renaming, with the exception of: - `set`, which has been renamed into `propset`. I couldn't do this rename using `sed` since it's too context sensitive. - There was a spurious rename of `Vec.of_list`, which I correctly manually. - Updating some section names and comments. ``` sed ' s/SimpleCollection/SemiSet/g; s/FinCollection/FinSet/g; s/CollectionMonad/MonadSet/g; s/Collection/Set\_/g; s/collection\_simple/set\_semi\_set/g; s/fin\_collection/fin\_set/g; s/collection\_monad\_simple/monad\_set\_semi\_set/g; s/collection\_equiv/set\_equiv/g; s/\bbset/boolset/g; s/mkBSet/BoolSet/g; s/mkSet/PropSet/g; s/set\_equivalence/set\_equiv\_equivalence/g; s/collection\_subseteq/set\_subseteq/g; s/collection\_disjoint/set\_disjoint/g; s/collection\_fold/set\_fold/g; s/collection\_map/set\_map/g; s/collection\_size/set\_size/g; s/collection\_filter/set\_filter/g; s/collection\_guard/set\_guard/g; s/collection\_choose/set\_choose/g; s/collection\_ind/set\_ind/g; s/collection\_wf/set\_wf/g; s/map\_to\_collection/map\_to\_set/g; s/map\_of\_collection/set\_to\_map/g; s/map\_of\_list/list\_to\_map/g; s/map\_of\_to_list/list\_to\_map\_to\_list/g; s/map\_to\_of\_list/map\_to\_list\_to\_map/g; s/\bof\_list/list\_to\_set/g; s/\bof\_option/option\_to\_set/g; s/elem\_of\_of\_list/elem\_of\_list\_to\_set/g; s/elem\_of\_of\_option/elem\_of\_option\_to\_set/g; s/collection\_not\_subset\_inv/set\_not\_subset\_inv/g; s/seq\_set/set\_seq/g; s/collections/sets/g; s/collection/set/g; ' -i $(find -name "*.v") ```
-
- Jan 29, 2019
-
-
Robbert Krebbers authored
-
- Nov 28, 2018
-
-
Tej Chajed authored
Adding a hint without a database now triggers a deprecation warning in Coq master (https://github.com/coq/coq/pull/8987).
-
- May 24, 2018
-
-
Ralf Jung authored
The notation was parsing-only and all it did was reorder the arguments for from_option. This creates just a needless divergence between what is written and what is printed. Also, removing it frees the name for maybe introducing a function or notation `default` with a type like `T -> option T -> T`.
-
- Apr 05, 2018
-
-
Robbert Krebbers authored
This followed from discussions in https://gitlab.mpi-sws.org/FP/iris-coq/merge_requests/134
-
- Sep 08, 2017
-
-
Robbert Krebbers authored
See also Coq bug #5712.
-
- Mar 15, 2017
-
-
Robbert Krebbers authored
-
- Jan 31, 2017
-
-
Robbert Krebbers authored
-
Ralf Jung authored
-
Ralf Jung authored
This patch was created using find -name *.v | xargs -L 1 awk -i inplace '{from = 0} /^From/{ from = 1; ever_from = 1} { if (from == 0 && seen == 0 && ever_from == 1) { print "Set Default Proof Using \"Type*\"."; seen = 1 } }1 ' and some minor manual editing
-
- Nov 15, 2016
-
-
Robbert Krebbers authored
(These instances are not defined for any FinMap to avoid overlapping instances for EqDecision, which may have awkward consequences for type class search).
-
- Sep 20, 2016
-
-
Robbert Krebbers authored
-
- Jul 27, 2016
-
-
Robbert Krebbers authored
This reverts commit 20b4ae55bdf00edb751ccdab3eb876cb9b13c99f, which does not seem to work with Coq 8.5pl2 (I accidentally tested with 8.5pl1).
-
Robbert Krebbers authored
This makes type checking more directed, and somewhat more predictable. On the downside, it makes it impossible to declare the singleton on lists as an instance of SingletonM and the insert and alter operations on functions as instances of Alter and Insert. However, these were not used often anyway.
-
- Feb 17, 2016
-
-
Robbert Krebbers authored
simplify_equality => simplify_eq simplify_equality' => simplify_eq/= simplify_map_equality => simplify_map_eq simplify_map_equality' => simplify_map_eq/= simplify_option_equality => simplify_option_eq simplify_list_equality => simplify_list_eq f_equal' => f_equal/= The /= suffixes (meaning: do simpl) are inspired by ssreflect.
-
Robbert Krebbers authored
-
- Feb 13, 2016
-
-
Robbert Krebbers authored
Also, make our redefinition of done more robust under different orders of Importing modules.
-
- Feb 11, 2016
-
-
Robbert Krebbers authored
Also do some minor clean up.
-
- Nov 18, 2015
-
-
Robbert Krebbers authored
-
Robbert Krebbers authored
-
- Nov 16, 2015
-
-
Robbert Krebbers authored
-
- Nov 11, 2015
-
-
Robbert Krebbers authored
-
- Feb 01, 2017
-
-
Robbert Krebbers authored
The port makes the following notable changes: * The carrier types of separation algebras and integer environments are no longer in Set. Now they have a type at a fixed type level above Set. This both works better in 8.5 and makes the formalization more general. I have tried putting them at polymorphic type levels, but that increased the compilation time by an order of magnitude. * I am using a custom f_equal tactic written in Ltac to circumvent bug #4069. That bug has been fixed, so this custom tactic can be removed when the next beta of 8.5 is out.
-
- May 21, 2015
-
-
Robbert Krebbers authored
It would still be far more efficient to have a counter for the next memory index in the executable semantics/frontend.
-
- Feb 08, 2015
-
-
Robbert Krebbers authored
-
- Jun 16, 2014
-
-
Robbert Krebbers authored
Major changes: * Make void a base type, and include a proper void base value. This is necessary because expressions (free, functions without return value) can yield a void. We now also allow void casts conforming to the C standard. * Various missing lemmas about typing, weakening, decidability, ... * The operations "free" and "alloc" now operate on l-values instead of r-values. This removes some duplication. * Improve notations of expressions and statements. Change the presence of the operators conforming to the C standard. Small changes: * Use the classes "Typed" and "TypeCheck" for validity of indexes in memory. This gives more uniform notations. * New tactic "typed_inversion" performs inversion on an inductive predicate of type "Typed" and folds the premises. * Remove a horrible hack in the definitions of the classes "FMap", "MBind", "OMap", "Alter" that was used to let "simpl" behave better. Instead, we have defined a tactic "csimpl" that folds the results after performing an ordinary "simpl". * Fast operation to remove duplicates from lists using hashsets. * Make various type constructors (mainly finite map implementations) universe polymorphic by packing them into an inductive. This way, the whole C syntax can live in type, avoiding the need for (slow) universe checks.
-