Commit 10c2f692 authored by Robbert Krebbers's avatar Robbert Krebbers

Also support Coq 8.5pl3.

parent e1762d72
Pipeline #3833 passed with stage
in 3 minutes and 31 seconds
......@@ -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.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment