| author | boehmes |
| Tue, 27 Mar 2012 17:11:02 +0200 | |
| changeset 47155 | ade3fc826af3 |
| parent 46787 | 3d3d8f8929a7 |
| permissions | -rw-r--r-- |
| 15647 | 1 |
(* AUTOMATICALLY GENERATED, DO NOT EDIT! *) |
2 |
||
| 17566 | 3 |
theory HOL4Prob imports HOL4Real 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" prob_extra |
| 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 BOOL_BOOL_CASES_THM: "f = (%b. False) | f = (%b. True) | f = (%b. b) | f = Not" |
| 14516 | 8 |
by (import prob_extra BOOL_BOOL_CASES_THM) |
9 |
||
| 17652 | 10 |
lemma EVEN_ODD_BASIC: "EVEN 0 & ~ EVEN 1 & EVEN 2 & ~ ODD 0 & ODD 1 & ~ ODD 2" |
| 14516 | 11 |
by (import prob_extra EVEN_ODD_BASIC) |
12 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
13 |
lemma EVEN_ODD_EXISTS_EQ: "EVEN n = (EX m. n = 2 * m) & ODD n = (EX m. n = Suc (2 * m))" |
| 14516 | 14 |
by (import prob_extra EVEN_ODD_EXISTS_EQ) |
15 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
16 |
lemma DIV_THEN_MULT: "Suc q * (p div Suc q) <= p" |
| 14516 | 17 |
by (import prob_extra DIV_THEN_MULT) |
18 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
19 |
lemma DIV_TWO_UNIQUE: "(n::nat) = (2::nat) * (q::nat) + (r::nat) & (r = (0::nat) | r = (1::nat)) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
20 |
==> q = n div (2::nat) & r = n mod (2::nat)" |
| 14516 | 21 |
by (import prob_extra DIV_TWO_UNIQUE) |
22 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
23 |
lemma DIVISION_TWO: "(n::nat) = (2::nat) * (n div (2::nat)) + n mod (2::nat) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
24 |
(n mod (2::nat) = (0::nat) | n mod (2::nat) = (1::nat))" |
| 14516 | 25 |
by (import prob_extra DIVISION_TWO) |
26 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
27 |
lemma DIV_TWO: "(n::nat) = (2::nat) * (n div (2::nat)) + n mod (2::nat)" |
| 14516 | 28 |
by (import prob_extra DIV_TWO) |
29 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
30 |
lemma MOD_TWO: "n mod 2 = (if EVEN n then 0 else 1)" |
| 14516 | 31 |
by (import prob_extra MOD_TWO) |
32 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
33 |
lemma DIV_TWO_BASIC: "(0::nat) div (2::nat) = (0::nat) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
34 |
(1::nat) div (2::nat) = (0::nat) & (2::nat) div (2::nat) = (1::nat)" |
| 14516 | 35 |
by (import prob_extra DIV_TWO_BASIC) |
36 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
37 |
lemma DIV_TWO_MONO: "(m::nat) div (2::nat) < (n::nat) div (2::nat) ==> m < n" |
| 14516 | 38 |
by (import prob_extra DIV_TWO_MONO) |
39 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
40 |
lemma DIV_TWO_MONO_EVEN: "EVEN n ==> (m div 2 < n div 2) = (m < n)" |
| 14516 | 41 |
by (import prob_extra DIV_TWO_MONO_EVEN) |
42 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
43 |
lemma DIV_TWO_CANCEL: "2 * n div 2 = n & Suc (2 * n) div 2 = n" |
| 14516 | 44 |
by (import prob_extra DIV_TWO_CANCEL) |
45 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
46 |
lemma EXP_DIV_TWO: "(2::nat) ^ Suc (n::nat) div (2::nat) = (2::nat) ^ n" |
| 14516 | 47 |
by (import prob_extra EXP_DIV_TWO) |
48 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
49 |
lemma EVEN_EXP_TWO: "EVEN (2 ^ n) = (n ~= 0)" |
| 14516 | 50 |
by (import prob_extra EVEN_EXP_TWO) |
51 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
52 |
lemma DIV_TWO_EXP: "((k::nat) div (2::nat) < (2::nat) ^ (n::nat)) = (k < (2::nat) ^ Suc n)" |
| 14516 | 53 |
by (import prob_extra DIV_TWO_EXP) |
54 |
||
55 |
consts |
|
56 |
inf :: "(real => bool) => real" |
|
57 |
||
58 |
defs |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
59 |
inf_primdef: "prob_extra.inf == %P. - real.sup (IMAGE uminus P)" |
| 17644 | 60 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
61 |
lemma inf_def: "prob_extra.inf P = - real.sup (IMAGE uminus P)" |
| 14516 | 62 |
by (import prob_extra inf_def) |
63 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
64 |
lemma INF_DEF_ALT: "prob_extra.inf P = - real.sup (%r. P (- r))" |
| 14516 | 65 |
by (import prob_extra INF_DEF_ALT) |
66 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
67 |
lemma REAL_SUP_EXISTS_UNIQUE: "Ex (P::real => bool) & (EX z::real. ALL x::real. P x --> x <= z) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
68 |
==> EX! s::real. ALL y::real. (EX x::real. P x & y < x) = (y < s)" |
| 14516 | 69 |
by (import prob_extra REAL_SUP_EXISTS_UNIQUE) |
70 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
71 |
lemma REAL_SUP_MAX: "P z & (ALL x. P x --> x <= z) ==> real.sup P = z" |
| 14516 | 72 |
by (import prob_extra REAL_SUP_MAX) |
73 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
74 |
lemma REAL_INF_MIN: "P z & (ALL x. P x --> z <= x) ==> prob_extra.inf P = z" |
| 14516 | 75 |
by (import prob_extra REAL_INF_MIN) |
76 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
77 |
lemma HALF_CANCEL: "(2::real) * ((1::real) / (2::real)) = (1::real)" |
| 14516 | 78 |
by (import prob_extra HALF_CANCEL) |
79 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
80 |
lemma POW_HALF_POS: "(0::real) < ((1::real) / (2::real)) ^ (n::nat)" |
| 14516 | 81 |
by (import prob_extra POW_HALF_POS) |
82 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
83 |
lemma POW_HALF_MONO: "(m::nat) <= (n::nat) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
84 |
==> ((1::real) / (2::real)) ^ n <= ((1::real) / (2::real)) ^ m" |
| 14516 | 85 |
by (import prob_extra POW_HALF_MONO) |
86 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
87 |
lemma POW_HALF_TWICE: "((1::real) / (2::real)) ^ (n::nat) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
88 |
(2::real) * ((1::real) / (2::real)) ^ Suc n" |
| 14516 | 89 |
by (import prob_extra POW_HALF_TWICE) |
90 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
91 |
lemma X_HALF_HALF: "(1::real) / (2::real) * (x::real) + (1::real) / (2::real) * x = x" |
| 14516 | 92 |
by (import prob_extra X_HALF_HALF) |
93 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
94 |
lemma REAL_SUP_LE_X: "Ex P & (ALL r. P r --> r <= x) ==> real.sup P <= x" |
| 14516 | 95 |
by (import prob_extra REAL_SUP_LE_X) |
96 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
97 |
lemma REAL_X_LE_SUP: "Ex P & (EX z. ALL r. P r --> r <= z) & (EX r. P r & x <= r) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
98 |
==> x <= real.sup P" |
| 14516 | 99 |
by (import prob_extra REAL_X_LE_SUP) |
100 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
101 |
lemma ABS_BETWEEN_LE: "((0::real) <= (d::real) & (x::real) - d <= (y::real) & y <= x + d) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
102 |
(abs (y - x) <= d)" |
| 14516 | 103 |
by (import prob_extra ABS_BETWEEN_LE) |
104 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
105 |
lemma ONE_MINUS_HALF: "(1::real) - (1::real) / (2::real) = (1::real) / (2::real)" |
| 14516 | 106 |
by (import prob_extra ONE_MINUS_HALF) |
107 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
108 |
lemma HALF_LT_1: "(1::real) / (2::real) < (1::real)" |
| 14516 | 109 |
by (import prob_extra HALF_LT_1) |
110 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
111 |
lemma POW_HALF_EXP: "((1::real) / (2::real)) ^ (n::nat) = inverse (real ((2::nat) ^ n))" |
| 14516 | 112 |
by (import prob_extra POW_HALF_EXP) |
113 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
114 |
lemma INV_SUC_POS: "0 < 1 / real (Suc n)" |
| 14516 | 115 |
by (import prob_extra INV_SUC_POS) |
116 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
117 |
lemma INV_SUC_MAX: "1 / real (Suc x) <= 1" |
| 14516 | 118 |
by (import prob_extra INV_SUC_MAX) |
119 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
120 |
lemma INV_SUC: "0 < 1 / real (Suc n) & 1 / real (Suc n) <= 1" |
| 14516 | 121 |
by (import prob_extra INV_SUC) |
122 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
123 |
lemma ABS_UNIT_INTERVAL: "(0::real) <= (x::real) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
124 |
x <= (1::real) & (0::real) <= (y::real) & y <= (1::real) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
125 |
==> abs (x - y) <= (1::real)" |
| 14516 | 126 |
by (import prob_extra ABS_UNIT_INTERVAL) |
127 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
128 |
lemma MEM_NIL: "(ALL x. ~ List.member l x) = (l = [])" |
| 14516 | 129 |
by (import prob_extra MEM_NIL) |
130 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
131 |
lemma MAP_MEM: "List.member (map (f::'a => 'b) (l::'a list)) (x::'b) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
132 |
(EX y::'a. List.member l y & x = f y)" |
| 14516 | 133 |
by (import prob_extra MAP_MEM) |
134 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
135 |
lemma MEM_NIL_MAP_CONS: "~ List.member (map (op # x) l) []" |
| 14516 | 136 |
by (import prob_extra MEM_NIL_MAP_CONS) |
137 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
138 |
lemma FILTER_TRUE: "[x<-l. True] = l" |
| 14516 | 139 |
by (import prob_extra FILTER_TRUE) |
140 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
141 |
lemma FILTER_FALSE: "[x<-l. False] = []" |
| 14516 | 142 |
by (import prob_extra FILTER_FALSE) |
143 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
144 |
lemma FILTER_MEM: "List.member (filter P l) x ==> P x" |
| 14516 | 145 |
by (import prob_extra FILTER_MEM) |
146 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
147 |
lemma MEM_FILTER: "List.member (filter P l) x ==> List.member l x" |
| 14516 | 148 |
by (import prob_extra MEM_FILTER) |
149 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
150 |
lemma FILTER_OUT_ELT: "List.member l x | [y<-l. y ~= x] = l" |
| 14516 | 151 |
by (import prob_extra FILTER_OUT_ELT) |
152 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
153 |
lemma IS_PREFIX_NIL: "IS_PREFIX x [] & IS_PREFIX [] x = (x = [])" |
| 14516 | 154 |
by (import prob_extra IS_PREFIX_NIL) |
155 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
156 |
lemma IS_PREFIX_REFL: "IS_PREFIX x x" |
| 14516 | 157 |
by (import prob_extra IS_PREFIX_REFL) |
158 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
159 |
lemma IS_PREFIX_ANTISYM: "IS_PREFIX y x & IS_PREFIX x y ==> x = y" |
| 14516 | 160 |
by (import prob_extra IS_PREFIX_ANTISYM) |
161 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
162 |
lemma IS_PREFIX_TRANS: "IS_PREFIX x y & IS_PREFIX y z ==> IS_PREFIX x z" |
| 14516 | 163 |
by (import prob_extra IS_PREFIX_TRANS) |
164 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
165 |
lemma IS_PREFIX_BUTLAST: "IS_PREFIX (x # y) (butlast (x # y))" |
| 14516 | 166 |
by (import prob_extra IS_PREFIX_BUTLAST) |
167 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
168 |
lemma IS_PREFIX_LENGTH: "IS_PREFIX y x ==> length x <= length y" |
| 14516 | 169 |
by (import prob_extra IS_PREFIX_LENGTH) |
170 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
171 |
lemma IS_PREFIX_LENGTH_ANTI: "IS_PREFIX y x & length x = length y ==> x = y" |
| 14516 | 172 |
by (import prob_extra IS_PREFIX_LENGTH_ANTI) |
173 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
174 |
lemma IS_PREFIX_SNOC: "IS_PREFIX (SNOC x y) z = (IS_PREFIX y z | z = SNOC x y)" |
| 14516 | 175 |
by (import prob_extra IS_PREFIX_SNOC) |
176 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
177 |
lemma FOLDR_MAP: "foldr (f::'b => 'c => 'c) (map (g::'a => 'b) (l::'a list)) (e::'c) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
178 |
foldr (%x::'a. f (g x)) l e" |
| 14516 | 179 |
by (import prob_extra FOLDR_MAP) |
180 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
181 |
lemma LAST_MEM: "List.member (h # t) (last (h # t))" |
| 14516 | 182 |
by (import prob_extra LAST_MEM) |
183 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
184 |
lemma LAST_MAP_CONS: "EX x::bool list. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
185 |
last (map (op # (b::bool)) ((h::bool list) # (t::bool list list))) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
186 |
b # x" |
| 14516 | 187 |
by (import prob_extra LAST_MAP_CONS) |
188 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
189 |
lemma EXISTS_LONGEST: "EX z. List.member (x # y) z & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
190 |
(ALL w. List.member (x # y) w --> length w <= length z)" |
| 14516 | 191 |
by (import prob_extra EXISTS_LONGEST) |
192 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
193 |
lemma UNION_DEF_ALT: "pred_set.UNION s t = (%x. s x | t x)" |
| 14516 | 194 |
by (import prob_extra UNION_DEF_ALT) |
195 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
196 |
lemma INTER_UNION_RDISTRIB: "pred_set.INTER (pred_set.UNION p q) r = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
197 |
pred_set.UNION (pred_set.INTER p r) (pred_set.INTER q r)" |
| 14516 | 198 |
by (import prob_extra INTER_UNION_RDISTRIB) |
199 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
200 |
lemma SUBSET_EQ: "(x = xa) = (SUBSET x xa & SUBSET xa x)" |
| 14516 | 201 |
by (import prob_extra SUBSET_EQ) |
202 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
203 |
lemma INTER_IS_EMPTY: "(pred_set.INTER s t = EMPTY) = (ALL x. ~ s x | ~ t x)" |
| 14516 | 204 |
by (import prob_extra INTER_IS_EMPTY) |
205 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
206 |
lemma UNION_DISJOINT_SPLIT: "pred_set.UNION s t = pred_set.UNION s u & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
207 |
pred_set.INTER s t = EMPTY & pred_set.INTER s u = EMPTY |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
208 |
==> t = u" |
| 14516 | 209 |
by (import prob_extra UNION_DISJOINT_SPLIT) |
210 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
211 |
lemma GSPEC_DEF_ALT: "GSPEC (f::'a => 'b * bool) = (%v::'b. EX x::'a. (v, True) = f x)" |
| 14516 | 212 |
by (import prob_extra GSPEC_DEF_ALT) |
213 |
||
214 |
;end_setup |
|
215 |
||
|
46787
3d3d8f8929a7
file system structure separating HOL4 and HOL Light concerns
haftmann
parents:
46780
diff
changeset
|
216 |
setup_theory "~~/src/HOL/Import/HOL4/Generated" prob_canon |
| 14516 | 217 |
|
218 |
consts |
|
219 |
alg_twin :: "bool list => bool list => bool" |
|
220 |
||
221 |
defs |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
222 |
alg_twin_primdef: "alg_twin == %x y. EX l. x = SNOC True l & y = SNOC False l" |
| 17644 | 223 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
224 |
lemma alg_twin_def: "alg_twin x y = (EX l. x = SNOC True l & y = SNOC False l)" |
| 14516 | 225 |
by (import prob_canon alg_twin_def) |
226 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
227 |
definition |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
228 |
alg_order_tupled :: "bool list * bool list => bool" where |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
229 |
"alg_order_tupled == |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
230 |
WFREC (SOME R. WF R & (ALL h' h t' t. R (t, t') (h # t, h' # t'))) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
231 |
(%alg_order_tupled (v, v1). |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
232 |
case v of [] => case v1 of [] => True | _ => True |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
233 |
| v4 # v5 => |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
234 |
case v1 of [] => False |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
235 |
| v10 # v11 => |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
236 |
v4 = True & v10 = False | |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
237 |
v4 = v10 & alg_order_tupled (v5, v11))" |
| 14516 | 238 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
239 |
lemma alg_order_tupled_primitive_def: "alg_order_tupled = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
240 |
WFREC (SOME R. WF R & (ALL h' h t' t. R (t, t') (h # t, h' # t'))) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
241 |
(%alg_order_tupled (v, v1). |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
242 |
case v of [] => case v1 of [] => True | _ => True |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
243 |
| v4 # v5 => |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
244 |
case v1 of [] => False |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
245 |
| v10 # v11 => |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
246 |
v4 = True & v10 = False | |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
247 |
v4 = v10 & alg_order_tupled (v5, v11))" |
| 14516 | 248 |
by (import prob_canon alg_order_tupled_primitive_def) |
249 |
||
250 |
consts |
|
251 |
alg_order :: "bool list => bool list => bool" |
|
252 |
||
253 |
defs |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
254 |
alg_order_primdef: "alg_order == %x x1. alg_order_tupled (x, x1)" |
| 17644 | 255 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
256 |
lemma alg_order_curried_def: "alg_order x x1 = alg_order_tupled (x, x1)" |
| 14516 | 257 |
by (import prob_canon alg_order_curried_def) |
258 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
259 |
lemma alg_order_ind: "(ALL (x::bool) xa::bool list. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
260 |
(P::bool list => bool list => bool) [] (x # xa)) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
261 |
P [] [] & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
262 |
(ALL (x::bool) xa::bool list. P (x # xa) []) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
263 |
(ALL (x::bool) (xa::bool list) (xb::bool) xc::bool list. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
264 |
P xa xc --> P (x # xa) (xb # xc)) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
265 |
==> P (x::bool list) (xa::bool list)" |
| 14516 | 266 |
by (import prob_canon alg_order_ind) |
267 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
268 |
lemma alg_order_def: "alg_order [] (v6 # v7) = True & |
| 14516 | 269 |
alg_order [] [] = True & |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
270 |
alg_order (v2 # v3) [] = False & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
271 |
alg_order (h # t) (h' # t') = |
| 14516 | 272 |
(h = True & h' = False | h = h' & alg_order t t')" |
273 |
by (import prob_canon alg_order_def) |
|
274 |
||
275 |
consts |
|
276 |
alg_sorted :: "bool list list => bool" |
|
277 |
||
278 |
defs |
|
279 |
alg_sorted_primdef: "alg_sorted == |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
280 |
WFREC (SOME R. WF R & (ALL x z y. R (y # z) (x # y # z))) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
281 |
(%alg_sorted. |
| 14516 | 282 |
list_case True |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
283 |
(%v2. list_case True |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
284 |
(%v6 v7. alg_order v2 v6 & alg_sorted (v6 # v7))))" |
| 14516 | 285 |
|
286 |
lemma alg_sorted_primitive_def: "alg_sorted = |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
287 |
WFREC (SOME R. WF R & (ALL x z y. R (y # z) (x # y # z))) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
288 |
(%alg_sorted. |
| 14516 | 289 |
list_case True |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
290 |
(%v2. list_case True |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
291 |
(%v6 v7. alg_order v2 v6 & alg_sorted (v6 # v7))))" |
| 14516 | 292 |
by (import prob_canon alg_sorted_primitive_def) |
293 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
294 |
lemma alg_sorted_ind: "(ALL (x::bool list) (y::bool list) z::bool list list. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
295 |
(P::bool list list => bool) (y # z) --> P (x # y # z)) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
296 |
(ALL v::bool list. P [v]) & P [] |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
297 |
==> P (x::bool list list)" |
| 14516 | 298 |
by (import prob_canon alg_sorted_ind) |
299 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
300 |
lemma alg_sorted_def: "alg_sorted (x # y # z) = (alg_order x y & alg_sorted (y # z)) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
301 |
alg_sorted [v] = True & alg_sorted [] = True" |
| 14516 | 302 |
by (import prob_canon alg_sorted_def) |
303 |
||
304 |
consts |
|
305 |
alg_prefixfree :: "bool list list => bool" |
|
306 |
||
307 |
defs |
|
308 |
alg_prefixfree_primdef: "alg_prefixfree == |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
309 |
WFREC (SOME R. WF R & (ALL x z y. R (y # z) (x # y # z))) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
310 |
(%alg_prefixfree. |
| 14516 | 311 |
list_case True |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
312 |
(%v2. list_case True |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
313 |
(%v6 v7. ~ IS_PREFIX v6 v2 & alg_prefixfree (v6 # v7))))" |
| 14516 | 314 |
|
315 |
lemma alg_prefixfree_primitive_def: "alg_prefixfree = |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
316 |
WFREC (SOME R. WF R & (ALL x z y. R (y # z) (x # y # z))) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
317 |
(%alg_prefixfree. |
| 14516 | 318 |
list_case True |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
319 |
(%v2. list_case True |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
320 |
(%v6 v7. ~ IS_PREFIX v6 v2 & alg_prefixfree (v6 # v7))))" |
| 14516 | 321 |
by (import prob_canon alg_prefixfree_primitive_def) |
322 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
323 |
lemma alg_prefixfree_ind: "(ALL (x::bool list) (y::bool list) z::bool list list. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
324 |
(P::bool list list => bool) (y # z) --> P (x # y # z)) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
325 |
(ALL v::bool list. P [v]) & P [] |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
326 |
==> P (x::bool list list)" |
| 14516 | 327 |
by (import prob_canon alg_prefixfree_ind) |
328 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
329 |
lemma alg_prefixfree_def: "alg_prefixfree (x # y # z) = (~ IS_PREFIX y x & alg_prefixfree (y # z)) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
330 |
alg_prefixfree [v] = True & alg_prefixfree [] = True" |
| 14516 | 331 |
by (import prob_canon alg_prefixfree_def) |
332 |
||
333 |
consts |
|
334 |
alg_twinfree :: "bool list list => bool" |
|
335 |
||
336 |
defs |
|
337 |
alg_twinfree_primdef: "alg_twinfree == |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
338 |
WFREC (SOME R. WF R & (ALL x z y. R (y # z) (x # y # z))) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
339 |
(%alg_twinfree. |
| 14516 | 340 |
list_case True |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
341 |
(%v2. list_case True |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
342 |
(%v6 v7. ~ alg_twin v2 v6 & alg_twinfree (v6 # v7))))" |
| 14516 | 343 |
|
344 |
lemma alg_twinfree_primitive_def: "alg_twinfree = |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
345 |
WFREC (SOME R. WF R & (ALL x z y. R (y # z) (x # y # z))) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
346 |
(%alg_twinfree. |
| 14516 | 347 |
list_case True |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
348 |
(%v2. list_case True |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
349 |
(%v6 v7. ~ alg_twin v2 v6 & alg_twinfree (v6 # v7))))" |
| 14516 | 350 |
by (import prob_canon alg_twinfree_primitive_def) |
351 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
352 |
lemma alg_twinfree_ind: "(ALL (x::bool list) (y::bool list) z::bool list list. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
353 |
(P::bool list list => bool) (y # z) --> P (x # y # z)) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
354 |
(ALL v::bool list. P [v]) & P [] |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
355 |
==> P (x::bool list list)" |
| 14516 | 356 |
by (import prob_canon alg_twinfree_ind) |
357 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
358 |
lemma alg_twinfree_def: "alg_twinfree (x # y # z) = (~ alg_twin x y & alg_twinfree (y # z)) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
359 |
alg_twinfree [v] = True & alg_twinfree [] = True" |
| 14516 | 360 |
by (import prob_canon alg_twinfree_def) |
361 |
||
362 |
consts |
|
363 |
alg_longest :: "bool list list => nat" |
|
364 |
||
365 |
defs |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
366 |
alg_longest_primdef: "alg_longest == FOLDR (%h t. if t <= length h then length h else t) 0" |
| 17644 | 367 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
368 |
lemma alg_longest_def: "alg_longest = FOLDR (%h t. if t <= length h then length h else t) 0" |
| 14516 | 369 |
by (import prob_canon alg_longest_def) |
370 |
||
371 |
consts |
|
372 |
alg_canon_prefs :: "bool list => bool list list => bool list list" |
|
373 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
374 |
specification (alg_canon_prefs_primdef: alg_canon_prefs) alg_canon_prefs_def: "(ALL l. alg_canon_prefs l [] = [l]) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
375 |
(ALL l h t. |
| 14516 | 376 |
alg_canon_prefs l (h # t) = |
377 |
(if IS_PREFIX h l then alg_canon_prefs l t else l # h # t))" |
|
378 |
by (import prob_canon alg_canon_prefs_def) |
|
379 |
||
380 |
consts |
|
381 |
alg_canon_find :: "bool list => bool list list => bool list list" |
|
382 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
383 |
specification (alg_canon_find_primdef: alg_canon_find) alg_canon_find_def: "(ALL l. alg_canon_find l [] = [l]) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
384 |
(ALL l h t. |
| 14516 | 385 |
alg_canon_find l (h # t) = |
386 |
(if alg_order h l |
|
387 |
then if IS_PREFIX l h then h # t else h # alg_canon_find l t |
|
388 |
else alg_canon_prefs l (h # t)))" |
|
389 |
by (import prob_canon alg_canon_find_def) |
|
390 |
||
391 |
consts |
|
392 |
alg_canon1 :: "bool list list => bool list list" |
|
393 |
||
394 |
defs |
|
395 |
alg_canon1_primdef: "alg_canon1 == FOLDR alg_canon_find []" |
|
396 |
||
397 |
lemma alg_canon1_def: "alg_canon1 = FOLDR alg_canon_find []" |
|
398 |
by (import prob_canon alg_canon1_def) |
|
399 |
||
400 |
consts |
|
401 |
alg_canon_merge :: "bool list => bool list list => bool list list" |
|
402 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
403 |
specification (alg_canon_merge_primdef: alg_canon_merge) alg_canon_merge_def: "(ALL l. alg_canon_merge l [] = [l]) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
404 |
(ALL l h t. |
| 14516 | 405 |
alg_canon_merge l (h # t) = |
406 |
(if alg_twin l h then alg_canon_merge (butlast h) t else l # h # t))" |
|
407 |
by (import prob_canon alg_canon_merge_def) |
|
408 |
||
409 |
consts |
|
410 |
alg_canon2 :: "bool list list => bool list list" |
|
411 |
||
412 |
defs |
|
413 |
alg_canon2_primdef: "alg_canon2 == FOLDR alg_canon_merge []" |
|
414 |
||
415 |
lemma alg_canon2_def: "alg_canon2 = FOLDR alg_canon_merge []" |
|
416 |
by (import prob_canon alg_canon2_def) |
|
417 |
||
418 |
consts |
|
419 |
alg_canon :: "bool list list => bool list list" |
|
420 |
||
421 |
defs |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
422 |
alg_canon_primdef: "alg_canon == %l. alg_canon2 (alg_canon1 l)" |
| 17644 | 423 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
424 |
lemma alg_canon_def: "alg_canon l = alg_canon2 (alg_canon1 l)" |
| 14516 | 425 |
by (import prob_canon alg_canon_def) |
426 |
||
427 |
consts |
|
428 |
algebra_canon :: "bool list list => bool" |
|
429 |
||
430 |
defs |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
431 |
algebra_canon_primdef: "algebra_canon == %l. alg_canon l = l" |
| 17644 | 432 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
433 |
lemma algebra_canon_def: "algebra_canon l = (alg_canon l = l)" |
| 14516 | 434 |
by (import prob_canon algebra_canon_def) |
435 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
436 |
lemma ALG_TWIN_NIL: "~ alg_twin l [] & ~ alg_twin [] l" |
| 14516 | 437 |
by (import prob_canon ALG_TWIN_NIL) |
438 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
439 |
lemma ALG_TWIN_SING: "alg_twin [x] l = (x = True & l = [False]) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
440 |
alg_twin l [x] = (l = [True] & x = False)" |
| 14516 | 441 |
by (import prob_canon ALG_TWIN_SING) |
442 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
443 |
lemma ALG_TWIN_CONS: "alg_twin (x # y # z) (h # t) = (x = h & alg_twin (y # z) t) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
444 |
alg_twin (h # t) (x # y # z) = (x = h & alg_twin t (y # z))" |
| 14516 | 445 |
by (import prob_canon ALG_TWIN_CONS) |
446 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
447 |
lemma ALG_TWIN_REDUCE: "alg_twin (h # t) (h # t') = alg_twin t t'" |
| 14516 | 448 |
by (import prob_canon ALG_TWIN_REDUCE) |
449 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
450 |
lemma ALG_TWINS_PREFIX: "IS_PREFIX x l |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
451 |
==> x = l | IS_PREFIX x (SNOC True l) | IS_PREFIX x (SNOC False l)" |
| 14516 | 452 |
by (import prob_canon ALG_TWINS_PREFIX) |
453 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
454 |
lemma ALG_ORDER_NIL: "alg_order [] x & alg_order x [] = (x = [])" |
| 14516 | 455 |
by (import prob_canon ALG_ORDER_NIL) |
456 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
457 |
lemma ALG_ORDER_REFL: "alg_order x x" |
| 14516 | 458 |
by (import prob_canon ALG_ORDER_REFL) |
459 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
460 |
lemma ALG_ORDER_ANTISYM: "alg_order x y & alg_order y x ==> x = y" |
| 14516 | 461 |
by (import prob_canon ALG_ORDER_ANTISYM) |
462 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
463 |
lemma ALG_ORDER_TRANS: "alg_order x y & alg_order y z ==> alg_order x z" |
| 14516 | 464 |
by (import prob_canon ALG_ORDER_TRANS) |
465 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
466 |
lemma ALG_ORDER_TOTAL: "alg_order x y | alg_order y x" |
| 14516 | 467 |
by (import prob_canon ALG_ORDER_TOTAL) |
468 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
469 |
lemma ALG_ORDER_PREFIX: "IS_PREFIX y x ==> alg_order x y" |
| 14516 | 470 |
by (import prob_canon ALG_ORDER_PREFIX) |
471 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
472 |
lemma ALG_ORDER_PREFIX_ANTI: "alg_order x y & IS_PREFIX x y ==> x = y" |
| 14516 | 473 |
by (import prob_canon ALG_ORDER_PREFIX_ANTI) |
474 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
475 |
lemma ALG_ORDER_PREFIX_MONO: "alg_order x y & alg_order y z & IS_PREFIX z x ==> IS_PREFIX y x" |
| 14516 | 476 |
by (import prob_canon ALG_ORDER_PREFIX_MONO) |
477 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
478 |
lemma ALG_ORDER_PREFIX_TRANS: "alg_order x y & IS_PREFIX y z ==> alg_order x z | IS_PREFIX x z" |
| 14516 | 479 |
by (import prob_canon ALG_ORDER_PREFIX_TRANS) |
480 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
481 |
lemma ALG_ORDER_SNOC: "~ alg_order (SNOC x l) l" |
| 14516 | 482 |
by (import prob_canon ALG_ORDER_SNOC) |
483 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
484 |
lemma ALG_SORTED_MIN: "[| alg_sorted (h # t); List.member t x |] ==> alg_order h x" |
| 14516 | 485 |
by (import prob_canon ALG_SORTED_MIN) |
486 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
487 |
lemma ALG_SORTED_DEF_ALT: "alg_sorted (h # t) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
488 |
((ALL x. List.member t x --> alg_order h x) & alg_sorted t)" |
| 14516 | 489 |
by (import prob_canon ALG_SORTED_DEF_ALT) |
490 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
491 |
lemma ALG_SORTED_TL: "alg_sorted (h # t) ==> alg_sorted t" |
| 14516 | 492 |
by (import prob_canon ALG_SORTED_TL) |
493 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
494 |
lemma ALG_SORTED_MONO: "alg_sorted (x # y # z) ==> alg_sorted (x # z)" |
| 14516 | 495 |
by (import prob_canon ALG_SORTED_MONO) |
496 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
497 |
lemma ALG_SORTED_TLS: "alg_sorted (map (op # b) l) = alg_sorted l" |
| 14516 | 498 |
by (import prob_canon ALG_SORTED_TLS) |
499 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
500 |
lemma ALG_SORTED_STEP: "alg_sorted (map (op # True) l1 @ map (op # False) l2) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
501 |
(alg_sorted l1 & alg_sorted l2)" |
| 14516 | 502 |
by (import prob_canon ALG_SORTED_STEP) |
503 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
504 |
lemma ALG_SORTED_APPEND: "alg_sorted ((h # t) @ h' # t') = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
505 |
(alg_sorted (h # t) & alg_sorted (h' # t') & alg_order (last (h # t)) h')" |
| 14516 | 506 |
by (import prob_canon ALG_SORTED_APPEND) |
507 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
508 |
lemma ALG_SORTED_FILTER: "alg_sorted b ==> alg_sorted (filter P b)" |
| 14516 | 509 |
by (import prob_canon ALG_SORTED_FILTER) |
510 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
511 |
lemma ALG_PREFIXFREE_TL: "alg_prefixfree (h # t) ==> alg_prefixfree t" |
| 14516 | 512 |
by (import prob_canon ALG_PREFIXFREE_TL) |
513 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
514 |
lemma ALG_PREFIXFREE_MONO: "alg_sorted (x # y # z) & alg_prefixfree (x # y # z) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
515 |
==> alg_prefixfree (x # z)" |
| 14516 | 516 |
by (import prob_canon ALG_PREFIXFREE_MONO) |
517 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
518 |
lemma ALG_PREFIXFREE_ELT: "[| alg_sorted (h # t) & alg_prefixfree (h # t); List.member t x |] |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
519 |
==> ~ IS_PREFIX x h & ~ IS_PREFIX h x" |
| 14516 | 520 |
by (import prob_canon ALG_PREFIXFREE_ELT) |
521 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
522 |
lemma ALG_PREFIXFREE_TLS: "alg_prefixfree (map (op # b) l) = alg_prefixfree l" |
| 14516 | 523 |
by (import prob_canon ALG_PREFIXFREE_TLS) |
524 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
525 |
lemma ALG_PREFIXFREE_STEP: "alg_prefixfree (map (op # True) l1 @ map (op # False) l2) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
526 |
(alg_prefixfree l1 & alg_prefixfree l2)" |
| 14516 | 527 |
by (import prob_canon ALG_PREFIXFREE_STEP) |
528 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
529 |
lemma ALG_PREFIXFREE_APPEND: "alg_prefixfree ((h # t) @ h' # t') = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
530 |
(alg_prefixfree (h # t) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
531 |
alg_prefixfree (h' # t') & ~ IS_PREFIX h' (last (h # t)))" |
| 14516 | 532 |
by (import prob_canon ALG_PREFIXFREE_APPEND) |
533 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
534 |
lemma ALG_PREFIXFREE_FILTER: "alg_sorted b & alg_prefixfree b ==> alg_prefixfree (filter P b)" |
| 14516 | 535 |
by (import prob_canon ALG_PREFIXFREE_FILTER) |
536 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
537 |
lemma ALG_TWINFREE_TL: "alg_twinfree (h # t) ==> alg_twinfree t" |
| 14516 | 538 |
by (import prob_canon ALG_TWINFREE_TL) |
539 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
540 |
lemma ALG_TWINFREE_TLS: "alg_twinfree (map (op # b) l) = alg_twinfree l" |
| 14516 | 541 |
by (import prob_canon ALG_TWINFREE_TLS) |
542 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
543 |
lemma ALG_TWINFREE_STEP1: "alg_twinfree (map (op # True) l1 @ map (op # False) l2) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
544 |
==> alg_twinfree l1 & alg_twinfree l2" |
| 14516 | 545 |
by (import prob_canon ALG_TWINFREE_STEP1) |
546 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
547 |
lemma ALG_TWINFREE_STEP2: "(~ List.member l1 [] | ~ List.member l2 []) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
548 |
alg_twinfree l1 & alg_twinfree l2 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
549 |
==> alg_twinfree (map (op # True) l1 @ map (op # False) l2)" |
| 14516 | 550 |
by (import prob_canon ALG_TWINFREE_STEP2) |
551 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
552 |
lemma ALG_TWINFREE_STEP: "~ List.member l1 [] | ~ List.member l2 [] |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
553 |
==> alg_twinfree (map (op # True) l1 @ map (op # False) l2) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
554 |
(alg_twinfree l1 & alg_twinfree l2)" |
| 14516 | 555 |
by (import prob_canon ALG_TWINFREE_STEP) |
556 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
557 |
lemma ALG_LONGEST_HD: "length h <= alg_longest (h # t)" |
| 14516 | 558 |
by (import prob_canon ALG_LONGEST_HD) |
559 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
560 |
lemma ALG_LONGEST_TL: "alg_longest t <= alg_longest (h # t)" |
| 14516 | 561 |
by (import prob_canon ALG_LONGEST_TL) |
562 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
563 |
lemma ALG_LONGEST_TLS: "alg_longest (map (op # b) (h # t)) = Suc (alg_longest (h # t))" |
| 14516 | 564 |
by (import prob_canon ALG_LONGEST_TLS) |
565 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
566 |
lemma ALG_LONGEST_APPEND: "alg_longest l1 <= alg_longest (l1 @ l2) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
567 |
alg_longest l2 <= alg_longest (l1 @ l2)" |
| 14516 | 568 |
by (import prob_canon ALG_LONGEST_APPEND) |
569 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
570 |
lemma ALG_CANON_PREFS_HD: "hd (alg_canon_prefs l b) = l" |
| 14516 | 571 |
by (import prob_canon ALG_CANON_PREFS_HD) |
572 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
573 |
lemma ALG_CANON_PREFS_DELETES: "List.member (alg_canon_prefs l b) x ==> List.member (l # b) x" |
| 14516 | 574 |
by (import prob_canon ALG_CANON_PREFS_DELETES) |
575 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
576 |
lemma ALG_CANON_PREFS_SORTED: "alg_sorted (l # b) ==> alg_sorted (alg_canon_prefs l b)" |
| 14516 | 577 |
by (import prob_canon ALG_CANON_PREFS_SORTED) |
578 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
579 |
lemma ALG_CANON_PREFS_PREFIXFREE: "alg_sorted b & alg_prefixfree b ==> alg_prefixfree (alg_canon_prefs l b)" |
| 14516 | 580 |
by (import prob_canon ALG_CANON_PREFS_PREFIXFREE) |
581 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
582 |
lemma ALG_CANON_PREFS_CONSTANT: "alg_prefixfree (l # b) ==> alg_canon_prefs l b = l # b" |
| 14516 | 583 |
by (import prob_canon ALG_CANON_PREFS_CONSTANT) |
584 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
585 |
lemma ALG_CANON_FIND_HD: "hd (alg_canon_find l (h # t)) = l | hd (alg_canon_find l (h # t)) = h" |
| 14516 | 586 |
by (import prob_canon ALG_CANON_FIND_HD) |
587 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
588 |
lemma ALG_CANON_FIND_DELETES: "List.member (alg_canon_find l b) x ==> List.member (l # b) x" |
| 14516 | 589 |
by (import prob_canon ALG_CANON_FIND_DELETES) |
590 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
591 |
lemma ALG_CANON_FIND_SORTED: "alg_sorted b ==> alg_sorted (alg_canon_find l b)" |
| 14516 | 592 |
by (import prob_canon ALG_CANON_FIND_SORTED) |
593 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
594 |
lemma ALG_CANON_FIND_PREFIXFREE: "alg_sorted b & alg_prefixfree b ==> alg_prefixfree (alg_canon_find l b)" |
| 14516 | 595 |
by (import prob_canon ALG_CANON_FIND_PREFIXFREE) |
596 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
597 |
lemma ALG_CANON_FIND_CONSTANT: "alg_sorted (l # b) & alg_prefixfree (l # b) ==> alg_canon_find l b = l # b" |
| 14516 | 598 |
by (import prob_canon ALG_CANON_FIND_CONSTANT) |
599 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
600 |
lemma ALG_CANON1_SORTED: "alg_sorted (alg_canon1 x)" |
| 14516 | 601 |
by (import prob_canon ALG_CANON1_SORTED) |
602 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
603 |
lemma ALG_CANON1_PREFIXFREE: "alg_prefixfree (alg_canon1 l)" |
| 14516 | 604 |
by (import prob_canon ALG_CANON1_PREFIXFREE) |
605 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
606 |
lemma ALG_CANON1_CONSTANT: "alg_sorted l & alg_prefixfree l ==> alg_canon1 l = l" |
| 14516 | 607 |
by (import prob_canon ALG_CANON1_CONSTANT) |
608 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
609 |
lemma ALG_CANON_MERGE_SORTED_PREFIXFREE_TWINFREE: "alg_sorted (l # b) & alg_prefixfree (l # b) & alg_twinfree b |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
610 |
==> alg_sorted (alg_canon_merge l b) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
611 |
alg_prefixfree (alg_canon_merge l b) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
612 |
alg_twinfree (alg_canon_merge l b)" |
| 14516 | 613 |
by (import prob_canon ALG_CANON_MERGE_SORTED_PREFIXFREE_TWINFREE) |
614 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
615 |
lemma ALG_CANON_MERGE_PREFIXFREE_PRESERVE: "[| !!x. List.member (l # b) x ==> ~ IS_PREFIX h x & ~ IS_PREFIX x h; |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
616 |
List.member (alg_canon_merge l b) x |] |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
617 |
==> ~ IS_PREFIX h x & ~ IS_PREFIX x h" |
| 14516 | 618 |
by (import prob_canon ALG_CANON_MERGE_PREFIXFREE_PRESERVE) |
619 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
620 |
lemma ALG_CANON_MERGE_SHORTENS: "List.member (alg_canon_merge l b) x |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
621 |
==> EX y. List.member (l # b) y & IS_PREFIX y x" |
| 14516 | 622 |
by (import prob_canon ALG_CANON_MERGE_SHORTENS) |
623 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
624 |
lemma ALG_CANON_MERGE_CONSTANT: "alg_twinfree (l # b) ==> alg_canon_merge l b = l # b" |
| 14516 | 625 |
by (import prob_canon ALG_CANON_MERGE_CONSTANT) |
626 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
627 |
lemma ALG_CANON2_PREFIXFREE_PRESERVE: "[| !!xb. List.member x xb ==> ~ IS_PREFIX xa xb & ~ IS_PREFIX xb xa; |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
628 |
List.member (alg_canon2 x) xb |] |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
629 |
==> ~ IS_PREFIX xa xb & ~ IS_PREFIX xb xa" |
| 14516 | 630 |
by (import prob_canon ALG_CANON2_PREFIXFREE_PRESERVE) |
631 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
632 |
lemma ALG_CANON2_SHORTENS: "List.member (alg_canon2 x) xa ==> EX y. List.member x y & IS_PREFIX y xa" |
| 14516 | 633 |
by (import prob_canon ALG_CANON2_SHORTENS) |
634 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
635 |
lemma ALG_CANON2_SORTED_PREFIXFREE_TWINFREE: "alg_sorted x & alg_prefixfree x |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
636 |
==> alg_sorted (alg_canon2 x) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
637 |
alg_prefixfree (alg_canon2 x) & alg_twinfree (alg_canon2 x)" |
| 14516 | 638 |
by (import prob_canon ALG_CANON2_SORTED_PREFIXFREE_TWINFREE) |
639 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
640 |
lemma ALG_CANON2_CONSTANT: "alg_twinfree l ==> alg_canon2 l = l" |
| 14516 | 641 |
by (import prob_canon ALG_CANON2_CONSTANT) |
642 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
643 |
lemma ALG_CANON_SORTED_PREFIXFREE_TWINFREE: "alg_sorted (alg_canon l) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
644 |
alg_prefixfree (alg_canon l) & alg_twinfree (alg_canon l)" |
| 14516 | 645 |
by (import prob_canon ALG_CANON_SORTED_PREFIXFREE_TWINFREE) |
646 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
647 |
lemma ALG_CANON_CONSTANT: "alg_sorted l & alg_prefixfree l & alg_twinfree l ==> alg_canon l = l" |
| 14516 | 648 |
by (import prob_canon ALG_CANON_CONSTANT) |
649 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
650 |
lemma ALG_CANON_IDEMPOT: "alg_canon (alg_canon l) = alg_canon l" |
| 14516 | 651 |
by (import prob_canon ALG_CANON_IDEMPOT) |
652 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
653 |
lemma ALGEBRA_CANON_DEF_ALT: "algebra_canon l = (alg_sorted l & alg_prefixfree l & alg_twinfree l)" |
| 14516 | 654 |
by (import prob_canon ALGEBRA_CANON_DEF_ALT) |
655 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
656 |
lemma ALGEBRA_CANON_BASIC: "algebra_canon [] & algebra_canon [[]] & (ALL x. algebra_canon [x])" |
| 14516 | 657 |
by (import prob_canon ALGEBRA_CANON_BASIC) |
658 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
659 |
lemma ALG_CANON_BASIC: "alg_canon [] = [] & alg_canon [[]] = [[]] & (ALL x. alg_canon [x] = [x])" |
| 14516 | 660 |
by (import prob_canon ALG_CANON_BASIC) |
661 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
662 |
lemma ALGEBRA_CANON_TL: "algebra_canon (h # t) ==> algebra_canon t" |
| 14516 | 663 |
by (import prob_canon ALGEBRA_CANON_TL) |
664 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
665 |
lemma ALGEBRA_CANON_NIL_MEM: "(algebra_canon l & List.member l []) = (l = [[]])" |
| 14516 | 666 |
by (import prob_canon ALGEBRA_CANON_NIL_MEM) |
667 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
668 |
lemma ALGEBRA_CANON_TLS: "algebra_canon (map (op # b) l) = algebra_canon l" |
| 14516 | 669 |
by (import prob_canon ALGEBRA_CANON_TLS) |
670 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
671 |
lemma ALGEBRA_CANON_STEP1: "algebra_canon (map (op # True) l1 @ map (op # False) l2) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
672 |
==> algebra_canon l1 & algebra_canon l2" |
| 14516 | 673 |
by (import prob_canon ALGEBRA_CANON_STEP1) |
674 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
675 |
lemma ALGEBRA_CANON_STEP2: "(l1 ~= [[]] | l2 ~= [[]]) & algebra_canon l1 & algebra_canon l2 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
676 |
==> algebra_canon (map (op # True) l1 @ map (op # False) l2)" |
| 14516 | 677 |
by (import prob_canon ALGEBRA_CANON_STEP2) |
678 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
679 |
lemma ALGEBRA_CANON_STEP: "l1 ~= [[]] | l2 ~= [[]] |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
680 |
==> algebra_canon (map (op # True) l1 @ map (op # False) l2) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
681 |
(algebra_canon l1 & algebra_canon l2)" |
| 14516 | 682 |
by (import prob_canon ALGEBRA_CANON_STEP) |
683 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
684 |
lemma ALGEBRA_CANON_CASES_THM: "algebra_canon l |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
685 |
==> l = [] | |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
686 |
l = [[]] | |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
687 |
(EX l1 l2. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
688 |
algebra_canon l1 & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
689 |
algebra_canon l2 & l = map (op # True) l1 @ map (op # False) l2)" |
| 14516 | 690 |
by (import prob_canon ALGEBRA_CANON_CASES_THM) |
691 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
692 |
lemma ALGEBRA_CANON_CASES: "[| P [] & |
| 17694 | 693 |
P [[]] & |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
694 |
(ALL l1 l2. |
| 17694 | 695 |
algebra_canon l1 & |
696 |
algebra_canon l2 & |
|
697 |
algebra_canon (map (op # True) l1 @ map (op # False) l2) --> |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
698 |
P (map (op # True) l1 @ map (op # False) l2)); |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
699 |
algebra_canon l |] |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
700 |
==> P l" |
| 14516 | 701 |
by (import prob_canon ALGEBRA_CANON_CASES) |
702 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
703 |
lemma ALGEBRA_CANON_INDUCTION: "[| P [] & |
| 17694 | 704 |
P [[]] & |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
705 |
(ALL l1 l2. |
| 17694 | 706 |
algebra_canon l1 & |
707 |
algebra_canon l2 & |
|
708 |
P l1 & |
|
709 |
P l2 & algebra_canon (map (op # True) l1 @ map (op # False) l2) --> |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
710 |
P (map (op # True) l1 @ map (op # False) l2)); |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
711 |
algebra_canon l |] |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
712 |
==> P l" |
| 14516 | 713 |
by (import prob_canon ALGEBRA_CANON_INDUCTION) |
714 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
715 |
lemma MEM_NIL_STEP: "~ List.member (map (op # True) l1 @ map (op # False) l2) []" |
| 14516 | 716 |
by (import prob_canon MEM_NIL_STEP) |
717 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
718 |
lemma ALG_SORTED_PREFIXFREE_MEM_NIL: "(alg_sorted l & alg_prefixfree l & List.member l []) = (l = [[]])" |
| 14516 | 719 |
by (import prob_canon ALG_SORTED_PREFIXFREE_MEM_NIL) |
720 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
721 |
lemma ALG_SORTED_PREFIXFREE_EQUALITY: "(ALL x. List.member l x = List.member l' x) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
722 |
alg_sorted l & alg_sorted l' & alg_prefixfree l & alg_prefixfree l' |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
723 |
==> l = l'" |
| 14516 | 724 |
by (import prob_canon ALG_SORTED_PREFIXFREE_EQUALITY) |
725 |
||
726 |
;end_setup |
|
727 |
||
|
46787
3d3d8f8929a7
file system structure separating HOL4 and HOL Light concerns
haftmann
parents:
46780
diff
changeset
|
728 |
setup_theory "~~/src/HOL/Import/HOL4/Generated" boolean_sequence |
| 14516 | 729 |
|
730 |
consts |
|
731 |
SHD :: "(nat => bool) => bool" |
|
732 |
||
733 |
defs |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
734 |
SHD_primdef: "SHD == %f. f 0" |
| 17652 | 735 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
736 |
lemma SHD_def: "SHD f = f 0" |
| 14516 | 737 |
by (import boolean_sequence SHD_def) |
738 |
||
739 |
consts |
|
740 |
STL :: "(nat => bool) => nat => bool" |
|
741 |
||
742 |
defs |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
743 |
STL_primdef: "STL == %f n. f (Suc n)" |
| 17644 | 744 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
745 |
lemma STL_def: "STL f n = f (Suc n)" |
| 14516 | 746 |
by (import boolean_sequence STL_def) |
747 |
||
748 |
consts |
|
749 |
SCONS :: "bool => (nat => bool) => nat => bool" |
|
750 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
751 |
specification (SCONS_primdef: SCONS) SCONS_def: "(ALL h t. SCONS h t 0 = h) & (ALL h t n. SCONS h t (Suc n) = t n)" |
| 14516 | 752 |
by (import boolean_sequence SCONS_def) |
753 |
||
754 |
consts |
|
755 |
SDEST :: "(nat => bool) => bool * (nat => bool)" |
|
756 |
||
757 |
defs |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
758 |
SDEST_primdef: "SDEST == %s. (SHD s, STL s)" |
| 17644 | 759 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
760 |
lemma SDEST_def: "SDEST = (%s. (SHD s, STL s))" |
| 14516 | 761 |
by (import boolean_sequence SDEST_def) |
762 |
||
763 |
consts |
|
764 |
SCONST :: "bool => nat => bool" |
|
765 |
||
766 |
defs |
|
767 |
SCONST_primdef: "SCONST == K" |
|
768 |
||
769 |
lemma SCONST_def: "SCONST = K" |
|
770 |
by (import boolean_sequence SCONST_def) |
|
771 |
||
772 |
consts |
|
773 |
STAKE :: "nat => (nat => bool) => bool list" |
|
774 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
775 |
specification (STAKE_primdef: STAKE) STAKE_def: "(ALL s. STAKE 0 s = []) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
776 |
(ALL n s. STAKE (Suc n) s = SHD s # STAKE n (STL s))" |
| 14516 | 777 |
by (import boolean_sequence STAKE_def) |
778 |
||
779 |
consts |
|
780 |
SDROP :: "nat => (nat => bool) => nat => bool" |
|
781 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
782 |
specification (SDROP_primdef: SDROP) SDROP_def: "SDROP 0 = I & (ALL n. SDROP (Suc n) = SDROP n o STL)" |
| 14516 | 783 |
by (import boolean_sequence SDROP_def) |
784 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
785 |
lemma SCONS_SURJ: "EX xa t. x = SCONS xa t" |
| 14516 | 786 |
by (import boolean_sequence SCONS_SURJ) |
787 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
788 |
lemma SHD_STL_ISO: "EX x. SHD x = h & STL x = t" |
| 14516 | 789 |
by (import boolean_sequence SHD_STL_ISO) |
790 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
791 |
lemma SHD_SCONS: "SHD (SCONS h t) = h" |
| 14516 | 792 |
by (import boolean_sequence SHD_SCONS) |
793 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
794 |
lemma STL_SCONS: "STL (SCONS h t) = t" |
| 14516 | 795 |
by (import boolean_sequence STL_SCONS) |
796 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
797 |
lemma SHD_SCONST: "SHD (SCONST b) = b" |
| 14516 | 798 |
by (import boolean_sequence SHD_SCONST) |
799 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
800 |
lemma STL_SCONST: "STL (SCONST b) = SCONST b" |
| 14516 | 801 |
by (import boolean_sequence STL_SCONST) |
802 |
||
803 |
;end_setup |
|
804 |
||
|
46787
3d3d8f8929a7
file system structure separating HOL4 and HOL Light concerns
haftmann
parents:
46780
diff
changeset
|
805 |
setup_theory "~~/src/HOL/Import/HOL4/Generated" prob_algebra |
| 14516 | 806 |
|
807 |
consts |
|
808 |
alg_embed :: "bool list => (nat => bool) => bool" |
|
809 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
810 |
specification (alg_embed_primdef: alg_embed) alg_embed_def: "(ALL s. alg_embed [] s = True) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
811 |
(ALL h t s. alg_embed (h # t) s = (h = SHD s & alg_embed t (STL s)))" |
| 14516 | 812 |
by (import prob_algebra alg_embed_def) |
813 |
||
814 |
consts |
|
815 |
algebra_embed :: "bool list list => (nat => bool) => bool" |
|
816 |
||
817 |
specification (algebra_embed_primdef: algebra_embed) algebra_embed_def: "algebra_embed [] = EMPTY & |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
818 |
(ALL h t. |
| 14516 | 819 |
algebra_embed (h # t) = pred_set.UNION (alg_embed h) (algebra_embed t))" |
820 |
by (import prob_algebra algebra_embed_def) |
|
821 |
||
822 |
consts |
|
823 |
measurable :: "((nat => bool) => bool) => bool" |
|
824 |
||
825 |
defs |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
826 |
measurable_primdef: "measurable == %s. EX b. s = algebra_embed b" |
| 17644 | 827 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
828 |
lemma measurable_def: "measurable s = (EX b. s = algebra_embed b)" |
| 14516 | 829 |
by (import prob_algebra measurable_def) |
830 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
831 |
lemma HALVES_INTER: "pred_set.INTER (%x. SHD x = True) (%x. SHD x = False) = EMPTY" |
| 14516 | 832 |
by (import prob_algebra HALVES_INTER) |
833 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
834 |
lemma INTER_STL: "pred_set.INTER p q o STL = pred_set.INTER (p o STL) (q o STL)" |
| 14516 | 835 |
by (import prob_algebra INTER_STL) |
836 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
837 |
lemma COMPL_SHD: "COMPL (%x. SHD x = b) = (%x. SHD x = (~ b))" |
| 14516 | 838 |
by (import prob_algebra COMPL_SHD) |
839 |
||
840 |
lemma ALG_EMBED_BASIC: "alg_embed [] = pred_set.UNIV & |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
841 |
(ALL h t. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
842 |
alg_embed (h # t) = pred_set.INTER (%x. SHD x = h) (alg_embed t o STL))" |
| 14516 | 843 |
by (import prob_algebra ALG_EMBED_BASIC) |
844 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
845 |
lemma ALG_EMBED_NIL: "All (alg_embed c) = (c = [])" |
| 14516 | 846 |
by (import prob_algebra ALG_EMBED_NIL) |
847 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
848 |
lemma ALG_EMBED_POPULATED: "Ex (alg_embed b)" |
| 14516 | 849 |
by (import prob_algebra ALG_EMBED_POPULATED) |
850 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
851 |
lemma ALG_EMBED_PREFIX: "alg_embed b s & alg_embed c s ==> IS_PREFIX b c | IS_PREFIX c b" |
| 14516 | 852 |
by (import prob_algebra ALG_EMBED_PREFIX) |
853 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
854 |
lemma ALG_EMBED_PREFIX_SUBSET: "SUBSET (alg_embed b) (alg_embed c) = IS_PREFIX b c" |
| 14516 | 855 |
by (import prob_algebra ALG_EMBED_PREFIX_SUBSET) |
856 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
857 |
lemma ALG_EMBED_TWINS: "pred_set.UNION (alg_embed (SNOC True l)) (alg_embed (SNOC False l)) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
858 |
alg_embed l" |
| 14516 | 859 |
by (import prob_algebra ALG_EMBED_TWINS) |
860 |
||
861 |
lemma ALGEBRA_EMBED_BASIC: "algebra_embed [] = EMPTY & |
|
862 |
algebra_embed [[]] = pred_set.UNIV & |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
863 |
(ALL b. algebra_embed [[b]] = (%s. SHD s = b))" |
| 14516 | 864 |
by (import prob_algebra ALGEBRA_EMBED_BASIC) |
865 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
866 |
lemma ALGEBRA_EMBED_MEM: "algebra_embed b x ==> EX l. List.member b l & alg_embed l x" |
| 14516 | 867 |
by (import prob_algebra ALGEBRA_EMBED_MEM) |
868 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
869 |
lemma ALGEBRA_EMBED_APPEND: "algebra_embed (l1 @ l2) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
870 |
pred_set.UNION (algebra_embed l1) (algebra_embed l2)" |
| 14516 | 871 |
by (import prob_algebra ALGEBRA_EMBED_APPEND) |
872 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
873 |
lemma ALGEBRA_EMBED_TLS: "algebra_embed (map (op # b) l) (SCONS h t) = (h = b & algebra_embed l t)" |
| 14516 | 874 |
by (import prob_algebra ALGEBRA_EMBED_TLS) |
875 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
876 |
lemma ALG_CANON_PREFS_EMBED: "algebra_embed (alg_canon_prefs l b) = algebra_embed (l # b)" |
| 14516 | 877 |
by (import prob_algebra ALG_CANON_PREFS_EMBED) |
878 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
879 |
lemma ALG_CANON_FIND_EMBED: "algebra_embed (alg_canon_find l b) = algebra_embed (l # b)" |
| 14516 | 880 |
by (import prob_algebra ALG_CANON_FIND_EMBED) |
881 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
882 |
lemma ALG_CANON1_EMBED: "algebra_embed (alg_canon1 x) = algebra_embed x" |
| 14516 | 883 |
by (import prob_algebra ALG_CANON1_EMBED) |
884 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
885 |
lemma ALG_CANON_MERGE_EMBED: "algebra_embed (alg_canon_merge l b) = algebra_embed (l # b)" |
| 14516 | 886 |
by (import prob_algebra ALG_CANON_MERGE_EMBED) |
887 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
888 |
lemma ALG_CANON2_EMBED: "algebra_embed (alg_canon2 x) = algebra_embed x" |
| 14516 | 889 |
by (import prob_algebra ALG_CANON2_EMBED) |
890 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
891 |
lemma ALG_CANON_EMBED: "algebra_embed (alg_canon l) = algebra_embed l" |
| 14516 | 892 |
by (import prob_algebra ALG_CANON_EMBED) |
893 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
894 |
lemma ALGEBRA_CANON_UNIV: "[| algebra_canon l; algebra_embed l = pred_set.UNIV |] ==> l = [[]]" |
| 14516 | 895 |
by (import prob_algebra ALGEBRA_CANON_UNIV) |
896 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
897 |
lemma ALG_CANON_REP: "(alg_canon b = alg_canon c) = (algebra_embed b = algebra_embed c)" |
| 14516 | 898 |
by (import prob_algebra ALG_CANON_REP) |
899 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
900 |
lemma ALGEBRA_CANON_EMBED_EMPTY: "algebra_canon l ==> (ALL v. ~ algebra_embed l v) = (l = [])" |
| 14516 | 901 |
by (import prob_algebra ALGEBRA_CANON_EMBED_EMPTY) |
902 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
903 |
lemma ALGEBRA_CANON_EMBED_UNIV: "algebra_canon l ==> All (algebra_embed l) = (l = [[]])" |
| 14516 | 904 |
by (import prob_algebra ALGEBRA_CANON_EMBED_UNIV) |
905 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
906 |
lemma MEASURABLE_ALGEBRA: "measurable (algebra_embed b)" |
| 14516 | 907 |
by (import prob_algebra MEASURABLE_ALGEBRA) |
908 |
||
909 |
lemma MEASURABLE_BASIC: "measurable EMPTY & |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
910 |
measurable pred_set.UNIV & (ALL b. measurable (%s. SHD s = b))" |
| 14516 | 911 |
by (import prob_algebra MEASURABLE_BASIC) |
912 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
913 |
lemma MEASURABLE_SHD: "measurable (%s. SHD s = b)" |
| 14516 | 914 |
by (import prob_algebra MEASURABLE_SHD) |
915 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
916 |
lemma ALGEBRA_EMBED_COMPL: "EX l'. COMPL (algebra_embed l) = algebra_embed l'" |
| 14516 | 917 |
by (import prob_algebra ALGEBRA_EMBED_COMPL) |
918 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
919 |
lemma MEASURABLE_COMPL: "measurable (COMPL s) = measurable s" |
| 14516 | 920 |
by (import prob_algebra MEASURABLE_COMPL) |
921 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
922 |
lemma MEASURABLE_UNION: "measurable s & measurable t ==> measurable (pred_set.UNION s t)" |
| 14516 | 923 |
by (import prob_algebra MEASURABLE_UNION) |
924 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
925 |
lemma MEASURABLE_INTER: "measurable s & measurable t ==> measurable (pred_set.INTER s t)" |
| 14516 | 926 |
by (import prob_algebra MEASURABLE_INTER) |
927 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
928 |
lemma MEASURABLE_STL: "measurable (p o STL) = measurable p" |
| 14516 | 929 |
by (import prob_algebra MEASURABLE_STL) |
930 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
931 |
lemma MEASURABLE_SDROP: "measurable (p o SDROP n) = measurable p" |
| 14516 | 932 |
by (import prob_algebra MEASURABLE_SDROP) |
933 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
934 |
lemma MEASURABLE_INTER_HALVES: "(measurable (pred_set.INTER (%x. SHD x = True) p) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
935 |
measurable (pred_set.INTER (%x. SHD x = False) p)) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
936 |
measurable p" |
| 14516 | 937 |
by (import prob_algebra MEASURABLE_INTER_HALVES) |
938 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
939 |
lemma MEASURABLE_HALVES: "measurable |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
940 |
(pred_set.UNION (pred_set.INTER (%x. SHD x = True) p) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
941 |
(pred_set.INTER (%x. SHD x = False) q)) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
942 |
(measurable (pred_set.INTER (%x. SHD x = True) p) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
943 |
measurable (pred_set.INTER (%x. SHD x = False) q))" |
| 14516 | 944 |
by (import prob_algebra MEASURABLE_HALVES) |
945 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
946 |
lemma MEASURABLE_INTER_SHD: "measurable (pred_set.INTER (%x. SHD x = b) (p o STL)) = measurable p" |
| 14516 | 947 |
by (import prob_algebra MEASURABLE_INTER_SHD) |
948 |
||
949 |
;end_setup |
|
950 |
||
|
46787
3d3d8f8929a7
file system structure separating HOL4 and HOL Light concerns
haftmann
parents:
46780
diff
changeset
|
951 |
setup_theory "~~/src/HOL/Import/HOL4/Generated" prob |
| 14516 | 952 |
|
953 |
consts |
|
954 |
alg_measure :: "bool list list => real" |
|
955 |
||
| 17652 | 956 |
specification (alg_measure_primdef: alg_measure) alg_measure_def: "alg_measure [] = 0 & |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
957 |
(ALL l rest. alg_measure (l # rest) = (1 / 2) ^ length l + alg_measure rest)" |
| 14516 | 958 |
by (import prob alg_measure_def) |
959 |
||
960 |
consts |
|
961 |
algebra_measure :: "bool list list => real" |
|
962 |
||
963 |
defs |
|
964 |
algebra_measure_primdef: "algebra_measure == |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
965 |
%b. prob_extra.inf |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
966 |
(%r. EX c. algebra_embed b = algebra_embed c & alg_measure c = r)" |
| 17644 | 967 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
968 |
lemma algebra_measure_def: "algebra_measure b = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
969 |
prob_extra.inf |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
970 |
(%r. EX c. algebra_embed b = algebra_embed c & alg_measure c = r)" |
| 14516 | 971 |
by (import prob algebra_measure_def) |
972 |
||
973 |
consts |
|
974 |
prob :: "((nat => bool) => bool) => real" |
|
975 |
||
976 |
defs |
|
977 |
prob_primdef: "prob == |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
978 |
%s. real.sup (%r. EX b. algebra_measure b = r & SUBSET (algebra_embed b) s)" |
| 17644 | 979 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
980 |
lemma prob_def: "prob s = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
981 |
real.sup (%r. EX b. algebra_measure b = r & SUBSET (algebra_embed b) s)" |
| 14516 | 982 |
by (import prob prob_def) |
983 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
984 |
lemma ALG_TWINS_MEASURE: "((1::real) / (2::real)) ^ length (SNOC True (l::bool list)) + |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
985 |
((1::real) / (2::real)) ^ length (SNOC False l) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
986 |
((1::real) / (2::real)) ^ length l" |
| 14516 | 987 |
by (import prob ALG_TWINS_MEASURE) |
988 |
||
| 17652 | 989 |
lemma ALG_MEASURE_BASIC: "alg_measure [] = 0 & |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
990 |
alg_measure [[]] = 1 & (ALL b. alg_measure [[b]] = 1 / 2)" |
| 14516 | 991 |
by (import prob ALG_MEASURE_BASIC) |
992 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
993 |
lemma ALG_MEASURE_POS: "0 <= alg_measure l" |
| 14516 | 994 |
by (import prob ALG_MEASURE_POS) |
995 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
996 |
lemma ALG_MEASURE_APPEND: "alg_measure (l1 @ l2) = alg_measure l1 + alg_measure l2" |
| 14516 | 997 |
by (import prob ALG_MEASURE_APPEND) |
998 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
999 |
lemma ALG_MEASURE_TLS: "2 * alg_measure (map (op # b) l) = alg_measure l" |
| 14516 | 1000 |
by (import prob ALG_MEASURE_TLS) |
1001 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1002 |
lemma ALG_CANON_PREFS_MONO: "alg_measure (alg_canon_prefs l b) <= alg_measure (l # b)" |
| 14516 | 1003 |
by (import prob ALG_CANON_PREFS_MONO) |
1004 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1005 |
lemma ALG_CANON_FIND_MONO: "alg_measure (alg_canon_find l b) <= alg_measure (l # b)" |
| 14516 | 1006 |
by (import prob ALG_CANON_FIND_MONO) |
1007 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1008 |
lemma ALG_CANON1_MONO: "alg_measure (alg_canon1 x) <= alg_measure x" |
| 14516 | 1009 |
by (import prob ALG_CANON1_MONO) |
1010 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1011 |
lemma ALG_CANON_MERGE_MONO: "alg_measure (alg_canon_merge l b) <= alg_measure (l # b)" |
| 14516 | 1012 |
by (import prob ALG_CANON_MERGE_MONO) |
1013 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1014 |
lemma ALG_CANON2_MONO: "alg_measure (alg_canon2 x) <= alg_measure x" |
| 14516 | 1015 |
by (import prob ALG_CANON2_MONO) |
1016 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1017 |
lemma ALG_CANON_MONO: "alg_measure (alg_canon l) <= alg_measure l" |
| 14516 | 1018 |
by (import prob ALG_CANON_MONO) |
1019 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1020 |
lemma ALGEBRA_MEASURE_DEF_ALT: "algebra_measure l = alg_measure (alg_canon l)" |
| 14516 | 1021 |
by (import prob ALGEBRA_MEASURE_DEF_ALT) |
1022 |
||
| 17652 | 1023 |
lemma ALGEBRA_MEASURE_BASIC: "algebra_measure [] = 0 & |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1024 |
algebra_measure [[]] = 1 & (ALL b. algebra_measure [[b]] = 1 / 2)" |
| 14516 | 1025 |
by (import prob ALGEBRA_MEASURE_BASIC) |
1026 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1027 |
lemma ALGEBRA_CANON_MEASURE_MAX: "algebra_canon l ==> alg_measure l <= 1" |
| 14516 | 1028 |
by (import prob ALGEBRA_CANON_MEASURE_MAX) |
1029 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1030 |
lemma ALGEBRA_MEASURE_MAX: "algebra_measure l <= 1" |
| 14516 | 1031 |
by (import prob ALGEBRA_MEASURE_MAX) |
1032 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1033 |
lemma ALGEBRA_MEASURE_MONO_EMBED: "SUBSET (algebra_embed x) (algebra_embed xa) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1034 |
==> algebra_measure x <= algebra_measure xa" |
| 14516 | 1035 |
by (import prob ALGEBRA_MEASURE_MONO_EMBED) |
1036 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1037 |
lemma ALG_MEASURE_COMPL: "[| algebra_canon l; algebra_canon c; |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1038 |
COMPL (algebra_embed l) = algebra_embed c |] |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1039 |
==> alg_measure l + alg_measure c = 1" |
| 14516 | 1040 |
by (import prob ALG_MEASURE_COMPL) |
1041 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1042 |
lemma ALG_MEASURE_ADDITIVE: "[| algebra_canon l; algebra_canon c; algebra_canon d; |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1043 |
pred_set.INTER (algebra_embed c) (algebra_embed d) = EMPTY & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1044 |
algebra_embed l = pred_set.UNION (algebra_embed c) (algebra_embed d) |] |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1045 |
==> alg_measure l = alg_measure c + alg_measure d" |
| 14516 | 1046 |
by (import prob ALG_MEASURE_ADDITIVE) |
1047 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1048 |
lemma PROB_ALGEBRA: "prob (algebra_embed l) = algebra_measure l" |
| 14516 | 1049 |
by (import prob PROB_ALGEBRA) |
1050 |
||
| 17652 | 1051 |
lemma PROB_BASIC: "prob EMPTY = 0 & |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1052 |
prob pred_set.UNIV = 1 & (ALL b. prob (%s. SHD s = b) = 1 / 2)" |
| 14516 | 1053 |
by (import prob PROB_BASIC) |
1054 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1055 |
lemma PROB_ADDITIVE: "measurable s & measurable t & pred_set.INTER s t = EMPTY |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1056 |
==> prob (pred_set.UNION s t) = prob s + prob t" |
| 14516 | 1057 |
by (import prob PROB_ADDITIVE) |
1058 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1059 |
lemma PROB_COMPL: "measurable s ==> prob (COMPL s) = 1 - prob s" |
| 14516 | 1060 |
by (import prob PROB_COMPL) |
1061 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1062 |
lemma PROB_SUP_EXISTS1: "EX x b. algebra_measure b = x & SUBSET (algebra_embed b) s" |
| 14516 | 1063 |
by (import prob PROB_SUP_EXISTS1) |
1064 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1065 |
lemma PROB_SUP_EXISTS2: "EX x. ALL r. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1066 |
(EX b. algebra_measure b = r & SUBSET (algebra_embed b) s) --> |
| 17694 | 1067 |
r <= x" |
| 14516 | 1068 |
by (import prob PROB_SUP_EXISTS2) |
1069 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1070 |
lemma PROB_LE_X: "(!!s'. measurable s' & SUBSET s' s ==> prob s' <= x) ==> prob s <= x" |
| 14516 | 1071 |
by (import prob PROB_LE_X) |
1072 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1073 |
lemma X_LE_PROB: "EX s'. measurable s' & SUBSET s' s & x <= prob s' ==> x <= prob s" |
| 14516 | 1074 |
by (import prob X_LE_PROB) |
1075 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1076 |
lemma PROB_SUBSET_MONO: "SUBSET s t ==> prob s <= prob t" |
| 14516 | 1077 |
by (import prob PROB_SUBSET_MONO) |
1078 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1079 |
lemma PROB_ALG: "prob (alg_embed x) = (1 / 2) ^ length x" |
| 14516 | 1080 |
by (import prob PROB_ALG) |
1081 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1082 |
lemma PROB_STL: "measurable p ==> prob (p o STL) = prob p" |
| 14516 | 1083 |
by (import prob PROB_STL) |
1084 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1085 |
lemma PROB_SDROP: "measurable p ==> prob (p o SDROP n) = prob p" |
| 14516 | 1086 |
by (import prob PROB_SDROP) |
1087 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1088 |
lemma PROB_INTER_HALVES: "measurable p |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1089 |
==> prob (pred_set.INTER (%x. SHD x = True) p) + |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1090 |
prob (pred_set.INTER (%x. SHD x = False) p) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1091 |
prob p" |
| 14516 | 1092 |
by (import prob PROB_INTER_HALVES) |
1093 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1094 |
lemma PROB_INTER_SHD: "measurable p |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1095 |
==> prob (pred_set.INTER (%x. SHD x = b) (p o STL)) = 1 / 2 * prob p" |
| 14516 | 1096 |
by (import prob PROB_INTER_SHD) |
1097 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1098 |
lemma ALGEBRA_MEASURE_POS: "0 <= algebra_measure l" |
| 14516 | 1099 |
by (import prob ALGEBRA_MEASURE_POS) |
1100 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1101 |
lemma ALGEBRA_MEASURE_RANGE: "0 <= algebra_measure l & algebra_measure l <= 1" |
| 14516 | 1102 |
by (import prob ALGEBRA_MEASURE_RANGE) |
1103 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1104 |
lemma PROB_POS: "0 <= prob p" |
| 14516 | 1105 |
by (import prob PROB_POS) |
1106 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1107 |
lemma PROB_MAX: "prob p <= 1" |
| 14516 | 1108 |
by (import prob PROB_MAX) |
1109 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1110 |
lemma PROB_RANGE: "0 <= prob p & prob p <= 1" |
| 14516 | 1111 |
by (import prob PROB_RANGE) |
1112 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1113 |
lemma ABS_PROB: "abs (prob p) = prob p" |
| 14516 | 1114 |
by (import prob ABS_PROB) |
1115 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1116 |
lemma PROB_SHD: "prob (%s. SHD s = b) = 1 / 2" |
| 14516 | 1117 |
by (import prob PROB_SHD) |
1118 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1119 |
lemma PROB_COMPL_LE1: "measurable p ==> (prob (COMPL p) <= r) = (1 - r <= prob p)" |
| 14516 | 1120 |
by (import prob PROB_COMPL_LE1) |
1121 |
||
1122 |
;end_setup |
|
1123 |
||
|
46787
3d3d8f8929a7
file system structure separating HOL4 and HOL Light concerns
haftmann
parents:
46780
diff
changeset
|
1124 |
setup_theory "~~/src/HOL/Import/HOL4/Generated" prob_pseudo |
| 14516 | 1125 |
|
1126 |
consts |
|
1127 |
pseudo_linear_hd :: "nat => bool" |
|
1128 |
||
1129 |
defs |
|
1130 |
pseudo_linear_hd_primdef: "pseudo_linear_hd == EVEN" |
|
1131 |
||
1132 |
lemma pseudo_linear_hd_def: "pseudo_linear_hd = EVEN" |
|
1133 |
by (import prob_pseudo pseudo_linear_hd_def) |
|
1134 |
||
1135 |
consts |
|
1136 |
pseudo_linear_tl :: "nat => nat => nat => nat => nat" |
|
1137 |
||
1138 |
defs |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1139 |
pseudo_linear_tl_primdef: "pseudo_linear_tl == %a b n x. (a * x + b) mod (2 * n + 1)" |
| 17644 | 1140 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1141 |
lemma pseudo_linear_tl_def: "pseudo_linear_tl a b n x = (a * x + b) mod (2 * n + 1)" |
| 14516 | 1142 |
by (import prob_pseudo pseudo_linear_tl_def) |
1143 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1144 |
lemma PSEUDO_LINEAR1_EXECUTE: "EX x. (ALL xa. SHD (x xa) = pseudo_linear_hd xa) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1145 |
(ALL xa. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1146 |
STL (x xa) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1147 |
x (pseudo_linear_tl |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1148 |
(NUMERAL |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1149 |
(NUMERAL_BIT1 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1150 |
(NUMERAL_BIT1 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1151 |
(NUMERAL_BIT1 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1152 |
(NUMERAL_BIT2 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1153 |
(NUMERAL_BIT1 (NUMERAL_BIT2 ALT_ZERO))))))) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1154 |
(NUMERAL |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1155 |
(NUMERAL_BIT1 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1156 |
(NUMERAL_BIT1 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1157 |
(NUMERAL_BIT1 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1158 |
(NUMERAL_BIT1 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1159 |
(NUMERAL_BIT1 (NUMERAL_BIT2 ALT_ZERO))))))) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1160 |
(NUMERAL |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1161 |
(NUMERAL_BIT1 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1162 |
(NUMERAL_BIT1 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1163 |
(NUMERAL_BIT1 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1164 |
(NUMERAL_BIT1 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1165 |
(NUMERAL_BIT2 (NUMERAL_BIT1 ALT_ZERO))))))) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1166 |
xa))" |
| 14516 | 1167 |
by (import prob_pseudo PSEUDO_LINEAR1_EXECUTE) |
1168 |
||
1169 |
consts |
|
1170 |
pseudo_linear1 :: "nat => nat => bool" |
|
1171 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1172 |
specification (pseudo_linear1_primdef: pseudo_linear1) pseudo_linear1_def: "(ALL x. SHD (pseudo_linear1 x) = pseudo_linear_hd x) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1173 |
(ALL x. |
| 14516 | 1174 |
STL (pseudo_linear1 x) = |
1175 |
pseudo_linear1 |
|
1176 |
(pseudo_linear_tl |
|
1177 |
(NUMERAL |
|
1178 |
(NUMERAL_BIT1 |
|
1179 |
(NUMERAL_BIT1 |
|
1180 |
(NUMERAL_BIT1 |
|
1181 |
(NUMERAL_BIT2 (NUMERAL_BIT1 (NUMERAL_BIT2 ALT_ZERO))))))) |
|
1182 |
(NUMERAL |
|
1183 |
(NUMERAL_BIT1 |
|
1184 |
(NUMERAL_BIT1 |
|
1185 |
(NUMERAL_BIT1 |
|
1186 |
(NUMERAL_BIT1 (NUMERAL_BIT1 (NUMERAL_BIT2 ALT_ZERO))))))) |
|
1187 |
(NUMERAL |
|
1188 |
(NUMERAL_BIT1 |
|
1189 |
(NUMERAL_BIT1 |
|
1190 |
(NUMERAL_BIT1 |
|
1191 |
(NUMERAL_BIT1 (NUMERAL_BIT2 (NUMERAL_BIT1 ALT_ZERO))))))) |
|
1192 |
x))" |
|
1193 |
by (import prob_pseudo pseudo_linear1_def) |
|
1194 |
||
1195 |
consts |
|
1196 |
pseudo :: "nat => nat => bool" |
|
1197 |
||
1198 |
defs |
|
1199 |
pseudo_primdef: "pseudo == pseudo_linear1" |
|
1200 |
||
1201 |
lemma pseudo_def: "pseudo = pseudo_linear1" |
|
1202 |
by (import prob_pseudo pseudo_def) |
|
1203 |
||
1204 |
;end_setup |
|
1205 |
||
|
46787
3d3d8f8929a7
file system structure separating HOL4 and HOL Light concerns
haftmann
parents:
46780
diff
changeset
|
1206 |
setup_theory "~~/src/HOL/Import/HOL4/Generated" prob_indep |
| 14516 | 1207 |
|
1208 |
consts |
|
1209 |
indep_set :: "((nat => bool) => bool) => ((nat => bool) => bool) => bool" |
|
1210 |
||
1211 |
defs |
|
1212 |
indep_set_primdef: "indep_set == |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1213 |
%p q. measurable p & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1214 |
measurable q & prob (pred_set.INTER p q) = prob p * prob q" |
| 17644 | 1215 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1216 |
lemma indep_set_def: "indep_set p q = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1217 |
(measurable p & measurable q & prob (pred_set.INTER p q) = prob p * prob q)" |
| 14516 | 1218 |
by (import prob_indep indep_set_def) |
1219 |
||
1220 |
consts |
|
1221 |
alg_cover_set :: "bool list list => bool" |
|
1222 |
||
1223 |
defs |
|
1224 |
alg_cover_set_primdef: "alg_cover_set == |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1225 |
%l. alg_sorted l & alg_prefixfree l & algebra_embed l = pred_set.UNIV" |
| 17644 | 1226 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1227 |
lemma alg_cover_set_def: "alg_cover_set l = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1228 |
(alg_sorted l & alg_prefixfree l & algebra_embed l = pred_set.UNIV)" |
| 14516 | 1229 |
by (import prob_indep alg_cover_set_def) |
1230 |
||
1231 |
consts |
|
1232 |
alg_cover :: "bool list list => (nat => bool) => bool list" |
|
1233 |
||
1234 |
defs |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1235 |
alg_cover_primdef: "alg_cover == %l x. SOME b. List.member l b & alg_embed b x" |
| 17644 | 1236 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1237 |
lemma alg_cover_def: "alg_cover l x = (SOME b. List.member l b & alg_embed b x)" |
| 14516 | 1238 |
by (import prob_indep alg_cover_def) |
1239 |
||
1240 |
consts |
|
| 17652 | 1241 |
indep :: "((nat => bool) => 'a * (nat => bool)) => bool" |
| 14516 | 1242 |
|
1243 |
defs |
|
1244 |
indep_primdef: "indep == |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1245 |
%f. EX l r. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1246 |
alg_cover_set l & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1247 |
(ALL s. f s = (let c = alg_cover l s in (r c, SDROP (length c) s)))" |
| 17644 | 1248 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1249 |
lemma indep_def: "indep f = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1250 |
(EX l r. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1251 |
alg_cover_set l & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1252 |
(ALL s. f s = (let c = alg_cover l s in (r c, SDROP (length c) s))))" |
| 14516 | 1253 |
by (import prob_indep indep_def) |
1254 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1255 |
lemma INDEP_SET_BASIC: "measurable p ==> indep_set EMPTY p & indep_set pred_set.UNIV p" |
| 14516 | 1256 |
by (import prob_indep INDEP_SET_BASIC) |
1257 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1258 |
lemma INDEP_SET_SYM: "indep_set p q = indep_set p q" |
| 14516 | 1259 |
by (import prob_indep INDEP_SET_SYM) |
1260 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1261 |
lemma INDEP_SET_DISJOINT_DECOMP: "indep_set p r & indep_set q r & pred_set.INTER p q = EMPTY |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1262 |
==> indep_set (pred_set.UNION p q) r" |
| 14516 | 1263 |
by (import prob_indep INDEP_SET_DISJOINT_DECOMP) |
1264 |
||
1265 |
lemma ALG_COVER_SET_BASIC: "~ alg_cover_set [] & alg_cover_set [[]] & alg_cover_set [[True], [False]]" |
|
1266 |
by (import prob_indep ALG_COVER_SET_BASIC) |
|
1267 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1268 |
lemma ALG_COVER_WELL_DEFINED: "alg_cover_set l |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1269 |
==> List.member l (alg_cover l x) & alg_embed (alg_cover l x) x" |
| 14516 | 1270 |
by (import prob_indep ALG_COVER_WELL_DEFINED) |
1271 |
||
1272 |
lemma ALG_COVER_UNIV: "alg_cover [[]] = K []" |
|
1273 |
by (import prob_indep ALG_COVER_UNIV) |
|
1274 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1275 |
lemma MAP_CONS_TL_FILTER: "~ List.member (l::bool list list) [] |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1276 |
==> map (op # (b::bool)) (map tl [x::bool list<-l. hd x = b]) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1277 |
[x::bool list<-l. hd x = b]" |
| 14516 | 1278 |
by (import prob_indep MAP_CONS_TL_FILTER) |
1279 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1280 |
lemma ALG_COVER_SET_CASES_THM: "alg_cover_set l = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1281 |
(l = [[]] | |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1282 |
(EX x xa. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1283 |
alg_cover_set x & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1284 |
alg_cover_set xa & l = map (op # True) x @ map (op # False) xa))" |
| 14516 | 1285 |
by (import prob_indep ALG_COVER_SET_CASES_THM) |
1286 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1287 |
lemma ALG_COVER_SET_CASES: "[| P [[]] & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1288 |
(ALL l1 l2. |
| 17694 | 1289 |
alg_cover_set l1 & |
1290 |
alg_cover_set l2 & |
|
1291 |
alg_cover_set (map (op # True) l1 @ map (op # False) l2) --> |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1292 |
P (map (op # True) l1 @ map (op # False) l2)); |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1293 |
alg_cover_set l |] |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1294 |
==> P l" |
| 14516 | 1295 |
by (import prob_indep ALG_COVER_SET_CASES) |
1296 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1297 |
lemma ALG_COVER_SET_INDUCTION: "[| P [[]] & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1298 |
(ALL l1 l2. |
| 17694 | 1299 |
alg_cover_set l1 & |
1300 |
alg_cover_set l2 & |
|
1301 |
P l1 & |
|
1302 |
P l2 & alg_cover_set (map (op # True) l1 @ map (op # False) l2) --> |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1303 |
P (map (op # True) l1 @ map (op # False) l2)); |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1304 |
alg_cover_set l |] |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1305 |
==> P l" |
| 14516 | 1306 |
by (import prob_indep ALG_COVER_SET_INDUCTION) |
1307 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1308 |
lemma ALG_COVER_EXISTS_UNIQUE: "alg_cover_set l ==> EX! x. List.member l x & alg_embed x s" |
| 14516 | 1309 |
by (import prob_indep ALG_COVER_EXISTS_UNIQUE) |
1310 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1311 |
lemma ALG_COVER_UNIQUE: "alg_cover_set l & List.member l x & alg_embed x s ==> alg_cover l s = x" |
| 14516 | 1312 |
by (import prob_indep ALG_COVER_UNIQUE) |
1313 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1314 |
lemma ALG_COVER_STEP: "alg_cover_set l1 & alg_cover_set l2 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1315 |
==> alg_cover (map (op # True) l1 @ map (op # False) l2) (SCONS h t) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1316 |
(if h then True # alg_cover l1 t else False # alg_cover l2 t)" |
| 14516 | 1317 |
by (import prob_indep ALG_COVER_STEP) |
1318 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1319 |
lemma ALG_COVER_HEAD: "alg_cover_set l ==> f o alg_cover l = algebra_embed (filter f l)" |
| 14516 | 1320 |
by (import prob_indep ALG_COVER_HEAD) |
1321 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1322 |
lemma ALG_COVER_TAIL_STEP: "alg_cover_set l1 & alg_cover_set l2 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1323 |
==> q o |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1324 |
(%x. SDROP |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1325 |
(length (alg_cover (map (op # True) l1 @ map (op # False) l2) x)) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1326 |
x) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1327 |
pred_set.UNION |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1328 |
(pred_set.INTER (%x. SHD x = True) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1329 |
(q o ((%x. SDROP (length (alg_cover l1 x)) x) o STL))) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1330 |
(pred_set.INTER (%x. SHD x = False) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1331 |
(q o ((%x. SDROP (length (alg_cover l2 x)) x) o STL)))" |
| 14516 | 1332 |
by (import prob_indep ALG_COVER_TAIL_STEP) |
1333 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1334 |
lemma ALG_COVER_TAIL_MEASURABLE: "alg_cover_set l |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1335 |
==> measurable (q o (%x. SDROP (length (alg_cover l x)) x)) = measurable q" |
| 14516 | 1336 |
by (import prob_indep ALG_COVER_TAIL_MEASURABLE) |
1337 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1338 |
lemma ALG_COVER_TAIL_PROB: "[| alg_cover_set l; measurable q |] |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1339 |
==> prob (q o (%x. SDROP (length (alg_cover l x)) x)) = prob q" |
| 14516 | 1340 |
by (import prob_indep ALG_COVER_TAIL_PROB) |
1341 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1342 |
lemma INDEP_INDEP_SET_LEMMA: "[| alg_cover_set l; measurable q; List.member l x |] |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1343 |
==> prob |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1344 |
(pred_set.INTER (alg_embed x) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1345 |
(q o (%x. SDROP (length (alg_cover l x)) x))) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1346 |
(1 / 2) ^ length x * prob q" |
| 14516 | 1347 |
by (import prob_indep INDEP_INDEP_SET_LEMMA) |
1348 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1349 |
lemma INDEP_SET_LIST: "alg_sorted l & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1350 |
alg_prefixfree l & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1351 |
measurable q & (ALL x. List.member l x --> indep_set (alg_embed x) q) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1352 |
==> indep_set (algebra_embed l) q" |
| 14516 | 1353 |
by (import prob_indep INDEP_SET_LIST) |
1354 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1355 |
lemma INDEP_INDEP_SET: "indep f & measurable q ==> indep_set (p o (fst o f)) (q o (snd o f))" |
| 14516 | 1356 |
by (import prob_indep INDEP_INDEP_SET) |
1357 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1358 |
lemma INDEP_UNIT: "indep (UNIT x)" |
| 14516 | 1359 |
by (import prob_indep INDEP_UNIT) |
1360 |
||
1361 |
lemma INDEP_SDEST: "indep SDEST" |
|
1362 |
by (import prob_indep INDEP_SDEST) |
|
1363 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1364 |
lemma BIND_STEP: "BIND SDEST (%k. f o SCONS k) = f" |
| 14516 | 1365 |
by (import prob_indep BIND_STEP) |
1366 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1367 |
lemma INDEP_BIND_SDEST: "(!!x. indep (f x)) ==> indep (BIND SDEST f)" |
| 14516 | 1368 |
by (import prob_indep INDEP_BIND_SDEST) |
1369 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1370 |
lemma INDEP_BIND: "indep f & (ALL x. indep (g x)) ==> indep (BIND f g)" |
| 14516 | 1371 |
by (import prob_indep INDEP_BIND) |
1372 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1373 |
lemma INDEP_PROB: "indep f & measurable q |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1374 |
==> prob (pred_set.INTER (p o (fst o f)) (q o (snd o f))) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1375 |
prob (p o (fst o f)) * prob q" |
| 14516 | 1376 |
by (import prob_indep INDEP_PROB) |
1377 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1378 |
lemma INDEP_MEASURABLE1: "indep f ==> measurable (p o (fst o f))" |
| 14516 | 1379 |
by (import prob_indep INDEP_MEASURABLE1) |
1380 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1381 |
lemma INDEP_MEASURABLE2: "indep f & measurable q ==> measurable (q o (snd o f))" |
| 14516 | 1382 |
by (import prob_indep INDEP_MEASURABLE2) |
1383 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1384 |
lemma PROB_INDEP_BOUND: "indep f |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1385 |
==> prob (%s. fst (f s) < Suc n) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1386 |
prob (%s. fst (f s) < n) + prob (%s. fst (f s) = n)" |
| 14516 | 1387 |
by (import prob_indep PROB_INDEP_BOUND) |
1388 |
||
1389 |
;end_setup |
|
1390 |
||
|
46787
3d3d8f8929a7
file system structure separating HOL4 and HOL Light concerns
haftmann
parents:
46780
diff
changeset
|
1391 |
setup_theory "~~/src/HOL/Import/HOL4/Generated" prob_uniform |
| 14516 | 1392 |
|
1393 |
consts |
|
1394 |
unif_bound :: "nat => nat" |
|
1395 |
||
1396 |
defs |
|
1397 |
unif_bound_primdef: "unif_bound == |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1398 |
WFREC (SOME R. WF R & (ALL v. R (Suc v div 2) (Suc v))) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1399 |
(%unif_bound. nat_case 0 (%v1. Suc (unif_bound (Suc v1 div 2))))" |
| 14516 | 1400 |
|
1401 |
lemma unif_bound_primitive_def: "unif_bound = |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1402 |
WFREC (SOME R. WF R & (ALL v. R (Suc v div 2) (Suc v))) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1403 |
(%unif_bound. nat_case 0 (%v1. Suc (unif_bound (Suc v1 div 2))))" |
| 14516 | 1404 |
by (import prob_uniform unif_bound_primitive_def) |
1405 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1406 |
lemma unif_bound_def: "unif_bound 0 = 0 & unif_bound (Suc v) = Suc (unif_bound (Suc v div 2))" |
| 14516 | 1407 |
by (import prob_uniform unif_bound_def) |
1408 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1409 |
lemma unif_bound_ind: "P 0 & (ALL v. P (Suc v div 2) --> P (Suc v)) ==> P x" |
| 14516 | 1410 |
by (import prob_uniform unif_bound_ind) |
1411 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1412 |
definition |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1413 |
unif_tupled :: "nat * (nat => bool) => nat * (nat => bool)" where |
| 14516 | 1414 |
"unif_tupled == |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1415 |
WFREC (SOME R. WF R & (ALL s v2. R (Suc v2 div 2, s) (Suc v2, s))) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1416 |
(%unif_tupled (v, v1). |
| 17652 | 1417 |
case v of 0 => (0, v1) |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1418 |
| Suc v3 => |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1419 |
let (m, s') = unif_tupled (Suc v3 div 2, v1) |
| 17652 | 1420 |
in (if SHD s' then 2 * m + 1 else 2 * m, STL s'))" |
| 14516 | 1421 |
|
1422 |
lemma unif_tupled_primitive_def: "unif_tupled = |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1423 |
WFREC (SOME R. WF R & (ALL s v2. R (Suc v2 div 2, s) (Suc v2, s))) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1424 |
(%unif_tupled (v, v1). |
| 17652 | 1425 |
case v of 0 => (0, v1) |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1426 |
| Suc v3 => |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1427 |
let (m, s') = unif_tupled (Suc v3 div 2, v1) |
| 17652 | 1428 |
in (if SHD s' then 2 * m + 1 else 2 * m, STL s'))" |
| 14516 | 1429 |
by (import prob_uniform unif_tupled_primitive_def) |
1430 |
||
1431 |
consts |
|
1432 |
unif :: "nat => (nat => bool) => nat * (nat => bool)" |
|
1433 |
||
1434 |
defs |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1435 |
unif_primdef: "unif == %x x1. unif_tupled (x, x1)" |
| 17644 | 1436 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1437 |
lemma unif_curried_def: "unif x x1 = unif_tupled (x, x1)" |
| 14516 | 1438 |
by (import prob_uniform unif_curried_def) |
1439 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1440 |
lemma unif_def: "unif 0 s = (0, s) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1441 |
unif (Suc v2) s = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1442 |
(let (m, s') = unif (Suc v2 div 2) s |
| 17652 | 1443 |
in (if SHD s' then 2 * m + 1 else 2 * m, STL s'))" |
| 14516 | 1444 |
by (import prob_uniform unif_def) |
1445 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1446 |
lemma unif_ind: "All ((P::nat => (nat => bool) => bool) (0::nat)) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1447 |
(ALL (v2::nat) s::nat => bool. P (Suc v2 div (2::nat)) s --> P (Suc v2) s) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1448 |
==> P (v::nat) (x::nat => bool)" |
| 14516 | 1449 |
by (import prob_uniform unif_ind) |
1450 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1451 |
definition |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1452 |
uniform_tupled :: "nat * nat * (nat => bool) => nat * (nat => bool)" where |
| 17694 | 1453 |
"uniform_tupled == |
1454 |
WFREC |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1455 |
(SOME R. |
| 17694 | 1456 |
WF R & |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1457 |
(ALL t s n res s'. |
| 17694 | 1458 |
(res, s') = unif n s & ~ res < Suc n --> |
1459 |
R (t, Suc n, s') (Suc t, Suc n, s))) |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1460 |
(%uniform_tupled (v, v1). |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1461 |
case v of 0 => case v1 of (0, v4) => ARB | (Suc v5, v4) => (0, v4) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1462 |
| Suc v2 => |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1463 |
case v1 of (0, v8) => ARB |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1464 |
| (Suc v9, v8) => |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1465 |
let (res, s') = unif v9 v8 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1466 |
in if res < Suc v9 then (res, s') |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1467 |
else uniform_tupled (v2, Suc v9, s'))" |
| 14516 | 1468 |
|
| 17694 | 1469 |
lemma uniform_tupled_primitive_def: "uniform_tupled = |
1470 |
WFREC |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1471 |
(SOME R. |
| 17694 | 1472 |
WF R & |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1473 |
(ALL t s n res s'. |
| 17694 | 1474 |
(res, s') = unif n s & ~ res < Suc n --> |
1475 |
R (t, Suc n, s') (Suc t, Suc n, s))) |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1476 |
(%uniform_tupled (v, v1). |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1477 |
case v of 0 => case v1 of (0, v4) => ARB | (Suc v5, v4) => (0, v4) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1478 |
| Suc v2 => |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1479 |
case v1 of (0, v8) => ARB |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1480 |
| (Suc v9, v8) => |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1481 |
let (res, s') = unif v9 v8 |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1482 |
in if res < Suc v9 then (res, s') |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1483 |
else uniform_tupled (v2, Suc v9, s'))" |
| 14516 | 1484 |
by (import prob_uniform uniform_tupled_primitive_def) |
1485 |
||
1486 |
consts |
|
1487 |
uniform :: "nat => nat => (nat => bool) => nat * (nat => bool)" |
|
1488 |
||
1489 |
defs |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1490 |
uniform_primdef: "uniform == %x x1 x2. uniform_tupled (x, x1, x2)" |
| 17644 | 1491 |
|
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1492 |
lemma uniform_curried_def: "uniform x x1 x2 = uniform_tupled (x, x1, x2)" |
| 14516 | 1493 |
by (import prob_uniform uniform_curried_def) |
1494 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1495 |
lemma uniform_ind: "(ALL x. All (P (Suc x) 0)) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1496 |
All (P 0 0) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1497 |
(ALL x. All (P 0 (Suc x))) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1498 |
(ALL x xa xb. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1499 |
(ALL xc xd. |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1500 |
(xc, xd) = unif xa xb & ~ xc < Suc xa --> P x (Suc xa) xd) --> |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1501 |
P (Suc x) (Suc xa) xb) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1502 |
==> P x xa xb" |
| 14516 | 1503 |
by (import prob_uniform uniform_ind) |
1504 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1505 |
lemma uniform_def: "uniform 0 (Suc n) s = (0, s) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1506 |
uniform (Suc t) (Suc n) s = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1507 |
(let (xa, x) = unif n s |
| 14516 | 1508 |
in if xa < Suc n then (xa, x) else uniform t (Suc n) x)" |
1509 |
by (import prob_uniform uniform_def) |
|
1510 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1511 |
lemma SUC_DIV_TWO_ZERO: "(Suc n div 2 = 0) = (n = 0)" |
| 14516 | 1512 |
by (import prob_uniform SUC_DIV_TWO_ZERO) |
1513 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1514 |
lemma UNIF_BOUND_LOWER: "n < 2 ^ unif_bound n" |
| 14516 | 1515 |
by (import prob_uniform UNIF_BOUND_LOWER) |
1516 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1517 |
lemma UNIF_BOUND_LOWER_SUC: "Suc n <= 2 ^ unif_bound n" |
| 14516 | 1518 |
by (import prob_uniform UNIF_BOUND_LOWER_SUC) |
1519 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1520 |
lemma UNIF_BOUND_UPPER: "n ~= 0 ==> 2 ^ unif_bound n <= 2 * n" |
| 14516 | 1521 |
by (import prob_uniform UNIF_BOUND_UPPER) |
1522 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1523 |
lemma UNIF_BOUND_UPPER_SUC: "2 ^ unif_bound n <= Suc (2 * n)" |
| 14516 | 1524 |
by (import prob_uniform UNIF_BOUND_UPPER_SUC) |
1525 |
||
| 17652 | 1526 |
lemma UNIF_DEF_MONAD: "unif 0 = UNIT 0 & |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1527 |
(ALL n. |
| 14516 | 1528 |
unif (Suc n) = |
| 17652 | 1529 |
BIND (unif (Suc n div 2)) |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1530 |
(%m. BIND SDEST (%b. UNIT (if b then 2 * m + 1 else 2 * m))))" |
| 14516 | 1531 |
by (import prob_uniform UNIF_DEF_MONAD) |
1532 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1533 |
lemma UNIFORM_DEF_MONAD: "(ALL x. uniform 0 (Suc x) = UNIT 0) & |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1534 |
(ALL x xa. |
| 14516 | 1535 |
uniform (Suc x) (Suc xa) = |
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1536 |
BIND (unif xa) (%m. if m < Suc xa then UNIT m else uniform x (Suc xa)))" |
| 14516 | 1537 |
by (import prob_uniform UNIFORM_DEF_MONAD) |
1538 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1539 |
lemma INDEP_UNIF: "indep (unif n)" |
| 14516 | 1540 |
by (import prob_uniform INDEP_UNIF) |
1541 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1542 |
lemma INDEP_UNIFORM: "indep (uniform t (Suc n))" |
| 14516 | 1543 |
by (import prob_uniform INDEP_UNIFORM) |
1544 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1545 |
lemma PROB_UNIF: "prob (%s. fst (unif n s) = k) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1546 |
(if k < 2 ^ unif_bound n then (1 / 2) ^ unif_bound n else 0)" |
| 14516 | 1547 |
by (import prob_uniform PROB_UNIF) |
1548 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1549 |
lemma UNIF_RANGE: "fst (unif n s) < 2 ^ unif_bound n" |
| 14516 | 1550 |
by (import prob_uniform UNIF_RANGE) |
1551 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1552 |
lemma PROB_UNIF_PAIR: "(prob (%s. fst (unif n s) = k) = prob (%s. fst (unif n s) = k')) = |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1553 |
((k < 2 ^ unif_bound n) = (k' < 2 ^ unif_bound n))" |
| 14516 | 1554 |
by (import prob_uniform PROB_UNIF_PAIR) |
1555 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1556 |
lemma PROB_UNIF_BOUND: "k <= 2 ^ unif_bound n |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1557 |
==> prob (%s. fst (unif n s) < k) = real k * (1 / 2) ^ unif_bound n" |
| 14516 | 1558 |
by (import prob_uniform PROB_UNIF_BOUND) |
1559 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1560 |
lemma PROB_UNIF_GOOD: "1 / 2 <= prob (%s. fst (unif n s) < Suc n)" |
| 14516 | 1561 |
by (import prob_uniform PROB_UNIF_GOOD) |
1562 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1563 |
lemma UNIFORM_RANGE: "fst (uniform t (Suc n) s) < Suc n" |
| 14516 | 1564 |
by (import prob_uniform UNIFORM_RANGE) |
1565 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1566 |
lemma PROB_UNIFORM_LOWER_BOUND: "[| !!k. k < Suc n ==> prob (%s. fst (uniform t (Suc n) s) = k) < b; |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1567 |
m < Suc n |] |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1568 |
==> prob (%s. fst (uniform t (Suc n) s) < Suc m) < real (Suc m) * b" |
| 14516 | 1569 |
by (import prob_uniform PROB_UNIFORM_LOWER_BOUND) |
1570 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1571 |
lemma PROB_UNIFORM_UPPER_BOUND: "[| !!k. k < Suc n ==> b < prob (%s. fst (uniform t (Suc n) s) = k); |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1572 |
m < Suc n |] |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1573 |
==> real (Suc m) * b < prob (%s. fst (uniform t (Suc n) s) < Suc m)" |
| 14516 | 1574 |
by (import prob_uniform PROB_UNIFORM_UPPER_BOUND) |
1575 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1576 |
lemma PROB_UNIFORM_PAIR_SUC: "k < Suc n & k' < Suc n |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1577 |
==> abs (prob (%s. fst (uniform t (Suc n) s) = k) - |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1578 |
prob (%s. fst (uniform t (Suc n) s) = k')) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1579 |
<= (1 / 2) ^ t" |
| 14516 | 1580 |
by (import prob_uniform PROB_UNIFORM_PAIR_SUC) |
1581 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1582 |
lemma PROB_UNIFORM_SUC: "k < Suc n |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1583 |
==> abs (prob (%s. fst (uniform t (Suc n) s) = k) - 1 / real (Suc n)) |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1584 |
<= (1 / 2) ^ t" |
| 14516 | 1585 |
by (import prob_uniform PROB_UNIFORM_SUC) |
1586 |
||
|
44763
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1587 |
lemma PROB_UNIFORM: "k < n |
|
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
Cezary Kaliszyk <kaliszyk@in.tum.de>
parents:
35416
diff
changeset
|
1588 |
==> abs (prob (%s. fst (uniform t n s) = k) - 1 / real n) <= (1 / 2) ^ t" |
| 14516 | 1589 |
by (import prob_uniform PROB_UNIFORM) |
1590 |
||
1591 |
;end_setup |
|
1592 |
||
1593 |
end |
|
1594 |