| author | huffman |
| Fri, 30 Mar 2012 14:27:29 +0200 | |
| changeset 47223 | 4fc34c628474 |
| parent 46787 | 3d3d8f8929a7 |
| permissions | -rw-r--r-- |
| 15647 | 1 |
(* AUTOMATICALLY GENERATED, DO NOT EDIT! *) |
2 |
||
| 17566 | 3 |
theory HOL4Vec imports HOL4Base begin |
| 14516 | 4 |
|
|
46787
3d3d8f8929a7
file system structure separating HOL4 and HOL Light concerns
haftmann
parents:
46780
diff
changeset
|
5 |
setup_theory "~~/src/HOL/Import/HOL4/Generated" res_quan |
| 14516 | 6 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
7 |
lemma RES_FORALL_CONJ_DIST: "RES_FORALL P (%i. Q i & R i) = (RES_FORALL P Q & RES_FORALL P R)" |
| 14516 | 8 |
by (import res_quan RES_FORALL_CONJ_DIST) |
9 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
10 |
lemma RES_FORALL_DISJ_DIST: "RES_FORALL (%j. P j | Q j) R = (RES_FORALL P R & RES_FORALL Q R)" |
| 14516 | 11 |
by (import res_quan RES_FORALL_DISJ_DIST) |
12 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
13 |
lemma RES_FORALL_UNIQUE: "RES_FORALL (op = xa) x = x xa" |
| 14516 | 14 |
by (import res_quan RES_FORALL_UNIQUE) |
15 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
16 |
lemma RES_FORALL_FORALL: "(ALL x::'b. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
17 |
RES_FORALL (P::'a => bool) (%i::'a. (R::'a => 'b => bool) i x)) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
18 |
RES_FORALL P (%i::'a. All (R i))" |
| 14516 | 19 |
by (import res_quan RES_FORALL_FORALL) |
20 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
21 |
lemma RES_FORALL_REORDER: "RES_FORALL P (%i. RES_FORALL Q (R i)) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
22 |
RES_FORALL Q (%j. RES_FORALL P (%i. R i j))" |
| 14516 | 23 |
by (import res_quan RES_FORALL_REORDER) |
24 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
25 |
lemma RES_FORALL_EMPTY: "RES_FORALL EMPTY x" |
| 14516 | 26 |
by (import res_quan RES_FORALL_EMPTY) |
27 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
28 |
lemma RES_FORALL_UNIV: "RES_FORALL pred_set.UNIV p = All p" |
| 14516 | 29 |
by (import res_quan RES_FORALL_UNIV) |
30 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
31 |
lemma RES_FORALL_NULL: "RES_FORALL p (%x. m) = (p = EMPTY | m)" |
| 14516 | 32 |
by (import res_quan RES_FORALL_NULL) |
33 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
34 |
lemma RES_EXISTS_DISJ_DIST: "RES_EXISTS P (%i. Q i | R i) = (RES_EXISTS P Q | RES_EXISTS P R)" |
| 14516 | 35 |
by (import res_quan RES_EXISTS_DISJ_DIST) |
36 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
37 |
lemma RES_DISJ_EXISTS_DIST: "RES_EXISTS (%i. P i | Q i) R = (RES_EXISTS P R | RES_EXISTS Q R)" |
| 14516 | 38 |
by (import res_quan RES_DISJ_EXISTS_DIST) |
39 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
40 |
lemma RES_EXISTS_EQUAL: "RES_EXISTS (op = xa) x = x xa" |
| 14516 | 41 |
by (import res_quan RES_EXISTS_EQUAL) |
42 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
43 |
lemma RES_EXISTS_REORDER: "RES_EXISTS P (%i. RES_EXISTS Q (R i)) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
44 |
RES_EXISTS Q (%j. RES_EXISTS P (%i. R i j))" |
| 14516 | 45 |
by (import res_quan RES_EXISTS_REORDER) |
46 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
47 |
lemma RES_EXISTS_EMPTY: "~ RES_EXISTS EMPTY p" |
| 14516 | 48 |
by (import res_quan RES_EXISTS_EMPTY) |
49 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
50 |
lemma RES_EXISTS_UNIV: "RES_EXISTS pred_set.UNIV p = Ex p" |
| 14516 | 51 |
by (import res_quan RES_EXISTS_UNIV) |
52 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
53 |
lemma RES_EXISTS_NULL: "RES_EXISTS p (%x. m) = (p ~= EMPTY & m)" |
| 14516 | 54 |
by (import res_quan RES_EXISTS_NULL) |
55 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
56 |
lemma RES_EXISTS_ALT: "RES_EXISTS p m = (IN (RES_SELECT p m) p & m (RES_SELECT p m))" |
| 14516 | 57 |
by (import res_quan RES_EXISTS_ALT) |
58 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
59 |
lemma RES_EXISTS_UNIQUE_EMPTY: "~ RES_EXISTS_UNIQUE EMPTY p" |
| 14516 | 60 |
by (import res_quan RES_EXISTS_UNIQUE_EMPTY) |
61 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
62 |
lemma RES_EXISTS_UNIQUE_UNIV: "RES_EXISTS_UNIQUE pred_set.UNIV p = Ex1 p" |
| 14516 | 63 |
by (import res_quan RES_EXISTS_UNIQUE_UNIV) |
64 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
65 |
lemma RES_EXISTS_UNIQUE_NULL: "RES_EXISTS_UNIQUE p (%x. m) = ((EX x. p = INSERT x EMPTY) & m)" |
| 14516 | 66 |
by (import res_quan RES_EXISTS_UNIQUE_NULL) |
67 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
68 |
lemma RES_EXISTS_UNIQUE_ALT: "RES_EXISTS_UNIQUE p m = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
69 |
RES_EXISTS p (%x. m x & RES_FORALL p (%y. m y --> y = x))" |
| 14516 | 70 |
by (import res_quan RES_EXISTS_UNIQUE_ALT) |
71 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
72 |
lemma RES_SELECT_EMPTY: "RES_SELECT EMPTY p = (SOME x. False)" |
| 14516 | 73 |
by (import res_quan RES_SELECT_EMPTY) |
74 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
75 |
lemma RES_SELECT_UNIV: "RES_SELECT pred_set.UNIV p = Eps p" |
| 14516 | 76 |
by (import res_quan RES_SELECT_UNIV) |
77 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
78 |
lemma RES_ABSTRACT: "IN x p ==> RES_ABSTRACT p m x = m x" |
| 14516 | 79 |
by (import res_quan RES_ABSTRACT) |
80 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
81 |
lemma RES_ABSTRACT_EQUAL: "(!!x. IN x p ==> m1 x = m2 x) ==> RES_ABSTRACT p m1 = RES_ABSTRACT p m2" |
| 14516 | 82 |
by (import res_quan RES_ABSTRACT_EQUAL) |
83 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
84 |
lemma RES_ABSTRACT_IDEMPOT: "RES_ABSTRACT p (RES_ABSTRACT p m) = RES_ABSTRACT p m" |
| 14516 | 85 |
by (import res_quan RES_ABSTRACT_IDEMPOT) |
86 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
87 |
lemma RES_ABSTRACT_EQUAL_EQ: "(RES_ABSTRACT p m1 = RES_ABSTRACT p m2) = (ALL x. IN x p --> m1 x = m2 x)" |
| 14516 | 88 |
by (import res_quan RES_ABSTRACT_EQUAL_EQ) |
89 |
||
90 |
;end_setup |
|
91 |
||
|
46787
3d3d8f8929a7
file system structure separating HOL4 and HOL Light concerns
haftmann
parents:
46780
diff
changeset
|
92 |
setup_theory "~~/src/HOL/Import/HOL4/Generated" word_base |
| 14516 | 93 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
94 |
typedef (open) ('a) word = "{x. ALL word.
|
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
95 |
(ALL a0. (EX a. a0 = CONSTR 0 a (%n. BOTTOM)) --> word a0) --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
96 |
word x} :: ('a::type list recspace set)"
|
| 14516 | 97 |
by (rule typedef_helper,import word_base word_TY_DEF) |
98 |
||
99 |
lemmas word_TY_DEF = typedef_hol2hol4 [OF type_definition_word] |
|
100 |
||
101 |
consts |
|
| 17652 | 102 |
mk_word :: "'a list recspace => 'a word" |
103 |
dest_word :: "'a word => 'a list recspace" |
|
| 14516 | 104 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
105 |
specification (dest_word mk_word) word_repfns: "(ALL a::'a word. mk_word (dest_word a) = a) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
106 |
(ALL r::'a list recspace. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
107 |
(ALL word::'a list recspace => bool. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
108 |
(ALL a0::'a list recspace. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
109 |
(EX a::'a list. a0 = CONSTR (0::nat) a (%n::nat. BOTTOM)) --> |
| 14516 | 110 |
word a0) --> |
111 |
word r) = |
|
112 |
(dest_word (mk_word r) = r))" |
|
113 |
by (import word_base word_repfns) |
|
114 |
||
115 |
consts |
|
| 17652 | 116 |
word_base0 :: "'a list => 'a word" |
| 14516 | 117 |
|
118 |
defs |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
119 |
word_base0_primdef: "word_base0 == %a. mk_word (CONSTR 0 a (%n. BOTTOM))" |
| 14516 | 120 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
121 |
lemma word_base0_def: "word_base0 = (%a. mk_word (CONSTR 0 a (%n. BOTTOM)))" |
| 14516 | 122 |
by (import word_base word_base0_def) |
123 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
124 |
definition |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
125 |
WORD :: "'a list => 'a word" where |
| 14516 | 126 |
"WORD == word_base0" |
127 |
||
128 |
lemma WORD: "WORD = word_base0" |
|
129 |
by (import word_base WORD) |
|
130 |
||
131 |
consts |
|
| 17652 | 132 |
word_case :: "('a list => 'b) => 'a word => 'b"
|
| 14516 | 133 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
134 |
specification (word_case_primdef: word_case) word_case_def: "ALL f a. word_base.word_case f (WORD a) = f a" |
| 14516 | 135 |
by (import word_base word_case_def) |
136 |
||
137 |
consts |
|
| 17652 | 138 |
word_size :: "('a => nat) => 'a word => nat"
|
| 14516 | 139 |
|
|
46787
3d3d8f8929a7
file system structure separating HOL4 and HOL Light concerns
haftmann
parents:
46780
diff
changeset
|
140 |
specification (word_size_primdef: word_size) word_size_def: "ALL f a. word_base.word_size f (WORD a) = 1 + Compatibility.list_size f a" |
| 14516 | 141 |
by (import word_base word_size_def) |
142 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
143 |
lemma word_11: "(WORD a = WORD a') = (a = a')" |
| 14516 | 144 |
by (import word_base word_11) |
145 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
146 |
lemma word_case_cong: "M = M' & (ALL a. M' = WORD a --> f a = f' a) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
147 |
==> word_base.word_case f M = word_base.word_case f' M'" |
| 14516 | 148 |
by (import word_base word_case_cong) |
149 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
150 |
lemma word_nchotomy: "EX l. x = WORD l" |
| 14516 | 151 |
by (import word_base word_nchotomy) |
152 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
153 |
lemma word_Axiom: "EX fn. ALL a. fn (WORD a) = f a" |
| 14516 | 154 |
by (import word_base word_Axiom) |
155 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
156 |
lemma word_induction: "(!!a. P (WORD a)) ==> P x" |
| 14516 | 157 |
by (import word_base word_induction) |
158 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
159 |
lemma word_Ax: "EX fn. ALL a. fn (WORD a) = f a" |
| 14516 | 160 |
by (import word_base word_Ax) |
161 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
162 |
lemma WORD_11: "(WORD x = WORD xa) = (x = xa)" |
| 14516 | 163 |
by (import word_base WORD_11) |
164 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
165 |
lemma word_induct: "(!!l. x (WORD l)) ==> x xa" |
| 14516 | 166 |
by (import word_base word_induct) |
167 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
168 |
lemma word_cases: "EX l. x = WORD l" |
| 14516 | 169 |
by (import word_base word_cases) |
170 |
||
171 |
consts |
|
| 17652 | 172 |
WORDLEN :: "'a word => nat" |
| 14516 | 173 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
174 |
specification (WORDLEN) WORDLEN_DEF: "ALL l. WORDLEN (WORD l) = length l" |
| 14516 | 175 |
by (import word_base WORDLEN_DEF) |
176 |
||
177 |
consts |
|
| 17652 | 178 |
PWORDLEN :: "nat => 'a word => bool" |
| 14516 | 179 |
|
180 |
defs |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
181 |
PWORDLEN_primdef: "PWORDLEN == %n. GSPEC (%w. (w, WORDLEN w = n))" |
| 14516 | 182 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
183 |
lemma PWORDLEN_def: "PWORDLEN n = GSPEC (%w. (w, WORDLEN w = n))" |
| 14516 | 184 |
by (import word_base PWORDLEN_def) |
185 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
186 |
lemma IN_PWORDLEN: "IN (WORD l) (PWORDLEN n) = (length l = n)" |
| 14516 | 187 |
by (import word_base IN_PWORDLEN) |
188 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
189 |
lemma PWORDLEN: "IN w (PWORDLEN n) = (WORDLEN w = n)" |
| 14516 | 190 |
by (import word_base PWORDLEN) |
191 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
192 |
lemma PWORDLEN0: "IN w (PWORDLEN 0) ==> w = WORD []" |
| 14516 | 193 |
by (import word_base PWORDLEN0) |
194 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
195 |
lemma PWORDLEN1: "IN (WORD [x]) (PWORDLEN 1)" |
| 14516 | 196 |
by (import word_base PWORDLEN1) |
197 |
||
198 |
consts |
|
| 17652 | 199 |
WSEG :: "nat => nat => 'a word => 'a word" |
| 14516 | 200 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
201 |
specification (WSEG) WSEG_DEF: "ALL m k l. WSEG m k (WORD l) = WORD (LASTN m (BUTLASTN k l))" |
| 14516 | 202 |
by (import word_base WSEG_DEF) |
203 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
204 |
lemma WSEG0: "WSEG 0 k w = WORD []" |
| 14516 | 205 |
by (import word_base WSEG0) |
206 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
207 |
lemma WSEG_PWORDLEN: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
208 |
(%w. ALL m k. m + k <= n --> IN (WSEG m k w) (PWORDLEN m))" |
| 14516 | 209 |
by (import word_base WSEG_PWORDLEN) |
210 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
211 |
lemma WSEG_WORDLEN: "RES_FORALL (PWORDLEN x) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
212 |
(%xa. ALL xb xc. xb + xc <= x --> WORDLEN (WSEG xb xc xa) = xb)" |
| 14516 | 213 |
by (import word_base WSEG_WORDLEN) |
214 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
215 |
lemma WSEG_WORD_LENGTH: "RES_FORALL (PWORDLEN n) (%w. WSEG n 0 w = w)" |
| 14516 | 216 |
by (import word_base WSEG_WORD_LENGTH) |
217 |
||
218 |
consts |
|
| 17652 | 219 |
bit :: "nat => 'a word => 'a" |
| 14516 | 220 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
221 |
specification (bit) BIT_DEF: "ALL k l. bit k (WORD l) = ELL k l" |
| 14516 | 222 |
by (import word_base BIT_DEF) |
223 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
224 |
lemma BIT0: "bit 0 (WORD [x]) = x" |
| 14516 | 225 |
by (import word_base BIT0) |
226 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
227 |
lemma WSEG_BIT: "RES_FORALL (PWORDLEN n) (%w. ALL k<n. WSEG 1 k w = WORD [bit k w])" |
| 14516 | 228 |
by (import word_base WSEG_BIT) |
229 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
230 |
lemma BIT_WSEG: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
231 |
(%w. ALL m k j. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
232 |
m + k <= n --> j < m --> bit j (WSEG m k w) = bit (j + k) w)" |
| 14516 | 233 |
by (import word_base BIT_WSEG) |
234 |
||
235 |
consts |
|
| 17652 | 236 |
MSB :: "'a word => 'a" |
| 14516 | 237 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
238 |
specification (MSB) MSB_DEF: "ALL l. MSB (WORD l) = hd l" |
| 14516 | 239 |
by (import word_base MSB_DEF) |
240 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
241 |
lemma MSB: "RES_FORALL (PWORDLEN n) (%w. 0 < n --> MSB w = bit (PRE n) w)" |
| 14516 | 242 |
by (import word_base MSB) |
243 |
||
244 |
consts |
|
| 17652 | 245 |
LSB :: "'a word => 'a" |
| 14516 | 246 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
247 |
specification (LSB) LSB_DEF: "ALL l. LSB (WORD l) = last l" |
| 14516 | 248 |
by (import word_base LSB_DEF) |
249 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
250 |
lemma LSB: "RES_FORALL (PWORDLEN n) (%w. 0 < n --> LSB w = bit 0 w)" |
| 14516 | 251 |
by (import word_base LSB) |
252 |
||
253 |
consts |
|
| 17652 | 254 |
WSPLIT :: "nat => 'a word => 'a word * 'a word" |
| 14516 | 255 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
256 |
specification (WSPLIT) WSPLIT_DEF: "ALL m l. WSPLIT m (WORD l) = (WORD (BUTLASTN m l), WORD (LASTN m l))" |
| 14516 | 257 |
by (import word_base WSPLIT_DEF) |
258 |
||
259 |
consts |
|
| 17652 | 260 |
WCAT :: "'a word * 'a word => 'a word" |
| 14516 | 261 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
262 |
specification (WCAT) WCAT_DEF: "ALL l1 l2. WCAT (WORD l1, WORD l2) = WORD (l1 @ l2)" |
| 14516 | 263 |
by (import word_base WCAT_DEF) |
264 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
265 |
lemma WORD_PARTITION: "(ALL n::nat. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
266 |
RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
267 |
(%w::'a word. ALL m<=n. WCAT (WSPLIT m w) = w)) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
268 |
(ALL (n::nat) m::nat. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
269 |
RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
270 |
(%w1::'a word. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
271 |
RES_FORALL (PWORDLEN m) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
272 |
(%w2::'a word. WSPLIT m (WCAT (w1, w2)) = (w1, w2))))" |
| 14516 | 273 |
by (import word_base WORD_PARTITION) |
274 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
275 |
lemma WCAT_ASSOC: "WCAT (w1, WCAT (w2, w3)) = WCAT (WCAT (w1, w2), w3)" |
| 14516 | 276 |
by (import word_base WCAT_ASSOC) |
277 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
278 |
lemma WCAT0: "WCAT (WORD [], w) = w & WCAT (w, WORD []) = w" |
| 14516 | 279 |
by (import word_base WCAT0) |
280 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
281 |
lemma WCAT_11: "RES_FORALL (PWORDLEN m) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
282 |
(%wm1. RES_FORALL (PWORDLEN m) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
283 |
(%wm2. RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
284 |
(%wn1. RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
285 |
(%wn2. (WCAT (wm1, wn1) = WCAT (wm2, wn2)) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
286 |
(wm1 = wm2 & wn1 = wn2)))))" |
| 14516 | 287 |
by (import word_base WCAT_11) |
288 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
289 |
lemma WSPLIT_PWORDLEN: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
290 |
(%w. ALL m<=n. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
291 |
IN (fst (WSPLIT m w)) (PWORDLEN (n - m)) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
292 |
IN (snd (WSPLIT m w)) (PWORDLEN m))" |
| 14516 | 293 |
by (import word_base WSPLIT_PWORDLEN) |
294 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
295 |
lemma WCAT_PWORDLEN: "RES_FORALL (PWORDLEN n1) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
296 |
(%w1. ALL n2. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
297 |
RES_FORALL (PWORDLEN n2) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
298 |
(%w2. IN (WCAT (w1, w2)) (PWORDLEN (n1 + n2))))" |
| 14516 | 299 |
by (import word_base WCAT_PWORDLEN) |
300 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
301 |
lemma WORDLEN_SUC_WCAT: "IN w (PWORDLEN (Suc n)) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
302 |
==> RES_EXISTS (PWORDLEN 1) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
303 |
(%b. RES_EXISTS (PWORDLEN n) (%w'. w = WCAT (b, w')))" |
| 14516 | 304 |
by (import word_base WORDLEN_SUC_WCAT) |
305 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
306 |
lemma WSEG_WSEG: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
307 |
(%w. ALL m1 k1 m2 k2. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
308 |
m1 + k1 <= n & m2 + k2 <= m1 --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
309 |
WSEG m2 k2 (WSEG m1 k1 w) = WSEG m2 (k1 + k2) w)" |
| 14516 | 310 |
by (import word_base WSEG_WSEG) |
311 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
312 |
lemma WSPLIT_WSEG: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
313 |
(%w. ALL k<=n. WSPLIT k w = (WSEG (n - k) k w, WSEG k 0 w))" |
| 14516 | 314 |
by (import word_base WSPLIT_WSEG) |
315 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
316 |
lemma WSPLIT_WSEG1: "RES_FORALL (PWORDLEN n) (%w. ALL k<=n. fst (WSPLIT k w) = WSEG (n - k) k w)" |
| 14516 | 317 |
by (import word_base WSPLIT_WSEG1) |
318 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
319 |
lemma WSPLIT_WSEG2: "RES_FORALL (PWORDLEN n) (%w. ALL k<=n. snd (WSPLIT k w) = WSEG k 0 w)" |
| 14516 | 320 |
by (import word_base WSPLIT_WSEG2) |
321 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
322 |
lemma WCAT_WSEG_WSEG: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
323 |
(%w. ALL m1 m2 k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
324 |
m1 + (m2 + k) <= n --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
325 |
WCAT (WSEG m2 (m1 + k) w, WSEG m1 k w) = WSEG (m1 + m2) k w)" |
| 14516 | 326 |
by (import word_base WCAT_WSEG_WSEG) |
327 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
328 |
lemma WORD_SPLIT: "RES_FORALL (PWORDLEN (x + xa)) (%w. w = WCAT (WSEG x xa w, WSEG xa 0 w))" |
| 14516 | 329 |
by (import word_base WORD_SPLIT) |
330 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
331 |
lemma WORDLEN_SUC_WCAT_WSEG_WSEG: "RES_FORALL (PWORDLEN (Suc n)) (%w. w = WCAT (WSEG 1 n w, WSEG n 0 w))" |
| 14516 | 332 |
by (import word_base WORDLEN_SUC_WCAT_WSEG_WSEG) |
333 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
334 |
lemma WORDLEN_SUC_WCAT_WSEG_WSEG_RIGHT: "RES_FORALL (PWORDLEN (Suc n)) (%w. w = WCAT (WSEG n 1 w, WSEG 1 0 w))" |
| 14516 | 335 |
by (import word_base WORDLEN_SUC_WCAT_WSEG_WSEG_RIGHT) |
336 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
337 |
lemma WORDLEN_SUC_WCAT_BIT_WSEG: "RES_FORALL (PWORDLEN (Suc n)) (%w. w = WCAT (WORD [bit n w], WSEG n 0 w))" |
| 14516 | 338 |
by (import word_base WORDLEN_SUC_WCAT_BIT_WSEG) |
339 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
340 |
lemma WORDLEN_SUC_WCAT_BIT_WSEG_RIGHT: "RES_FORALL (PWORDLEN (Suc n)) (%w. w = WCAT (WSEG n 1 w, WORD [bit 0 w]))" |
| 14516 | 341 |
by (import word_base WORDLEN_SUC_WCAT_BIT_WSEG_RIGHT) |
342 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
343 |
lemma WSEG_WCAT1: "RES_FORALL (PWORDLEN n1) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
344 |
(%w1. RES_FORALL (PWORDLEN n2) (%w2. WSEG n1 n2 (WCAT (w1, w2)) = w1))" |
| 14516 | 345 |
by (import word_base WSEG_WCAT1) |
346 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
347 |
lemma WSEG_WCAT2: "RES_FORALL (PWORDLEN n1) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
348 |
(%w1. RES_FORALL (PWORDLEN n2) (%w2. WSEG n2 0 (WCAT (w1, w2)) = w2))" |
| 14516 | 349 |
by (import word_base WSEG_WCAT2) |
350 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
351 |
lemma WSEG_SUC: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
352 |
(%w. ALL k m1. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
353 |
k + Suc m1 < n --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
354 |
WSEG (Suc m1) k w = WCAT (WSEG 1 (k + m1) w, WSEG m1 k w))" |
| 14516 | 355 |
by (import word_base WSEG_SUC) |
356 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
357 |
lemma WORD_CONS_WCAT: "WORD (x # l) = WCAT (WORD [x], WORD l)" |
| 14516 | 358 |
by (import word_base WORD_CONS_WCAT) |
359 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
360 |
lemma WORD_SNOC_WCAT: "WORD (SNOC x l) = WCAT (WORD l, WORD [x])" |
| 14516 | 361 |
by (import word_base WORD_SNOC_WCAT) |
362 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
363 |
lemma BIT_WCAT_FST: "RES_FORALL (PWORDLEN n1) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
364 |
(%w1. RES_FORALL (PWORDLEN n2) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
365 |
(%w2. ALL k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
366 |
n2 <= k & k < n1 + n2 --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
367 |
bit k (WCAT (w1, w2)) = bit (k - n2) w1))" |
| 14516 | 368 |
by (import word_base BIT_WCAT_FST) |
369 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
370 |
lemma BIT_WCAT_SND: "RES_FORALL (PWORDLEN n1) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
371 |
(%w1. RES_FORALL (PWORDLEN n2) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
372 |
(%w2. ALL k<n2. bit k (WCAT (w1, w2)) = bit k w2))" |
| 14516 | 373 |
by (import word_base BIT_WCAT_SND) |
374 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
375 |
lemma BIT_WCAT1: "RES_FORALL (PWORDLEN n) (%w. ALL b. bit n (WCAT (WORD [b], w)) = b)" |
| 14516 | 376 |
by (import word_base BIT_WCAT1) |
377 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
378 |
lemma WSEG_WCAT_WSEG1: "RES_FORALL (PWORDLEN n1) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
379 |
(%w1. RES_FORALL (PWORDLEN n2) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
380 |
(%w2. ALL m k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
381 |
m <= n1 & n2 <= k --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
382 |
WSEG m k (WCAT (w1, w2)) = WSEG m (k - n2) w1))" |
| 14516 | 383 |
by (import word_base WSEG_WCAT_WSEG1) |
384 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
385 |
lemma WSEG_WCAT_WSEG2: "RES_FORALL (PWORDLEN n1) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
386 |
(%w1. RES_FORALL (PWORDLEN n2) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
387 |
(%w2. ALL m k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
388 |
m + k <= n2 --> WSEG m k (WCAT (w1, w2)) = WSEG m k w2))" |
| 14516 | 389 |
by (import word_base WSEG_WCAT_WSEG2) |
390 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
391 |
lemma WSEG_WCAT_WSEG: "RES_FORALL (PWORDLEN n1) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
392 |
(%w1. RES_FORALL (PWORDLEN n2) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
393 |
(%w2. ALL m k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
394 |
m + k <= n1 + n2 & k < n2 & n2 <= m + k --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
395 |
WSEG m k (WCAT (w1, w2)) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
396 |
WCAT (WSEG (m + k - n2) 0 w1, WSEG (n2 - k) k w2)))" |
| 14516 | 397 |
by (import word_base WSEG_WCAT_WSEG) |
398 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
399 |
lemma BIT_EQ_IMP_WORD_EQ: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
400 |
(%w1. RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
401 |
(%w2. (ALL k<n. bit k w1 = bit k w2) --> w1 = w2))" |
| 14516 | 402 |
by (import word_base BIT_EQ_IMP_WORD_EQ) |
403 |
||
404 |
;end_setup |
|
405 |
||
|
46787
3d3d8f8929a7
file system structure separating HOL4 and HOL Light concerns
haftmann
parents:
46780
diff
changeset
|
406 |
setup_theory "~~/src/HOL/Import/HOL4/Generated" word_num |
| 14516 | 407 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
408 |
definition |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
409 |
LVAL :: "('a => nat) => nat => 'a list => nat" where
|
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
410 |
"LVAL == %f b. foldl (%e x. b * e + f x) 0" |
| 14516 | 411 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
412 |
lemma LVAL_DEF: "LVAL f b l = foldl (%e x. b * e + f x) 0 l" |
| 14516 | 413 |
by (import word_num LVAL_DEF) |
414 |
||
415 |
consts |
|
| 17652 | 416 |
NVAL :: "('a => nat) => nat => 'a word => nat"
|
| 14516 | 417 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
418 |
specification (NVAL) NVAL_DEF: "ALL f b l. NVAL f b (WORD l) = LVAL f b l" |
| 14516 | 419 |
by (import word_num NVAL_DEF) |
420 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
421 |
lemma LVAL: "(ALL (x::'a => nat) xa::nat. LVAL x xa [] = (0::nat)) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
422 |
(ALL (x::'a list) (xa::'a => nat) (xb::nat) xc::'a. |
| 14516 | 423 |
LVAL xa xb (xc # x) = xa xc * xb ^ length x + LVAL xa xb x)" |
424 |
by (import word_num LVAL) |
|
425 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
426 |
lemma LVAL_SNOC: "LVAL f b (SNOC h l) = LVAL f b l * b + f h" |
| 14516 | 427 |
by (import word_num LVAL_SNOC) |
428 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
429 |
lemma LVAL_MAX: "(!!x. f x < b) ==> LVAL f b l < b ^ length l" |
| 14516 | 430 |
by (import word_num LVAL_MAX) |
431 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
432 |
lemma NVAL_MAX: "(!!x. f x < b) ==> RES_FORALL (PWORDLEN n) (%w. NVAL f b w < b ^ n)" |
| 14516 | 433 |
by (import word_num NVAL_MAX) |
434 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
435 |
lemma NVAL0: "NVAL x xa (WORD []) = 0" |
| 14516 | 436 |
by (import word_num NVAL0) |
437 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
438 |
lemma NVAL1: "NVAL x xa (WORD [xb]) = x xb" |
| 14516 | 439 |
by (import word_num NVAL1) |
440 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
441 |
lemma NVAL_WORDLEN_0: "RES_FORALL (PWORDLEN 0) (%w. ALL fv r. NVAL fv r w = 0)" |
| 14516 | 442 |
by (import word_num NVAL_WORDLEN_0) |
443 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
444 |
lemma NVAL_WCAT1: "NVAL f b (WCAT (w, WORD [x])) = NVAL f b w * b + f x" |
| 14516 | 445 |
by (import word_num NVAL_WCAT1) |
446 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
447 |
lemma NVAL_WCAT2: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
448 |
(%w. ALL f b x. NVAL f b (WCAT (WORD [x], w)) = f x * b ^ n + NVAL f b w)" |
| 14516 | 449 |
by (import word_num NVAL_WCAT2) |
450 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
451 |
lemma NVAL_WCAT: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
452 |
(%w1. RES_FORALL (PWORDLEN m) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
453 |
(%w2. ALL f b. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
454 |
NVAL f b (WCAT (w1, w2)) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
455 |
NVAL f b w1 * b ^ m + NVAL f b w2))" |
| 14516 | 456 |
by (import word_num NVAL_WCAT) |
457 |
||
458 |
consts |
|
| 17652 | 459 |
NLIST :: "nat => (nat => 'a) => nat => nat => 'a list" |
| 14516 | 460 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
461 |
specification (NLIST) NLIST_DEF: "(ALL (frep::nat => 'a) (b::nat) m::nat. NLIST (0::nat) frep b m = []) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
462 |
(ALL (n::nat) (frep::nat => 'a) (b::nat) m::nat. |
| 14516 | 463 |
NLIST (Suc n) frep b m = |
464 |
SNOC (frep (m mod b)) (NLIST n frep b (m div b)))" |
|
465 |
by (import word_num NLIST_DEF) |
|
466 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
467 |
definition |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
468 |
NWORD :: "nat => (nat => 'a) => nat => nat => 'a word" where |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
469 |
"NWORD == %n frep b m. WORD (NLIST n frep b m)" |
| 14516 | 470 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
471 |
lemma NWORD_DEF: "NWORD n frep b m = WORD (NLIST n frep b m)" |
| 14516 | 472 |
by (import word_num NWORD_DEF) |
473 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
474 |
lemma NWORD_LENGTH: "WORDLEN (NWORD x xa xb xc) = x" |
| 14516 | 475 |
by (import word_num NWORD_LENGTH) |
476 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
477 |
lemma NWORD_PWORDLEN: "IN (NWORD x xa xb xc) (PWORDLEN x)" |
| 14516 | 478 |
by (import word_num NWORD_PWORDLEN) |
479 |
||
480 |
;end_setup |
|
481 |
||
|
46787
3d3d8f8929a7
file system structure separating HOL4 and HOL Light concerns
haftmann
parents:
46780
diff
changeset
|
482 |
setup_theory "~~/src/HOL/Import/HOL4/Generated" word_bitop |
| 14516 | 483 |
|
484 |
consts |
|
| 17652 | 485 |
PBITOP :: "('a word => 'b word) => bool"
|
| 14516 | 486 |
|
487 |
defs |
|
488 |
PBITOP_primdef: "PBITOP == |
|
489 |
GSPEC |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
490 |
(%oper. |
| 14516 | 491 |
(oper, |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
492 |
ALL n. |
| 14516 | 493 |
RES_FORALL (PWORDLEN n) |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
494 |
(%w. IN (oper w) (PWORDLEN n) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
495 |
(ALL m k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
496 |
m + k <= n --> oper (WSEG m k w) = WSEG m k (oper w)))))" |
| 14516 | 497 |
|
498 |
lemma PBITOP_def: "PBITOP = |
|
499 |
GSPEC |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
500 |
(%oper. |
| 14516 | 501 |
(oper, |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
502 |
ALL n. |
| 14516 | 503 |
RES_FORALL (PWORDLEN n) |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
504 |
(%w. IN (oper w) (PWORDLEN n) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
505 |
(ALL m k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
506 |
m + k <= n --> oper (WSEG m k w) = WSEG m k (oper w)))))" |
| 14516 | 507 |
by (import word_bitop PBITOP_def) |
508 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
509 |
lemma IN_PBITOP: "IN oper PBITOP = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
510 |
(ALL n. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
511 |
RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
512 |
(%w. IN (oper w) (PWORDLEN n) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
513 |
(ALL m k. m + k <= n --> oper (WSEG m k w) = WSEG m k (oper w))))" |
| 14516 | 514 |
by (import word_bitop IN_PBITOP) |
515 |
||
516 |
lemma PBITOP_PWORDLEN: "RES_FORALL PBITOP |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
517 |
(%oper. ALL n. RES_FORALL (PWORDLEN n) (%w. IN (oper w) (PWORDLEN n)))" |
| 14516 | 518 |
by (import word_bitop PBITOP_PWORDLEN) |
519 |
||
520 |
lemma PBITOP_WSEG: "RES_FORALL PBITOP |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
521 |
(%oper. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
522 |
ALL n. |
| 14516 | 523 |
RES_FORALL (PWORDLEN n) |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
524 |
(%w. ALL m k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
525 |
m + k <= n --> oper (WSEG m k w) = WSEG m k (oper w)))" |
| 14516 | 526 |
by (import word_bitop PBITOP_WSEG) |
527 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
528 |
lemma PBITOP_BIT: "RES_FORALL PBITOP |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
529 |
(%oper. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
530 |
ALL n. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
531 |
RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
532 |
(%w. ALL k<n. oper (WORD [bit k w]) = WORD [bit k (oper w)]))" |
| 14516 | 533 |
by (import word_bitop PBITOP_BIT) |
534 |
||
535 |
consts |
|
| 17652 | 536 |
PBITBOP :: "('a word => 'b word => 'c word) => bool"
|
| 14516 | 537 |
|
538 |
defs |
|
539 |
PBITBOP_primdef: "PBITBOP == |
|
540 |
GSPEC |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
541 |
(%oper. |
| 14516 | 542 |
(oper, |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
543 |
ALL n. |
| 14516 | 544 |
RES_FORALL (PWORDLEN n) |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
545 |
(%w1. RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
546 |
(%w2. IN (oper w1 w2) (PWORDLEN n) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
547 |
(ALL m k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
548 |
m + k <= n --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
549 |
oper (WSEG m k w1) (WSEG m k w2) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
550 |
WSEG m k (oper w1 w2))))))" |
| 14516 | 551 |
|
552 |
lemma PBITBOP_def: "PBITBOP = |
|
553 |
GSPEC |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
554 |
(%oper. |
| 14516 | 555 |
(oper, |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
556 |
ALL n. |
| 14516 | 557 |
RES_FORALL (PWORDLEN n) |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
558 |
(%w1. RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
559 |
(%w2. IN (oper w1 w2) (PWORDLEN n) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
560 |
(ALL m k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
561 |
m + k <= n --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
562 |
oper (WSEG m k w1) (WSEG m k w2) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
563 |
WSEG m k (oper w1 w2))))))" |
| 14516 | 564 |
by (import word_bitop PBITBOP_def) |
565 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
566 |
lemma IN_PBITBOP: "IN oper PBITBOP = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
567 |
(ALL n. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
568 |
RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
569 |
(%w1. RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
570 |
(%w2. IN (oper w1 w2) (PWORDLEN n) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
571 |
(ALL m k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
572 |
m + k <= n --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
573 |
oper (WSEG m k w1) (WSEG m k w2) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
574 |
WSEG m k (oper w1 w2)))))" |
| 14516 | 575 |
by (import word_bitop IN_PBITBOP) |
576 |
||
577 |
lemma PBITBOP_PWORDLEN: "RES_FORALL PBITBOP |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
578 |
(%oper. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
579 |
ALL n. |
| 14516 | 580 |
RES_FORALL (PWORDLEN n) |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
581 |
(%w1. RES_FORALL (PWORDLEN n) (%w2. IN (oper w1 w2) (PWORDLEN n))))" |
| 14516 | 582 |
by (import word_bitop PBITBOP_PWORDLEN) |
583 |
||
584 |
lemma PBITBOP_WSEG: "RES_FORALL PBITBOP |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
585 |
(%oper. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
586 |
ALL n. |
| 14516 | 587 |
RES_FORALL (PWORDLEN n) |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
588 |
(%w1. RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
589 |
(%w2. ALL m k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
590 |
m + k <= n --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
591 |
oper (WSEG m k w1) (WSEG m k w2) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
592 |
WSEG m k (oper w1 w2))))" |
| 14516 | 593 |
by (import word_bitop PBITBOP_WSEG) |
594 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
595 |
lemma PBITBOP_EXISTS: "EX x. ALL l1 l2. x (WORD l1) (WORD l2) = WORD (map2 f l1 l2)" |
| 14516 | 596 |
by (import word_bitop PBITBOP_EXISTS) |
597 |
||
598 |
consts |
|
| 17652 | 599 |
WMAP :: "('a => 'b) => 'a word => 'b word"
|
| 14516 | 600 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
601 |
specification (WMAP) WMAP_DEF: "ALL f l. WMAP f (WORD l) = WORD (map f l)" |
| 14516 | 602 |
by (import word_bitop WMAP_DEF) |
603 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
604 |
lemma WMAP_PWORDLEN: "RES_FORALL (PWORDLEN n) (%w. ALL f. IN (WMAP f w) (PWORDLEN n))" |
| 14516 | 605 |
by (import word_bitop WMAP_PWORDLEN) |
606 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
607 |
lemma WMAP_0: "WMAP (x::'a => 'b) (WORD []) = WORD []" |
| 14516 | 608 |
by (import word_bitop WMAP_0) |
609 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
610 |
lemma WMAP_BIT: "RES_FORALL (PWORDLEN n) (%w. ALL k<n. ALL f. bit k (WMAP f w) = f (bit k w))" |
| 14516 | 611 |
by (import word_bitop WMAP_BIT) |
612 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
613 |
lemma WMAP_WSEG: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
614 |
(%w. ALL m k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
615 |
m + k <= n --> (ALL f. WMAP f (WSEG m k w) = WSEG m k (WMAP f w)))" |
| 14516 | 616 |
by (import word_bitop WMAP_WSEG) |
617 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
618 |
lemma WMAP_PBITOP: "IN (WMAP f) PBITOP" |
| 14516 | 619 |
by (import word_bitop WMAP_PBITOP) |
620 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
621 |
lemma WMAP_WCAT: "WMAP (f::'a => 'b) (WCAT (w1::'a word, w2::'a word)) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
622 |
WCAT (WMAP f w1, WMAP f w2)" |
| 14516 | 623 |
by (import word_bitop WMAP_WCAT) |
624 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
625 |
lemma WMAP_o: "WMAP (g::'b => 'c) (WMAP (f::'a => 'b) (w::'a word)) = WMAP (g o f) w" |
| 14516 | 626 |
by (import word_bitop WMAP_o) |
627 |
||
628 |
consts |
|
| 17652 | 629 |
FORALLBITS :: "('a => bool) => 'a word => bool"
|
| 14516 | 630 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
631 |
specification (FORALLBITS) FORALLBITS_DEF: "ALL P l. FORALLBITS P (WORD l) = list_all P l" |
| 14516 | 632 |
by (import word_bitop FORALLBITS_DEF) |
633 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
634 |
lemma FORALLBITS: "RES_FORALL (PWORDLEN n) (%w. ALL P. FORALLBITS P w = (ALL k<n. P (bit k w)))" |
| 14516 | 635 |
by (import word_bitop FORALLBITS) |
636 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
637 |
lemma FORALLBITS_WSEG: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
638 |
(%w. ALL P. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
639 |
FORALLBITS P w --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
640 |
(ALL m k. m + k <= n --> FORALLBITS P (WSEG m k w)))" |
| 14516 | 641 |
by (import word_bitop FORALLBITS_WSEG) |
642 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
643 |
lemma FORALLBITS_WCAT: "FORALLBITS P (WCAT (w1, w2)) = (FORALLBITS P w1 & FORALLBITS P w2)" |
| 14516 | 644 |
by (import word_bitop FORALLBITS_WCAT) |
645 |
||
646 |
consts |
|
| 17652 | 647 |
EXISTSABIT :: "('a => bool) => 'a word => bool"
|
| 14516 | 648 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
649 |
specification (EXISTSABIT) EXISTSABIT_DEF: "ALL P l. EXISTSABIT P (WORD l) = list_ex P l" |
| 14516 | 650 |
by (import word_bitop EXISTSABIT_DEF) |
651 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
652 |
lemma NOT_EXISTSABIT: "(~ EXISTSABIT P w) = FORALLBITS (Not o P) w" |
| 14516 | 653 |
by (import word_bitop NOT_EXISTSABIT) |
654 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
655 |
lemma NOT_FORALLBITS: "(~ FORALLBITS P w) = EXISTSABIT (Not o P) w" |
| 14516 | 656 |
by (import word_bitop NOT_FORALLBITS) |
657 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
658 |
lemma EXISTSABIT: "RES_FORALL (PWORDLEN n) (%w. ALL P. EXISTSABIT P w = (EX k<n. P (bit k w)))" |
| 14516 | 659 |
by (import word_bitop EXISTSABIT) |
660 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
661 |
lemma EXISTSABIT_WSEG: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
662 |
(%w. ALL m k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
663 |
m + k <= n --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
664 |
(ALL P. EXISTSABIT P (WSEG m k w) --> EXISTSABIT P w))" |
| 14516 | 665 |
by (import word_bitop EXISTSABIT_WSEG) |
666 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
667 |
lemma EXISTSABIT_WCAT: "EXISTSABIT P (WCAT (w1, w2)) = (EXISTSABIT P w1 | EXISTSABIT P w2)" |
| 14516 | 668 |
by (import word_bitop EXISTSABIT_WCAT) |
669 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
670 |
definition |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
671 |
SHR :: "bool => 'a => 'a word => 'a word * 'a" where |
| 14516 | 672 |
"SHR == |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
673 |
%f b w. |
| 14516 | 674 |
(WCAT |
| 17652 | 675 |
(if f then WSEG 1 (PRE (WORDLEN w)) w else WORD [b], |
676 |
WSEG (PRE (WORDLEN w)) 1 w), |
|
677 |
bit 0 w)" |
|
| 14516 | 678 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
679 |
lemma SHR_DEF: "SHR f b w = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
680 |
(WCAT |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
681 |
(if f then WSEG 1 (PRE (WORDLEN w)) w else WORD [b], |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
682 |
WSEG (PRE (WORDLEN w)) 1 w), |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
683 |
bit 0 w)" |
| 14516 | 684 |
by (import word_bitop SHR_DEF) |
685 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
686 |
definition |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
687 |
SHL :: "bool => 'a word => 'a => 'a * 'a word" where |
| 14516 | 688 |
"SHL == |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
689 |
%f w b. |
| 14516 | 690 |
(bit (PRE (WORDLEN w)) w, |
| 17652 | 691 |
WCAT (WSEG (PRE (WORDLEN w)) 0 w, if f then WSEG 1 0 w else WORD [b]))" |
| 14516 | 692 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
693 |
lemma SHL_DEF: "SHL f w b = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
694 |
(bit (PRE (WORDLEN w)) w, |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
695 |
WCAT (WSEG (PRE (WORDLEN w)) 0 w, if f then WSEG 1 0 w else WORD [b]))" |
| 14516 | 696 |
by (import word_bitop SHL_DEF) |
697 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
698 |
lemma SHR_WSEG: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
699 |
(%w. ALL m k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
700 |
m + k <= n --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
701 |
0 < m --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
702 |
(ALL f b. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
703 |
SHR f b (WSEG m k w) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
704 |
(if f |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
705 |
then WCAT (WSEG 1 (k + (m - 1)) w, WSEG (m - 1) (k + 1) w) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
706 |
else WCAT (WORD [b], WSEG (m - 1) (k + 1) w), |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
707 |
bit k w)))" |
| 14516 | 708 |
by (import word_bitop SHR_WSEG) |
709 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
710 |
lemma SHR_WSEG_1F: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
711 |
(%w. ALL b m k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
712 |
m + k <= n --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
713 |
0 < m --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
714 |
SHR False b (WSEG m k w) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
715 |
(WCAT (WORD [b], WSEG (m - 1) (k + 1) w), bit k w))" |
| 14516 | 716 |
by (import word_bitop SHR_WSEG_1F) |
717 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
718 |
lemma SHR_WSEG_NF: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
719 |
(%w. ALL m k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
720 |
m + k < n --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
721 |
0 < m --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
722 |
SHR False (bit (m + k) w) (WSEG m k w) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
723 |
(WSEG m (k + 1) w, bit k w))" |
| 14516 | 724 |
by (import word_bitop SHR_WSEG_NF) |
725 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
726 |
lemma SHL_WSEG: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
727 |
(%w. ALL m k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
728 |
m + k <= n --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
729 |
0 < m --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
730 |
(ALL f b. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
731 |
SHL f (WSEG m k w) b = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
732 |
(bit (k + (m - 1)) w, |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
733 |
if f then WCAT (WSEG (m - 1) k w, WSEG 1 k w) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
734 |
else WCAT (WSEG (m - 1) k w, WORD [b]))))" |
| 14516 | 735 |
by (import word_bitop SHL_WSEG) |
736 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
737 |
lemma SHL_WSEG_1F: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
738 |
(%w. ALL b m k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
739 |
m + k <= n --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
740 |
0 < m --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
741 |
SHL False (WSEG m k w) b = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
742 |
(bit (k + (m - 1)) w, WCAT (WSEG (m - 1) k w, WORD [b])))" |
| 14516 | 743 |
by (import word_bitop SHL_WSEG_1F) |
744 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
745 |
lemma SHL_WSEG_NF: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
746 |
(%w. ALL m k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
747 |
m + k <= n --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
748 |
0 < m --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
749 |
0 < k --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
750 |
SHL False (WSEG m k w) (bit (k - 1) w) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
751 |
(bit (k + (m - 1)) w, WSEG m (k - 1) w))" |
| 14516 | 752 |
by (import word_bitop SHL_WSEG_NF) |
753 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
754 |
lemma WSEG_SHL: "RES_FORALL (PWORDLEN (Suc n)) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
755 |
(%w. ALL m k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
756 |
0 < k & m + k <= Suc n --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
757 |
(ALL b. WSEG m k (snd (SHL f w b)) = WSEG m (k - 1) w))" |
| 14516 | 758 |
by (import word_bitop WSEG_SHL) |
759 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
760 |
lemma WSEG_SHL_0: "RES_FORALL (PWORDLEN (Suc n)) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
761 |
(%w. ALL m b. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
762 |
0 < m & m <= Suc n --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
763 |
WSEG m 0 (snd (SHL f w b)) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
764 |
WCAT (WSEG (m - 1) 0 w, if f then WSEG 1 0 w else WORD [b]))" |
| 14516 | 765 |
by (import word_bitop WSEG_SHL_0) |
766 |
||
767 |
;end_setup |
|
768 |
||
|
46787
3d3d8f8929a7
file system structure separating HOL4 and HOL Light concerns
haftmann
parents:
46780
diff
changeset
|
769 |
setup_theory "~~/src/HOL/Import/HOL4/Generated" bword_num |
| 14516 | 770 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
771 |
definition |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
772 |
BV :: "bool => nat" where |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
773 |
"BV == %b. if b then Suc 0 else 0" |
| 14516 | 774 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
775 |
lemma BV_DEF: "BV b = (if b then Suc 0 else 0)" |
| 14516 | 776 |
by (import bword_num BV_DEF) |
777 |
||
778 |
consts |
|
779 |
BNVAL :: "bool word => nat" |
|
780 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
781 |
specification (BNVAL) BNVAL_DEF: "ALL l. BNVAL (WORD l) = LVAL BV 2 l" |
| 14516 | 782 |
by (import bword_num BNVAL_DEF) |
783 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
784 |
lemma BV_LESS_2: "BV x < 2" |
| 14516 | 785 |
by (import bword_num BV_LESS_2) |
786 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
787 |
lemma BNVAL_NVAL: "BNVAL w = NVAL BV 2 w" |
| 14516 | 788 |
by (import bword_num BNVAL_NVAL) |
789 |
||
| 17652 | 790 |
lemma BNVAL0: "BNVAL (WORD []) = 0" |
| 14516 | 791 |
by (import bword_num BNVAL0) |
792 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
793 |
lemma BNVAL_11: "[| WORDLEN w1 = WORDLEN w2; BNVAL w1 = BNVAL w2 |] ==> w1 = w2" |
| 14516 | 794 |
by (import bword_num BNVAL_11) |
795 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
796 |
lemma BNVAL_ONTO: "Ex (op = (BNVAL w))" |
| 14516 | 797 |
by (import bword_num BNVAL_ONTO) |
798 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
799 |
lemma BNVAL_MAX: "RES_FORALL (PWORDLEN n) (%w. BNVAL w < 2 ^ n)" |
| 14516 | 800 |
by (import bword_num BNVAL_MAX) |
801 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
802 |
lemma BNVAL_WCAT1: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
803 |
(%w. ALL x. BNVAL (WCAT (w, WORD [x])) = BNVAL w * 2 + BV x)" |
| 14516 | 804 |
by (import bword_num BNVAL_WCAT1) |
805 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
806 |
lemma BNVAL_WCAT2: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
807 |
(%w. ALL x. BNVAL (WCAT (WORD [x], w)) = BV x * 2 ^ n + BNVAL w)" |
| 14516 | 808 |
by (import bword_num BNVAL_WCAT2) |
809 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
810 |
lemma BNVAL_WCAT: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
811 |
(%w1. RES_FORALL (PWORDLEN m) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
812 |
(%w2. BNVAL (WCAT (w1, w2)) = BNVAL w1 * 2 ^ m + BNVAL w2))" |
| 14516 | 813 |
by (import bword_num BNVAL_WCAT) |
814 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
815 |
definition |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
816 |
VB :: "nat => bool" where |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
817 |
"VB == %n. n mod 2 ~= 0" |
| 14516 | 818 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
819 |
lemma VB_DEF: "VB n = (n mod 2 ~= 0)" |
| 14516 | 820 |
by (import bword_num VB_DEF) |
821 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
822 |
definition |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
823 |
NBWORD :: "nat => nat => bool word" where |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
824 |
"NBWORD == %n m. WORD (NLIST n VB 2 m)" |
| 14516 | 825 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
826 |
lemma NBWORD_DEF: "NBWORD n m = WORD (NLIST n VB 2 m)" |
| 14516 | 827 |
by (import bword_num NBWORD_DEF) |
828 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
829 |
lemma NBWORD0: "NBWORD 0 x = WORD []" |
| 14516 | 830 |
by (import bword_num NBWORD0) |
831 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
832 |
lemma WORDLEN_NBWORD: "WORDLEN (NBWORD x xa) = x" |
| 14516 | 833 |
by (import bword_num WORDLEN_NBWORD) |
834 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
835 |
lemma PWORDLEN_NBWORD: "IN (NBWORD x xa) (PWORDLEN x)" |
| 14516 | 836 |
by (import bword_num PWORDLEN_NBWORD) |
837 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
838 |
lemma NBWORD_SUC: "NBWORD (Suc n) m = WCAT (NBWORD n (m div 2), WORD [VB (m mod 2)])" |
| 14516 | 839 |
by (import bword_num NBWORD_SUC) |
840 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
841 |
lemma VB_BV: "VB (BV x) = x" |
| 14516 | 842 |
by (import bword_num VB_BV) |
843 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
844 |
lemma BV_VB: "x < 2 ==> BV (VB x) = x" |
| 14516 | 845 |
by (import bword_num BV_VB) |
846 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
847 |
lemma NBWORD_BNVAL: "RES_FORALL (PWORDLEN n) (%w. NBWORD n (BNVAL w) = w)" |
| 14516 | 848 |
by (import bword_num NBWORD_BNVAL) |
849 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
850 |
lemma BNVAL_NBWORD: "m < 2 ^ n ==> BNVAL (NBWORD n m) = m" |
| 14516 | 851 |
by (import bword_num BNVAL_NBWORD) |
852 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
853 |
lemma ZERO_WORD_VAL: "RES_FORALL (PWORDLEN n) (%w. (w = NBWORD n 0) = (BNVAL w = 0))" |
| 14516 | 854 |
by (import bword_num ZERO_WORD_VAL) |
855 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
856 |
lemma WCAT_NBWORD_0: "WCAT (NBWORD n1 0, NBWORD n2 0) = NBWORD (n1 + n2) 0" |
| 14516 | 857 |
by (import bword_num WCAT_NBWORD_0) |
858 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
859 |
lemma WSPLIT_NBWORD_0: "m <= n ==> WSPLIT m (NBWORD n 0) = (NBWORD (n - m) 0, NBWORD m 0)" |
| 14516 | 860 |
by (import bword_num WSPLIT_NBWORD_0) |
861 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
862 |
lemma EQ_NBWORD0_SPLIT: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
863 |
(%w. ALL m<=n. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
864 |
(w = NBWORD n 0) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
865 |
(WSEG (n - m) m w = NBWORD (n - m) 0 & WSEG m 0 w = NBWORD m 0))" |
| 14516 | 866 |
by (import bword_num EQ_NBWORD0_SPLIT) |
867 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
868 |
lemma NBWORD_MOD: "NBWORD n (m mod 2 ^ n) = NBWORD n m" |
| 14516 | 869 |
by (import bword_num NBWORD_MOD) |
870 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
871 |
lemma WSEG_NBWORD_SUC: "WSEG n 0 (NBWORD (Suc n) m) = NBWORD n m" |
| 14516 | 872 |
by (import bword_num WSEG_NBWORD_SUC) |
873 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
874 |
lemma NBWORD_SUC_WSEG: "RES_FORALL (PWORDLEN (Suc n)) (%w. NBWORD n (BNVAL w) = WSEG n 0 w)" |
| 14516 | 875 |
by (import bword_num NBWORD_SUC_WSEG) |
876 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
877 |
lemma DOUBL_EQ_SHL: "0 < x |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
878 |
==> RES_FORALL (PWORDLEN x) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
879 |
(%xa. ALL xb. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
880 |
NBWORD x (BNVAL xa + BNVAL xa + BV xb) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
881 |
snd (SHL False xa xb))" |
| 14516 | 882 |
by (import bword_num DOUBL_EQ_SHL) |
883 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
884 |
lemma MSB_NBWORD: "bit n (NBWORD (Suc n) m) = VB (m div 2 ^ n mod 2)" |
| 14516 | 885 |
by (import bword_num MSB_NBWORD) |
886 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
887 |
lemma NBWORD_SPLIT: "NBWORD (n1 + n2) m = WCAT (NBWORD n1 (m div 2 ^ n2), NBWORD n2 m)" |
| 14516 | 888 |
by (import bword_num NBWORD_SPLIT) |
889 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
890 |
lemma WSEG_NBWORD: "m + k <= n ==> WSEG m k (NBWORD n l) = NBWORD m (l div 2 ^ k)" |
| 14516 | 891 |
by (import bword_num WSEG_NBWORD) |
892 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
893 |
lemma NBWORD_SUC_FST: "NBWORD (Suc n) x = WCAT (WORD [VB (x div 2 ^ n mod 2)], NBWORD n x)" |
| 14516 | 894 |
by (import bword_num NBWORD_SUC_FST) |
895 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
896 |
lemma BIT_NBWORD0: "k < n ==> bit k (NBWORD n 0) = False" |
| 14516 | 897 |
by (import bword_num BIT_NBWORD0) |
898 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
899 |
lemma ADD_BNVAL_LEFT: "RES_FORALL (PWORDLEN (Suc n)) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
900 |
(%w1. RES_FORALL (PWORDLEN (Suc n)) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
901 |
(%w2. BNVAL w1 + BNVAL w2 = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
902 |
(BV (bit n w1) + BV (bit n w2)) * 2 ^ n + |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
903 |
(BNVAL (WSEG n 0 w1) + BNVAL (WSEG n 0 w2))))" |
| 14516 | 904 |
by (import bword_num ADD_BNVAL_LEFT) |
905 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
906 |
lemma ADD_BNVAL_RIGHT: "RES_FORALL (PWORDLEN (Suc n)) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
907 |
(%w1. RES_FORALL (PWORDLEN (Suc n)) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
908 |
(%w2. BNVAL w1 + BNVAL w2 = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
909 |
(BNVAL (WSEG n 1 w1) + BNVAL (WSEG n 1 w2)) * 2 + |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
910 |
(BV (bit 0 w1) + BV (bit 0 w2))))" |
| 14516 | 911 |
by (import bword_num ADD_BNVAL_RIGHT) |
912 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
913 |
lemma ADD_BNVAL_SPLIT: "RES_FORALL (PWORDLEN (n1 + n2)) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
914 |
(%w1. RES_FORALL (PWORDLEN (n1 + n2)) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
915 |
(%w2. BNVAL w1 + BNVAL w2 = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
916 |
(BNVAL (WSEG n1 n2 w1) + BNVAL (WSEG n1 n2 w2)) * 2 ^ n2 + |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
917 |
(BNVAL (WSEG n2 0 w1) + BNVAL (WSEG n2 0 w2))))" |
| 14516 | 918 |
by (import bword_num ADD_BNVAL_SPLIT) |
919 |
||
920 |
;end_setup |
|
921 |
||
|
46787
3d3d8f8929a7
file system structure separating HOL4 and HOL Light concerns
haftmann
parents:
46780
diff
changeset
|
922 |
setup_theory "~~/src/HOL/Import/HOL4/Generated" bword_arith |
| 14516 | 923 |
|
924 |
consts |
|
925 |
ACARRY :: "nat => bool word => bool word => bool => bool" |
|
926 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
927 |
specification (ACARRY) ACARRY_DEF: "(ALL w1 w2 cin. ACARRY 0 w1 w2 cin = cin) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
928 |
(ALL n w1 w2 cin. |
| 14516 | 929 |
ACARRY (Suc n) w1 w2 cin = |
| 17652 | 930 |
VB ((BV (bit n w1) + BV (bit n w2) + BV (ACARRY n w1 w2 cin)) div 2))" |
| 14516 | 931 |
by (import bword_arith ACARRY_DEF) |
932 |
||
933 |
consts |
|
934 |
ICARRY :: "nat => bool word => bool word => bool => bool" |
|
935 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
936 |
specification (ICARRY) ICARRY_DEF: "(ALL w1 w2 cin. ICARRY 0 w1 w2 cin = cin) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
937 |
(ALL n w1 w2 cin. |
| 14516 | 938 |
ICARRY (Suc n) w1 w2 cin = |
939 |
(bit n w1 & bit n w2 | (bit n w1 | bit n w2) & ICARRY n w1 w2 cin))" |
|
940 |
by (import bword_arith ICARRY_DEF) |
|
941 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
942 |
lemma ACARRY_EQ_ICARRY: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
943 |
(%w1. RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
944 |
(%w2. ALL cin k. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
945 |
k <= n --> ACARRY k w1 w2 cin = ICARRY k w1 w2 cin))" |
| 14516 | 946 |
by (import bword_arith ACARRY_EQ_ICARRY) |
947 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
948 |
lemma BNVAL_LESS_EQ: "RES_FORALL (PWORDLEN n) (%w. BNVAL w <= 2 ^ n - 1)" |
| 14516 | 949 |
by (import bword_arith BNVAL_LESS_EQ) |
950 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
951 |
lemma ADD_BNVAL_LESS_EQ1: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
952 |
(%w1. RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
953 |
(%w2. (BNVAL w1 + (BNVAL w2 + BV cin)) div 2 ^ n <= Suc 0))" |
| 14516 | 954 |
by (import bword_arith ADD_BNVAL_LESS_EQ1) |
955 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
956 |
lemma ADD_BV_BNVAL_DIV_LESS_EQ1: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
957 |
(%w1. RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
958 |
(%w2. (BV x1 + BV x2 + |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
959 |
(BNVAL w1 + (BNVAL w2 + BV cin)) div 2 ^ n) div |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
960 |
2 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
961 |
<= 1))" |
| 14516 | 962 |
by (import bword_arith ADD_BV_BNVAL_DIV_LESS_EQ1) |
963 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
964 |
lemma ADD_BV_BNVAL_LESS_EQ: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
965 |
(%w1. RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
966 |
(%w2. BV x1 + BV x2 + (BNVAL w1 + (BNVAL w2 + BV cin)) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
967 |
<= Suc (2 ^ Suc n)))" |
| 14516 | 968 |
by (import bword_arith ADD_BV_BNVAL_LESS_EQ) |
969 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
970 |
lemma ADD_BV_BNVAL_LESS_EQ1: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
971 |
(%w1. RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
972 |
(%w2. (BV x1 + BV x2 + (BNVAL w1 + (BNVAL w2 + BV cin))) div |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
973 |
2 ^ Suc n |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
974 |
<= 1))" |
| 14516 | 975 |
by (import bword_arith ADD_BV_BNVAL_LESS_EQ1) |
976 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
977 |
lemma ACARRY_EQ_ADD_DIV: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
978 |
(%w1. RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
979 |
(%w2. ALL k<n. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
980 |
BV (ACARRY k w1 w2 cin) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
981 |
(BNVAL (WSEG k 0 w1) + BNVAL (WSEG k 0 w2) + BV cin) div |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
982 |
2 ^ k))" |
| 14516 | 983 |
by (import bword_arith ACARRY_EQ_ADD_DIV) |
984 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
985 |
lemma ADD_WORD_SPLIT: "RES_FORALL (PWORDLEN (n1 + n2)) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
986 |
(%w1. RES_FORALL (PWORDLEN (n1 + n2)) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
987 |
(%w2. ALL cin. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
988 |
NBWORD (n1 + n2) (BNVAL w1 + BNVAL w2 + BV cin) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
989 |
WCAT |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
990 |
(NBWORD n1 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
991 |
(BNVAL (WSEG n1 n2 w1) + BNVAL (WSEG n1 n2 w2) + |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
992 |
BV (ACARRY n2 w1 w2 cin)), |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
993 |
NBWORD n2 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
994 |
(BNVAL (WSEG n2 0 w1) + BNVAL (WSEG n2 0 w2) + |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
995 |
BV cin))))" |
| 14516 | 996 |
by (import bword_arith ADD_WORD_SPLIT) |
997 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
998 |
lemma WSEG_NBWORD_ADD: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
999 |
(%w1. RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1000 |
(%w2. ALL m k cin. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1001 |
m + k <= n --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1002 |
WSEG m k (NBWORD n (BNVAL w1 + BNVAL w2 + BV cin)) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1003 |
NBWORD m |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1004 |
(BNVAL (WSEG m k w1) + BNVAL (WSEG m k w2) + |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1005 |
BV (ACARRY k w1 w2 cin))))" |
| 14516 | 1006 |
by (import bword_arith WSEG_NBWORD_ADD) |
1007 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1008 |
lemma ADD_NBWORD_EQ0_SPLIT: "RES_FORALL (PWORDLEN (n1 + n2)) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1009 |
(%w1. RES_FORALL (PWORDLEN (n1 + n2)) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1010 |
(%w2. ALL cin. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1011 |
(NBWORD (n1 + n2) (BNVAL w1 + BNVAL w2 + BV cin) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1012 |
NBWORD (n1 + n2) 0) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1013 |
(NBWORD n1 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1014 |
(BNVAL (WSEG n1 n2 w1) + BNVAL (WSEG n1 n2 w2) + |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1015 |
BV (ACARRY n2 w1 w2 cin)) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1016 |
NBWORD n1 0 & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1017 |
NBWORD n2 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1018 |
(BNVAL (WSEG n2 0 w1) + BNVAL (WSEG n2 0 w2) + BV cin) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1019 |
NBWORD n2 0)))" |
| 14516 | 1020 |
by (import bword_arith ADD_NBWORD_EQ0_SPLIT) |
1021 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1022 |
lemma ACARRY_MSB: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1023 |
(%w1. RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1024 |
(%w2. ALL cin. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1025 |
ACARRY n w1 w2 cin = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1026 |
bit n (NBWORD (Suc n) (BNVAL w1 + BNVAL w2 + BV cin))))" |
| 14516 | 1027 |
by (import bword_arith ACARRY_MSB) |
1028 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1029 |
lemma ACARRY_WSEG: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1030 |
(%w1. RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1031 |
(%w2. ALL cin k m. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1032 |
k < m & m <= n --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1033 |
ACARRY k (WSEG m 0 w1) (WSEG m 0 w2) cin = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1034 |
ACARRY k w1 w2 cin))" |
| 14516 | 1035 |
by (import bword_arith ACARRY_WSEG) |
1036 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1037 |
lemma ICARRY_WSEG: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1038 |
(%w1. RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1039 |
(%w2. ALL cin k m. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1040 |
k < m & m <= n --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1041 |
ICARRY k (WSEG m 0 w1) (WSEG m 0 w2) cin = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1042 |
ICARRY k w1 w2 cin))" |
| 14516 | 1043 |
by (import bword_arith ICARRY_WSEG) |
1044 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1045 |
lemma ACARRY_ACARRY_WSEG: "RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1046 |
(%w1. RES_FORALL (PWORDLEN n) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1047 |
(%w2. ALL cin m k1 k2. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1048 |
k1 < m & k2 < n & m + k2 <= n --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1049 |
ACARRY k1 (WSEG m k2 w1) (WSEG m k2 w2) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1050 |
(ACARRY k2 w1 w2 cin) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1051 |
ACARRY (k1 + k2) w1 w2 cin))" |
| 14516 | 1052 |
by (import bword_arith ACARRY_ACARRY_WSEG) |
1053 |
||
1054 |
;end_setup |
|
1055 |
||
|
46787
3d3d8f8929a7
file system structure separating HOL4 and HOL Light concerns
haftmann
parents:
46780
diff
changeset
|
1056 |
setup_theory "~~/src/HOL/Import/HOL4/Generated" bword_bitop |
| 14516 | 1057 |
|
1058 |
consts |
|
1059 |
WNOT :: "bool word => bool word" |
|
1060 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1061 |
specification (WNOT) WNOT_DEF: "ALL l. WNOT (WORD l) = WORD (map Not l)" |
| 14516 | 1062 |
by (import bword_bitop WNOT_DEF) |
1063 |
||
1064 |
lemma PBITOP_WNOT: "IN WNOT PBITOP" |
|
1065 |
by (import bword_bitop PBITOP_WNOT) |
|
1066 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1067 |
lemma WNOT_WNOT: "WNOT (WNOT w) = w" |
| 14516 | 1068 |
by (import bword_bitop WNOT_WNOT) |
1069 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1070 |
lemma WCAT_WNOT: "RES_FORALL (PWORDLEN n1) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1071 |
(%w1. RES_FORALL (PWORDLEN n2) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1072 |
(%w2. WCAT (WNOT w1, WNOT w2) = WNOT (WCAT (w1, w2))))" |
| 14516 | 1073 |
by (import bword_bitop WCAT_WNOT) |
1074 |
||
1075 |
consts |
|
1076 |
WAND :: "bool word => bool word => bool word" |
|
1077 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1078 |
specification (WAND) WAND_DEF: "ALL l1 l2. WAND (WORD l1) (WORD l2) = WORD (map2 op & l1 l2)" |
| 14516 | 1079 |
by (import bword_bitop WAND_DEF) |
1080 |
||
1081 |
lemma PBITBOP_WAND: "IN WAND PBITBOP" |
|
1082 |
by (import bword_bitop PBITBOP_WAND) |
|
1083 |
||
1084 |
consts |
|
1085 |
WOR :: "bool word => bool word => bool word" |
|
1086 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1087 |
specification (WOR) WOR_DEF: "ALL l1 l2. WOR (WORD l1) (WORD l2) = WORD (map2 op | l1 l2)" |
| 14516 | 1088 |
by (import bword_bitop WOR_DEF) |
1089 |
||
1090 |
lemma PBITBOP_WOR: "IN WOR PBITBOP" |
|
1091 |
by (import bword_bitop PBITBOP_WOR) |
|
1092 |
||
1093 |
consts |
|
1094 |
WXOR :: "bool word => bool word => bool word" |
|
1095 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1096 |
specification (WXOR) WXOR_DEF: "ALL l1 l2. WXOR (WORD l1) (WORD l2) = WORD (map2 op ~= l1 l2)" |
| 14516 | 1097 |
by (import bword_bitop WXOR_DEF) |
1098 |
||
1099 |
lemma PBITBOP_WXOR: "IN WXOR PBITBOP" |
|
1100 |
by (import bword_bitop PBITBOP_WXOR) |
|
1101 |
||
1102 |
;end_setup |
|
1103 |
||
1104 |
end |
|
1105 |