PortingToCoqV8.7 - coq/coq GitHub Wiki
Coq 8.7 has a few incompatibilities with 8.6. We list the main sources of changes
Changes in Coq file
- Change in the representation of constants in library Reals
- Typical consequences:
4
is not any more2*2
,3
is not any more2+1
,-1
is now different from-(1)
- expressions of the form
(-x)%R
hide a non-simplifiable coercionIZR
; they do not simplify anymore; insteadunfold IZR; rewrite <- INR_IPR
auto with real
now solve all inequations between constants (e.g.5<=7
)
- Typical consequences:
- Fix of
rewrite ... in *
Changes in plugin
There are may changes documented in dev/doc/changes.txt
. The one empirically requiring the most updating are the following:
- New level of abstraction
EConstr
, documented indev/doc/econstr.md
. Typical changes to do in plugins:- replacing
open Term
withopen EConstr
- add a
sigma
to various functions now expecting it, e.gdependent
(for old-style goals, get asigma
withTacmach.project
) - replacing
kind_of_term
withkind sigma
- replacing
Constr.equal
withEConstr.eq_constr sigma
- change
pr_lconstr
intopr_leconstr
- change
fold_constr
withfor_constr sigma
- replacing
- Few changes in the representation of
constr_expr
and relatedCLetIn
has now an explicit argument for the optional typeLocalRawAssum
andLocalRawDef
are nowCLocalAssum
andCLocalDef