Sugar in the front end + Coq pretty printing
This MR introduces several changes intended to make RefinedC more user-friendly.
The first change concern the syntax of constraints in annotations. The following is now allowed:
-
own l : ty
(previously writtenl @ &own<ty>
), -
shr l : ty
(previously writtenl @ &shr<ty>
), -
frac β l : ty
(previously writtenl @ &frac<β, ty>
). - The old notation has been removed.
The second change is some renaming around singleton types and layouts:
-
singleton_val
is now calledvalue
, -
singleton_place
is now calledplace
, -
LPtr
is now calledvoid_ptr
and has notationvoid*
, -
LVoid
is now calledvoid_layout
. - Additionally, the front end now accepts
void*
as an identifier.
The last change introduces a new Coq scope called printing_sugar
that is only opened at the beginning of proofs in generated proof files. It defines printing notations intended at making the output of the tool closer to the syntax of the front end. In particular it defines the following notations:
-
own l : ty
,shr l : ty
,frac {β} l : ty
, -
uninit<ly>
,value<ly, v>
,place<l>
,&own<ty>
, ... - for each user-defined types an associated printing sugar is defined automatically.
Edited by Rodolphe Lepigre