[isabelle-dev] NEWS: undefined ML expression

Makarius makarius at sketis.net
Sun Nov 8 15:36:08 CET 2015


*** ML ***

* Antiquotation @{undefined} or \<^undefined> inlines (raise Match).

(Note that we already have a function called "undefined" for several 
years.)


This refers to Isabelle/53e32a9b66b8.  The idea to allow special shortcuts 
in Isabelle/ML is at least as old as the antiquotation syntax, e.g. see 
@{assert} or @{print}.

The recent introduction of \<^name>cartouche as short form for
@{name cartouche} has been pushed a bit further: \<^name> without 
cartouche argument abbreviates just @{name} (see Isabelle/3591274c607e).
So @{undefined} could be written succinctly as \<^undefined>.

The remaining problem was the Unicode rendering of \<^undefined>. I was 
first thinking of ⬚ (0x2b1a) but now it came out as the somewhat 
undefined ❖ (0x2756), which is a bit more visible in the text

Also note that there is a general side-condition: already assigned 
Isabelle symbols like \<hole> cannot be re-used as control symbols like 
\<^undefined>.


Since these control forms in document or ML source are formal 
antiquotations, the PIDE markup helps users to find out what they actually 
mean. Nonetheless, they need to be used sparingly, or Isabelle/ML could 
degrade into a version of APL.


 	Makarius


More information about the isabelle-dev mailing list