src/HOL/Predicate_Compile_Examples/Code_Prolog_Examples.thy
changeset 38074 31174744b9a2
child 38075 3d5e2b7d1374
equal deleted inserted replaced
38073:64062d56ad3c 38074:31174744b9a2
       
     1 theory Code_Prolog_Examples
       
     2 imports Predicate_Compile_Alternative_Defs
       
     3 uses "~~/src/HOL/Tools/Predicate_Compile/code_prolog.ML"
       
     4 begin
       
     5 
       
     6 section {* Example append *}
       
     7 
       
     8 inductive append
       
     9 where
       
    10   "append [] ys ys"
       
    11 | "append xs ys zs ==> append (x # xs) ys (x # zs)"
       
    12 
       
    13 code_pred append .
       
    14 
       
    15 ML {*
       
    16   tracing (Code_Prolog.write_program (Code_Prolog.generate @{context} [@{const_name append}]))
       
    17 *}
       
    18 
       
    19 ML {*
       
    20   Code_Prolog.run (Code_Prolog.generate @{context} [@{const_name append}]) "append" ["X", "Y", "Z"]
       
    21 *}
       
    22 
       
    23 end