| author | wenzelm | 
| Sat, 29 Jun 2013 20:25:33 +0200 | |
| changeset 52481 | d977e7eb7839 | 
| parent 52360 | ac7ac2b242a2 | 
| child 58889 | 5b7a9633cfa8 | 
| permissions | -rw-r--r-- | 
| 32556 | 1 | |
| 2 | header {* Various examples for transfer procedure *}
 | |
| 3 | ||
| 4 | theory Transfer_Ex | |
| 52360 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 5 | imports Main Transfer_Int_Nat | 
| 32556 | 6 | begin | 
| 7 | ||
| 8 | lemma ex1: "(x::nat) + y = y + x" | |
| 9 | by auto | |
| 10 | ||
| 42796 
4a8fa4ec0451
removed redundant type annotations and duplicate examples
 krauss parents: 
35685diff
changeset | 11 | lemma "0 \<le> (y\<Colon>int) \<Longrightarrow> 0 \<le> (x\<Colon>int) \<Longrightarrow> x + y = y + x" | 
| 35685 | 12 | by (fact ex1 [transferred]) | 
| 32556 | 13 | |
| 52360 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 14 | (* Using new transfer package *) | 
| 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 15 | lemma "0 \<le> (x\<Colon>int) \<Longrightarrow> 0 \<le> (y\<Colon>int) \<Longrightarrow> x + y = y + x" | 
| 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 16 | by (fact ex1 [untransferred]) | 
| 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 17 | |
| 32556 | 18 | lemma ex2: "(a::nat) div b * b + a mod b = a" | 
| 19 | by (rule mod_div_equality) | |
| 20 | ||
| 42796 
4a8fa4ec0451
removed redundant type annotations and duplicate examples
 krauss parents: 
35685diff
changeset | 21 | lemma "0 \<le> (b\<Colon>int) \<Longrightarrow> 0 \<le> (a\<Colon>int) \<Longrightarrow> a div b * b + a mod b = a" | 
| 35685 | 22 | by (fact ex2 [transferred]) | 
| 32556 | 23 | |
| 52360 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 24 | (* Using new transfer package *) | 
| 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 25 | lemma "0 \<le> (a\<Colon>int) \<Longrightarrow> 0 \<le> (b\<Colon>int) \<Longrightarrow> a div b * b + a mod b = a" | 
| 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 26 | by (fact ex2 [untransferred]) | 
| 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 27 | |
| 32556 | 28 | lemma ex3: "ALL (x::nat). ALL y. EX z. z >= x + y" | 
| 29 | by auto | |
| 30 | ||
| 42796 
4a8fa4ec0451
removed redundant type annotations and duplicate examples
 krauss parents: 
35685diff
changeset | 31 | lemma "\<forall>x\<ge>0\<Colon>int. \<forall>y\<ge>0. \<exists>z\<ge>0. x + y \<le> z" | 
| 35685 | 32 | by (fact ex3 [transferred nat_int]) | 
| 32556 | 33 | |
| 52360 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 34 | (* Using new transfer package *) | 
| 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 35 | lemma "\<forall>x\<Colon>int\<in>{0..}. \<forall>y\<in>{0..}. \<exists>z\<in>{0..}. x + y \<le> z"
 | 
| 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 36 | by (fact ex3 [untransferred]) | 
| 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 37 | |
| 32556 | 38 | lemma ex4: "(x::nat) >= y \<Longrightarrow> (x - y) + y = x" | 
| 39 | by auto | |
| 40 | ||
| 42796 
4a8fa4ec0451
removed redundant type annotations and duplicate examples
 krauss parents: 
35685diff
changeset | 41 | lemma "0 \<le> (x\<Colon>int) \<Longrightarrow> 0 \<le> (y\<Colon>int) \<Longrightarrow> y \<le> x \<Longrightarrow> tsub x y + y = x" | 
| 35685 | 42 | by (fact ex4 [transferred]) | 
| 32556 | 43 | |
| 52360 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 44 | (* Using new transfer package *) | 
| 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 45 | lemma "0 \<le> (y\<Colon>int) \<Longrightarrow> 0 \<le> (x\<Colon>int) \<Longrightarrow> y \<le> x \<Longrightarrow> tsub x y + y = x" | 
| 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 46 | by (fact ex4 [untransferred]) | 
| 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 47 | |
| 35685 | 48 | lemma ex5: "(2::nat) * \<Sum>{..n} = n * (n + 1)"
 | 
| 32556 | 49 | by (induct n rule: nat_induct, auto) | 
| 50 | ||
| 42796 
4a8fa4ec0451
removed redundant type annotations and duplicate examples
 krauss parents: 
35685diff
changeset | 51 | lemma "0 \<le> (n\<Colon>int) \<Longrightarrow> 2 * \<Sum>{0..n} = n * (n + 1)"
 | 
| 35685 | 52 | by (fact ex5 [transferred]) | 
| 53 | ||
| 52360 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 54 | (* Using new transfer package *) | 
| 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 55 | lemma "0 \<le> (n\<Colon>int) \<Longrightarrow> 2 * \<Sum>{0..n} = n * (n + 1)"
 | 
| 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 56 | by (fact ex5 [untransferred]) | 
| 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 57 | |
| 42796 
4a8fa4ec0451
removed redundant type annotations and duplicate examples
 krauss parents: 
35685diff
changeset | 58 | lemma "0 \<le> (n\<Colon>nat) \<Longrightarrow> 2 * \<Sum>{0..n} = n * (n + 1)"
 | 
| 35685 | 59 | by (fact ex5 [transferred, transferred]) | 
| 32556 | 60 | |
| 52360 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 61 | (* Using new transfer package *) | 
| 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 62 | lemma "0 \<le> (n\<Colon>nat) \<Longrightarrow> 2 * \<Sum>{..n} = n * (n + 1)"
 | 
| 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 63 | by (fact ex5 [untransferred, Transfer.transferred]) | 
| 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 64 | |
| 
ac7ac2b242a2
more int/nat transfer rules; examples of new untransferred attribute
 huffman parents: 
42796diff
changeset | 65 | end |