Skip to content
Snippets Groups Projects
Commit 10c2f692 authored by Robbert Krebbers's avatar Robbert Krebbers
Browse files

Also support Coq 8.5pl3.

parent e1762d72
No related branches found
No related tags found
No related merge requests found
......@@ -3,6 +3,14 @@ ifeq ($(Y), 1)
YFLAG=-y
endif
# Determine Coq version
COQ_VERSION=$(shell coqc --version | egrep -o 'version 8.[0-9]' | egrep -o '8.[0-9]')
COQ_MAKEFILE_FLAGS ?=
ifeq ($(COQ_VERSION), 8.6)
COQ_MAKEFILE_FLAGS += -arg -w -arg -notation-overridden,-redundant-canonical-projection,-several-object-files
endif
# Forward most targets to Coq makefile (with some trick to make this phony)
%: Makefile.coq phony
+@make -f Makefile.coq $@
......
......@@ -20,7 +20,7 @@ The key features of this library are as follows:
`set_solver` for goals involving set operations.
- It is entirely axiom free.
# History
## History
Coq-std++ has originally been developed by Robbert Krebbers as part of his
formalization of the C programming language in his PhD thesis, called
......@@ -32,7 +32,7 @@ developed by Robbert Krebbers, Ralf Jung, and Jacques Henri-Jourdan.
This version is known to compile with:
- Coq 8.6
- Coq 8.5pl3 and Coq 8.6
## Building Instructions
......
-Q theories stdpp
-arg -w -arg -notation-overridden,-redundant-canonical-projection,-several-object-files
theories/option.v
theories/fin_map_dom.v
theories/bset.v
......
......@@ -792,8 +792,8 @@ Section map_of_to_collection.
Proof.
intros Hinj. assert ( x',
(i, x) f <$> elements Y (i, x') f <$> elements Y x = x').
{ intros x'. intros (y&Hx&?%elem_of_elements)%elem_of_list_fmap.
intros (y'&Hx'&?%elem_of_elements)%elem_of_list_fmap.
{ intros x'. intros (y&Hx&Hy)%elem_of_list_fmap (y'&Hx'&Hy')%elem_of_list_fmap.
rewrite elem_of_elements in Hy, Hy'.
cut (y = y'); [congruence|]. apply Hinj; auto. by rewrite <-Hx, <-Hx'. }
unfold map_of_collection; rewrite <-elem_of_map_of_list' by done.
rewrite elem_of_list_fmap. setoid_rewrite elem_of_elements; naive_solver.
......
......@@ -130,7 +130,7 @@ Definition gmap_curry `{Countable K1, Countable K2} {A} :
map_fold (λ i2 x, <[(i1,i2):=x]>) macc m') ∅.
Definition gmap_uncurry `{Countable K1, Countable K2} {A} :
gmap (K1 * K2) A gmap K1 (gmap K2 A) :=
map_fold (λ '(i1,i2) x,
map_fold (λ ii x, let '(i1,i2) := ii in
partial_alter (Some <[i2:=x]> from_option id ) i1) ∅.
Section curry_uncurry.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment