[isabelle-dev] Theory_Data.extend still needed?

Makarius makarius at sketis.net
Fri Jul 4 13:29:20 CEST 2014


On Sat, 28 Jun 2014, Florian Haftmann wrote:

> grep -rIPn 'val\s+extend\s*=\s*[^I ]' src
> ./Pure/context.ML:554:    val extend = Data.extend;
> 	(which is not relevant since this is the definition of Theory_Data istelf)

There are a few occurences of "fun extend", e.g. in src/Pure/theory.ML.
(Note that the "val" for extend or merge is a canonical source of SML/NJ 
unhappiness.)

Conceptually, the extend operation is a single-armed merge; the 
"implementation" manual also covers it to some extent. It allows data 
slots to participate in the graph structure (although there might be other 
ways to achieve that today, e.g. via theory begin/end hooks).

Actual use of extend is rare and usually somewhat exotic, but also happens 
to be in important kernel modules.  Since there is no true 
counterindication against it, we should keep things as is.


 	Makarius


More information about the isabelle-dev mailing list