[isabelle-dev] PIDE reports on mixfix annotations (notably for datatype)

Makarius makarius at sketis.net
Tue Apr 12 17:42:53 CEST 2016


Mixfix annotations have gained a more formal status recently, with PIDE 
markup reports that lead to some highlighting and tooltips in the IDE.

In order to make this work cleanly, there needs to be exactly one 
"interning" of the input given by the user. E.g. for the term language 
this is done via Syntax.read_term: input source is turned into a term, so 
the direction is clear from the types. For type mixfix, this is done more 
implicitly: the original source positions are used once for the report and 
then reset via Mixfix.reset_pos; the result can be passed on without 
causing more reports. Omitting Mixfix.reset_pos or using the input several 
times may lead to SPAM in the IDE.


For example, see Proof_Context.read_var which is at the bottom 
of many more term specification packages: 
http://isabelle.in.tum.de/repos/isabelle/annotate/5f5f11ee4d37/src/Pure/Isar/proof_context.ML#l1079

Type notation (e.g. for 'typedecl', 'typedef') is taken care of here:
http://isabelle.in.tum.de/repos/isabelle/annotate/eeea384cafc8/src/Pure/Isar/local_theory.ML#l309

I have already checked some major specifications elements: definition, 
abbreviation, function, inductive, typedecl, typedef.


BNF datatypes are a notable exception. E.g. this example produces 
duplicate "bad" markup about Unicode in mixfix notation:

   datatype foobar ("ä") = Foobar ("ö")

I did not dare to enter that highly complex implementation.

(The reports on the type name could be also reduced to the core 
information.)


 	Makarius


More information about the isabelle-dev mailing list