src/HOL/Predicate_Compile_Examples/Code_Prolog_Examples.thy
changeset 58310 91ea607a34d8
parent 58249 180f1b3508ed
child 63167 0909deb8059b
equal deleted inserted replaced
58309:a09ec6daaa19 58310:91ea607a34d8
   105 
   105 
   106 section {* Example symbolic derivation *}
   106 section {* Example symbolic derivation *}
   107 
   107 
   108 hide_const Pow
   108 hide_const Pow
   109 
   109 
   110 datatype_new expr = Log expr | Mult expr expr | Div expr expr | x | Num int | Plus expr expr
   110 datatype expr = Log expr | Mult expr expr | Div expr expr | x | Num int | Plus expr expr
   111   | Minus expr expr | Uminus expr | Pow expr int | Exp expr
   111   | Minus expr expr | Uminus expr | Pow expr int | Exp expr
   112 
   112 
   113 text {*
   113 text {*
   114 
   114 
   115 d(U + V, X, DU + DV) :-
   115 d(U + V, X, DU + DV) :-
   195 values_prolog "{e. log10 e}"
   195 values_prolog "{e. log10 e}"
   196 values_prolog "{e. times10 e}"
   196 values_prolog "{e. times10 e}"
   197 
   197 
   198 section {* Example negation *}
   198 section {* Example negation *}
   199 
   199 
   200 datatype_new abc = A | B | C
   200 datatype abc = A | B | C
   201 
   201 
   202 inductive notB :: "abc => bool"
   202 inductive notB :: "abc => bool"
   203 where
   203 where
   204   "y \<noteq> B \<Longrightarrow> notB y"
   204   "y \<noteq> B \<Longrightarrow> notB y"
   205 
   205