src/HOL/ex/Codegenerator_Rat.thy
author wenzelm
Sun, 03 Jun 2007 23:16:47 +0200
changeset 23219 87ad6e8a5f2c
parent 22845 5f9138bcb3d7
child 23811 b18557301bf9
permissions -rw-r--r--
tuned document;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
22071
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
     1
(*  Title:      HOL/Library/ExecutableRat.thy
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
     2
    ID:         $Id$
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
     3
    Author:     Florian Haftmann, TU Muenchen
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
     4
*)
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
     5
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
     6
header {* Simple example for executable rational numbers *}
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
     7
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
     8
theory Codegenerator_Rat
22803
5129e02f4df2 slightly tuned
haftmann
parents: 22507
diff changeset
     9
imports ExecutableRat EfficientNat
22071
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    10
begin
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    11
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    12
definition
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    13
  foo :: "rat \<Rightarrow> rat \<Rightarrow> rat \<Rightarrow> rat" where
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    14
  "foo r s t = (t + s) / t"
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    15
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    16
definition
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    17
  bar :: "rat \<Rightarrow> rat \<Rightarrow> rat \<Rightarrow> bool" where
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    18
  "bar r s t \<longleftrightarrow> (r - s) \<le> t \<or> (s - t) \<le> r"
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    19
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    20
definition
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    21
  "R1 = Fract 3 7"
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    22
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    23
definition
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    24
  "R2 = Fract (-7) 5"
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    25
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    26
definition
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    27
  "R3 = Fract 11 (-9)"
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    28
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    29
definition
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    30
  "foobar = (foo R1 1 R3, bar R2 0 R3, foo R1 R3 R2)"
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    31
22845
5f9138bcb3d7 changed code generator invocation syntax
haftmann
parents: 22803
diff changeset
    32
code_gen foobar in SML in OCaml file - in Haskell file -
22071
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    33
ML {* ROOT.Codegenerator_Rat.foobar *}
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    34
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    35
code_module Foo
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    36
  contains foobar
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    37
ML {* Foo.foobar *}
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    38
ebcfe7c2499d refined and added example for ExecutableRat
haftmann
parents:
diff changeset
    39
end