| 32556 |      1 | 
 | 
|  |      2 | header {* Various examples for transfer procedure *}
 | 
|  |      3 | 
 | 
|  |      4 | theory Transfer_Ex
 | 
|  |      5 | imports Complex_Main
 | 
|  |      6 | begin
 | 
|  |      7 | 
 | 
|  |      8 | (* nat to int *)
 | 
|  |      9 | 
 | 
|  |     10 | lemma ex1: "(x::nat) + y = y + x"
 | 
|  |     11 |   by auto
 | 
|  |     12 | 
 | 
|  |     13 | thm ex1 [transferred]
 | 
|  |     14 | 
 | 
|  |     15 | lemma ex2: "(a::nat) div b * b + a mod b = a"
 | 
|  |     16 |   by (rule mod_div_equality)
 | 
|  |     17 | 
 | 
|  |     18 | thm ex2 [transferred]
 | 
|  |     19 | 
 | 
|  |     20 | lemma ex3: "ALL (x::nat). ALL y. EX z. z >= x + y"
 | 
|  |     21 |   by auto
 | 
|  |     22 | 
 | 
|  |     23 | thm ex3 [transferred natint]
 | 
|  |     24 | 
 | 
|  |     25 | lemma ex4: "(x::nat) >= y \<Longrightarrow> (x - y) + y = x"
 | 
|  |     26 |   by auto
 | 
|  |     27 | 
 | 
|  |     28 | thm ex4 [transferred]
 | 
|  |     29 | 
 | 
|  |     30 | lemma ex5: "(2::nat) * (SUM i <= n. i) = n * (n + 1)"
 | 
|  |     31 |   by (induct n rule: nat_induct, auto)
 | 
|  |     32 | 
 | 
|  |     33 | thm ex5 [transferred]
 | 
|  |     34 | 
 | 
|  |     35 | theorem ex6: "0 <= (n::int) \<Longrightarrow> 2 * \<Sum>{0..n} = n * (n + 1)"
 | 
|  |     36 |   by (rule ex5 [transferred])
 | 
|  |     37 | 
 | 
|  |     38 | thm ex6 [transferred]
 | 
|  |     39 | 
 | 
|  |     40 | thm ex5 [transferred, transferred]
 | 
|  |     41 | 
 | 
|  |     42 | end |