| author | wenzelm | 
| Fri, 30 Mar 2012 21:08:00 +0200 | |
| changeset 47235 | a92d3620e156 | 
| 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: 
46780diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
46780diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 227 | definition | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
changeset | 229 | "alg_order_tupled == | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
changeset | 231 | (%alg_order_tupled (v, v1). | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
changeset | 233 | | v4 # v5 => | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 234 | case v1 of [] => False | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 235 | | v10 # v11 => | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 236 | v4 = True & v10 = False | | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 241 | (%alg_order_tupled (v, v1). | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
changeset | 243 | | v4 # v5 => | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 244 | case v1 of [] => False | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 245 | | v10 # v11 => | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 246 | v4 = True & v10 = False | | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 261 | P [] [] & | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 270 | alg_order (v2 # v3) [] = False & | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 283 | (%v2. list_case True | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 290 | (%v2. list_case True | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 312 | (%v2. list_case True | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 319 | (%v2. list_case True | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 341 | (%v2. list_case True | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 348 | (%v2. list_case True | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 530 | (alg_prefixfree (h # t) & | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 636 | ==> alg_sorted (alg_canon2 x) & | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 685 | ==> l = [] | | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 686 | l = [[]] | | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 687 | (EX l1 l2. | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 688 | algebra_canon l1 & | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 699 | algebra_canon l |] | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 711 | algebra_canon l |] | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
46780diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
46780diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 841 | (ALL h t. | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 939 | lemma MEASURABLE_HALVES: "measurable | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
46780diff
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: 
35416diff
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: 
35416diff
changeset | 965 | %b. prob_extra.inf | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 969 | prob_extra.inf | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 980 | lemma prob_def: "prob s = | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
46780diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 1145 | (ALL xa. | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1146 | STL (x xa) = | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1147 | x (pseudo_linear_tl | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1148 | (NUMERAL | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1149 | (NUMERAL_BIT1 | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1150 | (NUMERAL_BIT1 | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1151 | (NUMERAL_BIT1 | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1152 | (NUMERAL_BIT2 | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
changeset | 1154 | (NUMERAL | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1155 | (NUMERAL_BIT1 | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1156 | (NUMERAL_BIT1 | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1157 | (NUMERAL_BIT1 | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1158 | (NUMERAL_BIT1 | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
changeset | 1160 | (NUMERAL | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1161 | (NUMERAL_BIT1 | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1162 | (NUMERAL_BIT1 | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1163 | (NUMERAL_BIT1 | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1164 | (NUMERAL_BIT1 | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
46780diff
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: 
35416diff
changeset | 1213 | %p q. measurable p & | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 1245 | %f. EX l r. | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1246 | alg_cover_set l & | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
changeset | 1249 | lemma indep_def: "indep f = | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1250 | (EX l r. | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1251 | alg_cover_set l & | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 1281 | (l = [[]] | | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1282 | (EX x xa. | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1283 | alg_cover_set x & | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 1293 | alg_cover_set l |] | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 1304 | alg_cover_set l |] | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 1323 | ==> q o | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1324 | (%x. SDROP | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
changeset | 1326 | x) = | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1327 | pred_set.UNION | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 1343 | ==> prob | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 1350 | alg_prefixfree l & | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
46780diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 1412 | definition | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 1418 | | Suc v3 => | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 1426 | | Suc v3 => | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 1441 | unif (Suc v2) s = | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 1451 | definition | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 1460 | (%uniform_tupled (v, v1). | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
changeset | 1462 | | Suc v2 => | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
changeset | 1464 | | (Suc v9, v8) => | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 1476 | (%uniform_tupled (v, v1). | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
changeset | 1478 | | Suc v2 => | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
changeset | 1480 | | (Suc v9, v8) => | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 1496 | All (P 0 0) & | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
changeset | 1498 | (ALL x xa xb. | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
changeset | 1499 | (ALL xc xd. | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 1567 | m < Suc n |] | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 1572 | m < Suc n |] | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
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: 
35416diff
changeset | 1587 | lemma PROB_UNIFORM: "k < n | 
| 
b50d5d694838
HOL/Import: Update HOL4 generated files to current Isabelle.
 Cezary Kaliszyk <kaliszyk@in.tum.de> parents: 
35416diff
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 |