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