author | blanchet |
Thu, 16 Jan 2014 21:22:01 +0100 | |
changeset 55024 | 05cc0dbf3a50 |
parent 54459 | f43ae1afd08a |
child 66453 | cc19f7ca2ed6 |
permissions | -rw-r--r-- |
50138 | 1 |
theory IArray_Examples |
51143
0a2371e7ced3
two target language numeral types: integer and natural, as replacement for code_numeral;
haftmann
parents:
51094
diff
changeset
|
2 |
imports "~~/src/HOL/Library/IArray" "~~/src/HOL/Library/Code_Target_Numeral" |
50138 | 3 |
begin |
4 |
||
5 |
lemma "IArray [True,False] !! 1 = False" |
|
6 |
by eval |
|
7 |
||
8 |
lemma "IArray.length (IArray [[],[]]) = 2" |
|
9 |
by eval |
|
10 |
||
11 |
lemma "IArray.list_of (IArray [1,3::int]) = [1,3]" |
|
12 |
by eval |
|
13 |
||
14 |
lemma "IArray.list_of (IArray.of_fun (%n. n*n) 5) = [0,1,4,9,16]" |
|
15 |
by eval |
|
16 |
||
54459 | 17 |
lemma "\<not> IArray.all (\<lambda>x. x > 2) (IArray [1,3::int])" |
18 |
by eval |
|
19 |
||
20 |
lemma "IArray.exists (\<lambda>x. x > 2) (IArray [1,3::int])" |
|
21 |
by eval |
|
22 |
||
50138 | 23 |
fun sum2 :: "'a::monoid_add iarray \<Rightarrow> nat \<Rightarrow> 'a \<Rightarrow> 'a" where |
24 |
"sum2 A n s = (if n=0 then s else sum2 A (n - 1) (s + A!!(n - 1)))" |
|
25 |
||
26 |
definition sum :: "'a::monoid_add iarray \<Rightarrow> 'a" where |
|
27 |
"sum A = sum2 A (IArray.length A) 0" |
|
28 |
||
29 |
lemma "sum (IArray [1,2,3,4,5,6,7,8,9::int]) = 45" |
|
30 |
by eval |
|
31 |
||
32 |
end |
|
51094
84b03c49c223
IArray ignorant of particular representation of nat
haftmann
parents:
50138
diff
changeset
|
33 |