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