src/HOL/Datatype.thy
changeset 47488 be6dd389639d
parent 46950 d0181abdbdac
child 48891 c0eafbd55de3
equal deleted inserted replaced
47487:54a2f155621b 47488:be6dd389639d
    12   ("Tools/Datatype/datatype.ML")
    12   ("Tools/Datatype/datatype.ML")
    13   ("Tools/inductive_realizer.ML")
    13   ("Tools/inductive_realizer.ML")
    14   ("Tools/Datatype/datatype_realizer.ML")
    14   ("Tools/Datatype/datatype_realizer.ML")
    15 begin
    15 begin
    16 
    16 
    17 subsection {* Prelude: lifting over function space *}
       
    18 
       
    19 enriched_type map_fun: map_fun
       
    20   by (simp_all add: fun_eq_iff)
       
    21 
       
    22 
       
    23 subsection {* The datatype universe *}
    17 subsection {* The datatype universe *}
    24 
    18 
    25 definition "Node = {p. EX f x k. p = (f :: nat => 'b + nat, x ::'a + nat) & f k = Inr 0}"
    19 definition "Node = {p. EX f x k. p = (f :: nat => 'b + nat, x ::'a + nat) & f k = Inr 0}"
    26 
    20 
    27 typedef (open) ('a, 'b) node = "Node :: ((nat => 'b + nat) * ('a + nat)) set"
    21 typedef (open) ('a, 'b) node = "Node :: ((nat => 'b + nat) * ('a + nat)) set"
   530 
   524 
   531 use "Tools/Datatype/datatype_realizer.ML"
   525 use "Tools/Datatype/datatype_realizer.ML"
   532 setup Datatype_Realizer.setup
   526 setup Datatype_Realizer.setup
   533 
   527 
   534 end
   528 end
       
   529