diff --git a/src/HOL/Codegenerator_Test/Candidates.thy b/src/HOL/Codegenerator_Test/Candidates.thy --- a/src/HOL/Codegenerator_Test/Candidates.thy +++ b/src/HOL/Codegenerator_Test/Candidates.thy @@ -1,70 +1,71 @@ (* Author: Florian Haftmann, TU Muenchen *) section \A huge collection of equations to generate code from\ theory Candidates imports Complex_Main "HOL-Library.Library" "HOL-Library.Sorting_Algorithms" "HOL-Library.Subseq_Order" "HOL-Library.RBT" "HOL-Data_Structures.Tree_Map" "HOL-Data_Structures.Tree_Set" "HOL-Computational_Algebra.Computational_Algebra" "HOL-Computational_Algebra.Polynomial_Factorial" "HOL-Number_Theory.Eratosthenes" "HOL-ex.Records" + "HOL-Word.Word" begin text \Drop technical stuff from \<^theory>\HOL.Quickcheck_Narrowing\ which is tailored towards Haskell\ setup \ fn thy => let val tycos = Sign.logical_types thy; val consts = map_filter (try (curry (Axclass.param_of_inst thy) \<^const_name>\Quickcheck_Narrowing.partial_term_of\)) tycos; in fold Code.declare_unimplemented_global consts thy end \ text \Simple example for the predicate compiler.\ inductive sublist :: "'a list \ 'a list \ bool" where empty: "sublist [] xs" | drop: "sublist ys xs \ sublist ys (x # xs)" | take: "sublist ys xs \ sublist (x # ys) (x # xs)" code_pred sublist . text \Avoid popular infix.\ code_reserved SML upto text \Explicit check in \OCaml\ for correct precedence of let expressions in list expressions\ definition funny_list :: "bool list" where "funny_list = [let b = True in b, False]" definition funny_list' :: "bool list" where "funny_list' = funny_list" lemma [code]: "funny_list' = [True, False]" by (simp add: funny_list_def funny_list'_def) definition check_list :: unit where "check_list = (if funny_list = funny_list' then () else undefined)" text \Explicit check in \Scala\ for correct bracketing of abstractions\ definition funny_funs :: "(bool \ bool) list \ (bool \ bool) list" where "funny_funs fs = (\x. x \ True) # (\x. x \ False) # fs" end