src/HOL/Quickcheck_Examples/Quickcheck_Examples.thy
changeset 58310 91ea607a34d8
parent 58148 9764b994a421
child 58813 625d04d4fd2a
equal deleted inserted replaced
58309:a09ec6daaa19 58310:91ea607a34d8
   120   by (induct xs) simp_all
   120   by (induct xs) simp_all
   121 
   121 
   122 
   122 
   123 subsection {* Trees *}
   123 subsection {* Trees *}
   124 
   124 
   125 datatype_new 'a tree = Twig |  Leaf 'a | Branch "'a tree" "'a tree"
   125 datatype 'a tree = Twig |  Leaf 'a | Branch "'a tree" "'a tree"
   126 
   126 
   127 primrec leaves :: "'a tree \<Rightarrow> 'a list" where
   127 primrec leaves :: "'a tree \<Rightarrow> 'a list" where
   128   "leaves Twig = []"
   128   "leaves Twig = []"
   129   | "leaves (Leaf a) = [a]"
   129   | "leaves (Leaf a) = [a]"
   130   | "leaves (Branch l r) = (leaves l) @ (leaves r)"
   130   | "leaves (Branch l r) = (leaves l) @ (leaves r)"
   148   quickcheck[random, expect = counterexample]
   148   quickcheck[random, expect = counterexample]
   149   quickcheck[exhaustive, expect = counterexample]
   149   quickcheck[exhaustive, expect = counterexample]
   150     --{* Wrong! *} 
   150     --{* Wrong! *} 
   151   oops
   151   oops
   152 
   152 
   153 datatype_new 'a ntree = Tip "'a" | Node "'a" "'a ntree" "'a ntree"
   153 datatype 'a ntree = Tip "'a" | Node "'a" "'a ntree" "'a ntree"
   154 
   154 
   155 primrec inOrder :: "'a ntree \<Rightarrow> 'a list" where
   155 primrec inOrder :: "'a ntree \<Rightarrow> 'a list" where
   156   "inOrder (Tip a)= [a]"
   156   "inOrder (Tip a)= [a]"
   157   | "inOrder (Node f x y) = (inOrder x)@[f]@(inOrder y)"
   157   | "inOrder (Node f x y) = (inOrder x)@[f]@(inOrder y)"
   158 
   158 
   437   "xpos r = xpos r' ==> r = r'"
   437   "xpos r = xpos r' ==> r = r'"
   438 quickcheck[exhaustive, expect = counterexample]
   438 quickcheck[exhaustive, expect = counterexample]
   439 quickcheck[random, expect = counterexample]
   439 quickcheck[random, expect = counterexample]
   440 oops
   440 oops
   441 
   441 
   442 datatype_new colour = Red | Green | Blue
   442 datatype colour = Red | Green | Blue
   443 
   443 
   444 record cpoint = point +
   444 record cpoint = point +
   445   colour :: colour
   445   colour :: colour
   446 
   446 
   447 lemma
   447 lemma