[isabelle-dev] sets and code generation

Lukas Bulwahn bulwahn at in.tum.de
Wed Mar 21 09:05:42 CET 2012

On 03/21/2012 08:36 AM, Christian Sternagel wrote:
> Hi there,
> since set is a proper type some code equations that used to work, no 
> longer do, e.g.,
> "op |> = {(x, y). supt_impl x y}"
> as a code equation leads to an error stating that terms (x and y are 
> first-order terms) do not support the enum class. Since the possible 
> terms (using strings as function symbols and variables) cannot be 
> enumerated in a (finite) list, I can also not introduce an enum instance.

Introducing 'a set as a type constructor now allows us to refine the set 
operations to operations on lists (by Florian's way of data refinement 
for code generation).
However, this now disallows the execution of "op |>" on the type "... 
set". To execute this, you have to move this specification to predicates 
('a => bool):

Define "op |> = (%(x, y). supt_impl x y)"


More information about the isabelle-dev mailing list