src/HOL/Library/ExecutableRat.thy
changeset 21911 e29bcab0c81c
parent 21545 54cc492d80a9
child 22067 39d5d42116c4
equal deleted inserted replaced
21910:5b553ed23251 21911:e29bcab0c81c
   103 section {* code names *}
   103 section {* code names *}
   104 
   104 
   105 code_modulename SML
   105 code_modulename SML
   106   ExecutableRat Rational
   106   ExecutableRat Rational
   107 
   107 
       
   108 code_modulename OCaml
       
   109   ExecutableRat Rational
       
   110 
   108 
   111 
   109 section {* rat as abstype *}
   112 section {* rat as abstype *}
   110 
   113 
   111 lemma [code func]: -- {* prevents eq constraint *}
   114 lemma [code func]: -- {* prevents eq constraint *}
   112   shows "All = All"
   115   shows "All = All"
   122   "inverse \<Colon> rat \<Rightarrow> rat" \<equiv> "inverse \<Colon> erat \<Rightarrow> erat"
   125   "inverse \<Colon> rat \<Rightarrow> rat" \<equiv> "inverse \<Colon> erat \<Rightarrow> erat"
   123   "op \<le> \<Colon> rat \<Rightarrow> rat \<Rightarrow> bool" \<equiv>  "op \<le> \<Colon> erat \<Rightarrow> erat \<Rightarrow> bool"
   126   "op \<le> \<Colon> rat \<Rightarrow> rat \<Rightarrow> bool" \<equiv>  "op \<le> \<Colon> erat \<Rightarrow> erat \<Rightarrow> bool"
   124   "op = \<Colon> rat \<Rightarrow> rat \<Rightarrow> bool" \<equiv> eq_erat
   127   "op = \<Colon> rat \<Rightarrow> rat \<Rightarrow> bool" \<equiv> eq_erat
   125 
   128 
   126 code_const div_zero
   129 code_const div_zero
   127   (SML "raise/ (Fail/ \"Division by zero\")")
   130   (SML "raise/ Fail/ \"Division by zero\"")
       
   131   (OCaml "failwith \"Division by zero\"")
   128   (Haskell "error/ \"Division by zero\"")
   132   (Haskell "error/ \"Division by zero\"")
   129 
   133 
   130 code_gen
   134 code_gen
   131   Fract
   135   Fract
   132   "0 \<Colon> rat"
   136   "0 \<Colon> rat"