coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Benjamin Pierce <bcpierce AT cis.upenn.edu>
- To: coq-club AT inria.fr
- Subject: [Coq-Club] Curly braces in Coq notations
- Date: Sun, 22 Oct 2023 11:50:58 -0400
- Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None smtp.pra=bcpierce AT cis.upenn.edu; spf=Pass smtp.mailfrom=bcpierce AT seas.upenn.edu; spf=None smtp.helo=postmaster AT mail-oa1-f50.google.com
- Ironport-data: A9a23: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
- Ironport-hdrordr: A9a23:fUjmM64cPhbOe6WipAPXwUKBI+orL9Y04lQ7vn2ZFiY5TiXIra qTdaogviMc0AxhI03Jmbi7Scq9qADnhORICOgqTP+ftWzd1FdAQ7sSircKrweAJ8S6zJ8k6U 4CSdk0NDSTNykdsS+S2mDRfLgdKZu8gdmVbIzlvhVQpHRRGsVdBnBCe2Om+yNNJDVuNN4cLt 6x98BHrz2vdTA8dcKgHEQIWODFupniiI/mSQRuPW9r1CC+yReTrJLqGRmR2RkTFxlVx605zG TDmwvloo2+rvCAzAPG3WO71eUbpDKh8KoNOCW/sLlVFtzesHfpWG2nYczAgNkBmpDg1L/tqq iPn/5vBbU315qbRBDJnfKk4Xid7N9p0Q6p9bbQuwqdneXpAD09EMZPnoRfb1/Q7Fchpsh11O ZR03uerIc/N2K2oM3R3am8a/hRrDvBnVMy1eoIy3BPW4oXb7Fc6YQZ4UNOCZ8FWCb38pouHu ViBNzVoK8+SyLSU1nJ+m10hNC8VHU6GRmLBkAEp8yOyjBT2HR01VERysATlmoJsJg9V55H7e LZNbkArsA5cuYGKaZmQOsRS8q+DWLABRrKLWKJOFziULoKPnrcwqSHkondJNvaC6Dg4KFC6K gpCmkoy1LaU3ieePGz4A==
- Ironport-phdr: A9a23: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
- Ironport-sdr: 65354509_rk2CqcMbVh/DzjWMUsok/ralwvNc/UQ3RHz5tCDFu7R5TZV vnBKETVfCsaKVxeoxxzsfBf1AJqDpCEUG0UTc3w==
Dear Coq folk,
<{ c }>
for bare Imp commands and
{{P}} c {{Q}}
for Hoare triples. I'd like to change the latter to
<{ {P} c {Q} }>
but this doesn't appear to work, as the simple experiment below shows. Indeed, it appears that the curly braces are actually the problem (replacing them with parens gives the result I expected).
Many thanks for any insight or advice,
- Benjamin
From Coq Require Import Strings.String. Import String.
Declare Custom Entry foo.
Declare Scope foo_scope.
Open Scope foo_scope.
Notation "*" :=
"*"%string (in custom foo)
: foo_scope.
(* Defining a "hoare triple like" notation with parens works: *)
Notation "<{ ( P ) e ( Q ) }>" :=
("<{ (" ++ P ++ ") " ++ e ++ " (" ++ Q ++ ") }>")%string
(e custom foo,
P custom foo,
Q custom foo) : foo_scope.
Compute ( <{ ( * ) * ( * ) }> ).
(* But doing the same thing with curly braces does not: *)
Notation "<{ { P } e { Q } }>" :=
("<{ {" ++ P ++ "} " ++ e ++ " {" ++ Q ++ "} }>")%string
(e custom foo,
P custom foo,
Q custom foo) : foo_scope.
(* Syntax error here: *)
Compute ( <{ { * } * { * } }> ).
- [Coq-Club] Curly braces in Coq notations, Benjamin Pierce, 10/22/2023
- Re: [Coq-Club] Curly braces in Coq notations, Gaëtan Gilbert, 10/22/2023
- Re: [Coq-Club] Curly braces in Coq notations, Benjamin Pierce, 10/22/2023
- Re: [Coq-Club] Curly braces in Coq notations, Hugo Herbelin, 10/23/2023
- Re: [Coq-Club] Curly braces in Coq notations, Hugo Herbelin, 10/23/2023
- Re: [Coq-Club] Curly braces in Coq notations, Benjamin Pierce, 10/23/2023
- Re: [Coq-Club] Curly braces in Coq notations, Hugo Herbelin, 10/23/2023
- Re: [Coq-Club] Curly braces in Coq notations, Hugo Herbelin, 10/23/2023
- Re: [Coq-Club] Curly braces in Coq notations, Benjamin Pierce, 10/22/2023
- Re: [Coq-Club] Curly braces in Coq notations, Gaëtan Gilbert, 10/22/2023
Archive powered by MHonArc 2.6.19+.