src/HOL/Import/HOLLight/HOLLight.thy
author obua
Mon, 26 Sep 2005 08:49:50 +0200
changeset 17647 bcf00e7b251b
parent 17644 bd59bfd4bf37
child 17652 b1ef33ebfa17
permissions -rw-r--r--
added ROOT.ML
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
     1
(* AUTOMATICALLY GENERATED, DO NOT EDIT! *)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
     2
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
     3
theory HOLLight = "../HOLLightCompat" + "../HOL4Syntax":
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
     4
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
     5
;setup_theory hollight
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
     6
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
     7
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
     8
  "_FALSITY_" :: "bool" ("'_FALSITY'_")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
     9
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    10
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    11
  "_FALSITY__def": "_FALSITY_ == False"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    12
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    13
lemma DEF__FALSITY_: "_FALSITY_ = False"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    14
  by (import hollight DEF__FALSITY_)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    15
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    16
lemma CONJ_ACI: "((p::bool) & (q::bool)) = (q & p) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    17
((p & q) & (r::bool)) = (p & q & r) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    18
(p & q & r) = (q & p & r) & (p & p) = p & (p & p & q) = (p & q)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    19
  by (import hollight CONJ_ACI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    20
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    21
lemma DISJ_ACI: "((p::bool) | (q::bool)) = (q | p) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    22
((p | q) | (r::bool)) = (p | q | r) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    23
(p | q | r) = (q | p | r) & (p | p) = p & (p | p | q) = (p | q)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    24
  by (import hollight DISJ_ACI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    25
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    26
lemma EQ_CLAUSES: "ALL t::bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    27
   (True = t) = t &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    28
   (t = True) = t & (False = t) = (~ t) & (t = False) = (~ t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    29
  by (import hollight EQ_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    30
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    31
lemma NOT_CLAUSES_WEAK: "(~ True) = False & (~ False) = True"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    32
  by (import hollight NOT_CLAUSES_WEAK)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    33
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    34
lemma AND_CLAUSES: "ALL t::bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    35
   (True & t) = t &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    36
   (t & True) = t & (False & t) = False & (t & False) = False & (t & t) = t"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    37
  by (import hollight AND_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    38
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    39
lemma OR_CLAUSES: "ALL t::bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    40
   (True | t) = True &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    41
   (t | True) = True & (False | t) = t & (t | False) = t & (t | t) = t"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    42
  by (import hollight OR_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    43
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    44
lemma IMP_CLAUSES: "ALL t::bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    45
   (True --> t) = t &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    46
   (t --> True) = True &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    47
   (False --> t) = True & (t --> t) = True & (t --> False) = (~ t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    48
  by (import hollight IMP_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    49
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    50
lemma IMP_EQ_CLAUSE: "((x::'q_864::type) = x --> (p::bool)) = p"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    51
  by (import hollight IMP_EQ_CLAUSE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    52
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    53
lemma SWAP_FORALL_THM: "ALL P::'A::type => 'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    54
   (ALL x::'A::type. All (P x)) = (ALL (y::'B::type) x::'A::type. P x y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    55
  by (import hollight SWAP_FORALL_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    56
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    57
lemma SWAP_EXISTS_THM: "ALL P::'A::type => 'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    58
   (EX x::'A::type. Ex (P x)) = (EX (x::'B::type) xa::'A::type. P xa x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    59
  by (import hollight SWAP_EXISTS_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    60
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    61
lemma TRIV_EXISTS_AND_THM: "ALL (P::bool) Q::bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    62
   (EX x::'A::type. P & Q) = ((EX x::'A::type. P) & (EX x::'A::type. Q))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    63
  by (import hollight TRIV_EXISTS_AND_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    64
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    65
lemma TRIV_AND_EXISTS_THM: "ALL (P::bool) Q::bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    66
   ((EX x::'A::type. P) & (EX x::'A::type. Q)) = (EX x::'A::type. P & Q)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    67
  by (import hollight TRIV_AND_EXISTS_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    68
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    69
lemma TRIV_FORALL_OR_THM: "ALL (P::bool) Q::bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    70
   (ALL x::'A::type. P | Q) = ((ALL x::'A::type. P) | (ALL x::'A::type. Q))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    71
  by (import hollight TRIV_FORALL_OR_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    72
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    73
lemma TRIV_OR_FORALL_THM: "ALL (P::bool) Q::bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    74
   ((ALL x::'A::type. P) | (ALL x::'A::type. Q)) = (ALL x::'A::type. P | Q)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    75
  by (import hollight TRIV_OR_FORALL_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    76
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    77
lemma TRIV_FORALL_IMP_THM: "ALL (P::bool) Q::bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    78
   (ALL x::'A::type. P --> Q) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    79
   ((EX x::'A::type. P) --> (ALL x::'A::type. Q))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    80
  by (import hollight TRIV_FORALL_IMP_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    81
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    82
lemma TRIV_EXISTS_IMP_THM: "ALL (P::bool) Q::bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    83
   (EX x::'A::type. P --> Q) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    84
   ((ALL x::'A::type. P) --> (EX x::'A::type. Q))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    85
  by (import hollight TRIV_EXISTS_IMP_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    86
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    87
lemma EXISTS_UNIQUE_ALT: "ALL P::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    88
   Ex1 P = (EX x::'A::type. ALL y::'A::type. P y = (x = y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    89
  by (import hollight EXISTS_UNIQUE_ALT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    90
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    91
lemma SELECT_UNIQUE: "ALL (P::'A::type => bool) x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    92
   (ALL y::'A::type. P y = (y = x)) --> Eps P = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    93
  by (import hollight SELECT_UNIQUE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    94
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    95
lemma EXCLUDED_MIDDLE: "ALL t::bool. t | ~ t"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    96
  by (import hollight EXCLUDED_MIDDLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    97
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    98
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
    99
  COND :: "bool => 'A::type => 'A::type => 'A::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   100
  "COND ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   101
%(t::bool) (t1::'A::type) t2::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   102
   SOME x::'A::type. (t = True --> x = t1) & (t = False --> x = t2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   103
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   104
lemma DEF_COND: "COND =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   105
(%(t::bool) (t1::'A::type) t2::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   106
    SOME x::'A::type. (t = True --> x = t1) & (t = False --> x = t2))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   107
  by (import hollight DEF_COND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   108
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   109
lemma COND_CLAUSES: "ALL (x::'A::type) xa::'A::type. COND True x xa = x & COND False x xa = xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   110
  by (import hollight COND_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   111
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   112
lemma COND_EXPAND: "ALL (b::bool) (t1::bool) t2::bool. COND b t1 t2 = ((~ b | t1) & (b | t2))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   113
  by (import hollight COND_EXPAND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   114
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   115
lemma COND_ID: "ALL (b::bool) t::'A::type. COND b t t = t"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   116
  by (import hollight COND_ID)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   117
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   118
lemma COND_RAND: "ALL (b::bool) (f::'A::type => 'B::type) (x::'A::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   119
   f (COND b x y) = COND b (f x) (f y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   120
  by (import hollight COND_RAND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   121
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   122
lemma COND_RATOR: "ALL (b::bool) (f::'A::type => 'B::type) (g::'A::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   123
   x::'A::type. COND b f g x = COND b (f x) (g x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   124
  by (import hollight COND_RATOR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   125
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   126
lemma COND_ABS: "ALL (b::bool) (f::'A::type => 'B::type) g::'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   127
   (%x::'A::type. COND b (f x) (g x)) = COND b f g"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   128
  by (import hollight COND_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   129
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   130
lemma MONO_COND: "((A::bool) --> (B::bool)) & ((C::bool) --> (D::bool)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   131
COND (b::bool) A C --> COND b B D"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   132
  by (import hollight MONO_COND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   133
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   134
lemma COND_ELIM_THM: "(P::'A::type => bool) (COND (c::bool) (x::'A::type) (y::'A::type)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   135
((c --> P x) & (~ c --> P y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   136
  by (import hollight COND_ELIM_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   137
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   138
lemma SKOLEM_THM: "ALL P::'A::type => 'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   139
   (ALL x::'A::type. Ex (P x)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   140
   (EX x::'A::type => 'B::type. ALL xa::'A::type. P xa (x xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   141
  by (import hollight SKOLEM_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   142
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   143
lemma UNIQUE_SKOLEM_ALT: "ALL P::'A::type => 'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   144
   (ALL x::'A::type. Ex1 (P x)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   145
   (EX f::'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   146
       ALL (x::'A::type) y::'B::type. P x y = (f x = y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   147
  by (import hollight UNIQUE_SKOLEM_ALT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   148
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   149
lemma COND_EQ_CLAUSE: "COND ((x::'q_3000::type) = x) (y::'q_2993::type) (z::'q_2993::type) = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   150
  by (import hollight COND_EQ_CLAUSE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   151
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   152
lemma o_ASSOC: "ALL (f::'C::type => 'D::type) (g::'B::type => 'C::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   153
   h::'A::type => 'B::type. f o (g o h) = f o g o h"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   154
  by (import hollight o_ASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   155
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   156
lemma I_O_ID: "ALL f::'A::type => 'B::type. id o f = f & f o id = f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   157
  by (import hollight I_O_ID)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   158
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   159
lemma EXISTS_ONE_REP: "EX x::bool. x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   160
  by (import hollight EXISTS_ONE_REP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   161
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   162
lemma one_axiom: "ALL f::'A::type => unit. All (op = f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   163
  by (import hollight one_axiom)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   164
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   165
lemma one_RECURSION: "ALL e::'A::type. EX x::unit => 'A::type. x () = e"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   166
  by (import hollight one_RECURSION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   167
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   168
lemma one_Axiom: "ALL e::'A::type. EX! fn::unit => 'A::type. fn () = e"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   169
  by (import hollight one_Axiom)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   170
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   171
lemma th_cond: "(P::'A::type => bool => bool) (COND (b::bool) (x::'A::type) (y::'A::type))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   172
 b =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   173
(b & P x True | ~ b & P y False)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   174
  by (import hollight th_cond)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   175
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   176
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   177
  LET_END :: "'A::type => 'A::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   178
  "LET_END == %t::'A::type. t"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   179
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   180
lemma DEF_LET_END: "LET_END = (%t::'A::type. t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   181
  by (import hollight DEF_LET_END)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   182
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   183
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   184
  GABS :: "('A::type => bool) => 'A::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   185
  "(op ==::(('A::type => bool) => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   186
        => (('A::type => bool) => 'A::type) => prop)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   187
 (GABS::('A::type => bool) => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   188
 (Eps::('A::type => bool) => 'A::type)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   189
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   190
lemma DEF_GABS: "(op =::(('A::type => bool) => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   191
       => (('A::type => bool) => 'A::type) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   192
 (GABS::('A::type => bool) => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   193
 (Eps::('A::type => bool) => 'A::type)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   194
  by (import hollight DEF_GABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   195
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   196
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   197
  GEQ :: "'A::type => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   198
  "(op ==::('A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   199
        => ('A::type => 'A::type => bool) => prop)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   200
 (GEQ::'A::type => 'A::type => bool) (op =::'A::type => 'A::type => bool)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   201
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   202
lemma DEF_GEQ: "(op =::('A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   203
       => ('A::type => 'A::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   204
 (GEQ::'A::type => 'A::type => bool) (op =::'A::type => 'A::type => bool)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   205
  by (import hollight DEF_GEQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   206
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   207
lemma PAIR_EXISTS_THM: "EX (x::'A::type => 'B::type => bool) (a::'A::type) b::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   208
   x = Pair_Rep a b"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   209
  by (import hollight PAIR_EXISTS_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   210
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   211
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   212
  CURRY :: "('A::type * 'B::type => 'C::type) => 'A::type => 'B::type => 'C::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   213
  "CURRY ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   214
%(u::'A::type * 'B::type => 'C::type) (ua::'A::type) ub::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   215
   u (ua, ub)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   216
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   217
lemma DEF_CURRY: "CURRY =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   218
(%(u::'A::type * 'B::type => 'C::type) (ua::'A::type) ub::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   219
    u (ua, ub))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   220
  by (import hollight DEF_CURRY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   221
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   222
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   223
  UNCURRY :: "('A::type => 'B::type => 'C::type) => 'A::type * 'B::type => 'C::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   224
  "UNCURRY ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   225
%(u::'A::type => 'B::type => 'C::type) ua::'A::type * 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   226
   u (fst ua) (snd ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   227
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   228
lemma DEF_UNCURRY: "UNCURRY =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   229
(%(u::'A::type => 'B::type => 'C::type) ua::'A::type * 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   230
    u (fst ua) (snd ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   231
  by (import hollight DEF_UNCURRY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   232
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   233
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   234
  PASSOC :: "(('A::type * 'B::type) * 'C::type => 'D::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   235
=> 'A::type * 'B::type * 'C::type => 'D::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   236
  "PASSOC ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   237
%(u::('A::type * 'B::type) * 'C::type => 'D::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   238
   ua::'A::type * 'B::type * 'C::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   239
   u ((fst ua, fst (snd ua)), snd (snd ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   240
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   241
lemma DEF_PASSOC: "PASSOC =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   242
(%(u::('A::type * 'B::type) * 'C::type => 'D::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   243
    ua::'A::type * 'B::type * 'C::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   244
    u ((fst ua, fst (snd ua)), snd (snd ua)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   245
  by (import hollight DEF_PASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   246
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   247
lemma num_Axiom: "ALL (e::'A::type) f::'A::type => nat => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   248
   EX! fn::nat => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   249
      fn (0::nat) = e & (ALL n::nat. fn (Suc n) = f (fn n) n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   250
  by (import hollight num_Axiom)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   251
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   252
lemma ADD_CLAUSES: "(ALL x::nat. (0::nat) + x = x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   253
(ALL x::nat. x + (0::nat) = x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   254
(ALL (x::nat) xa::nat. Suc x + xa = Suc (x + xa)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   255
(ALL (x::nat) xa::nat. x + Suc xa = Suc (x + xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   256
  by (import hollight ADD_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   257
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   258
lemma ADD_AC: "(m::nat) + (n::nat) = n + m &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   259
m + n + (p::nat) = m + (n + p) & m + (n + p) = n + (m + p)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   260
  by (import hollight ADD_AC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   261
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   262
lemma EQ_ADD_LCANCEL_0: "ALL (m::nat) n::nat. (m + n = m) = (n = (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   263
  by (import hollight EQ_ADD_LCANCEL_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   264
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   265
lemma EQ_ADD_RCANCEL_0: "ALL (x::nat) xa::nat. (x + xa = xa) = (x = (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   266
  by (import hollight EQ_ADD_RCANCEL_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   267
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   268
lemma ONE: "NUMERAL_BIT1 (0::nat) = Suc (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   269
  by (import hollight ONE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   270
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   271
lemma TWO: "NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) = Suc (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   272
  by (import hollight TWO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   273
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   274
lemma ADD1: "ALL x::nat. Suc x = x + NUMERAL_BIT1 (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   275
  by (import hollight ADD1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   276
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   277
lemma MULT_CLAUSES: "(ALL x::nat. (0::nat) * x = (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   278
(ALL x::nat. x * (0::nat) = (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   279
(ALL x::nat. NUMERAL_BIT1 (0::nat) * x = x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   280
(ALL x::nat. x * NUMERAL_BIT1 (0::nat) = x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   281
(ALL (x::nat) xa::nat. Suc x * xa = x * xa + xa) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   282
(ALL (x::nat) xa::nat. x * Suc xa = x + x * xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   283
  by (import hollight MULT_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   284
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   285
lemma MULT_AC: "(m::nat) * (n::nat) = n * m &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   286
m * n * (p::nat) = m * (n * p) & m * (n * p) = n * (m * p)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   287
  by (import hollight MULT_AC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   288
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   289
lemma MULT_2: "ALL n::nat. NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * n = n + n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   290
  by (import hollight MULT_2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   291
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   292
lemma MULT_EQ_1: "ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   293
   (m * n = NUMERAL_BIT1 (0::nat)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   294
   (m = NUMERAL_BIT1 (0::nat) & n = NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   295
  by (import hollight MULT_EQ_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   296
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   297
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   298
  EXP :: "nat => nat => nat" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   299
  "EXP ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   300
SOME EXP::nat => nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   301
   (ALL m::nat. EXP m (0::nat) = NUMERAL_BIT1 (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   302
   (ALL (m::nat) n::nat. EXP m (Suc n) = m * EXP m n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   303
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   304
lemma DEF_EXP: "EXP =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   305
(SOME EXP::nat => nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   306
    (ALL m::nat. EXP m (0::nat) = NUMERAL_BIT1 (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   307
    (ALL (m::nat) n::nat. EXP m (Suc n) = m * EXP m n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   308
  by (import hollight DEF_EXP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   309
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   310
lemma EXP_EQ_0: "ALL (m::nat) n::nat. (EXP m n = (0::nat)) = (m = (0::nat) & n ~= (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   311
  by (import hollight EXP_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   312
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   313
lemma EXP_ADD: "ALL (m::nat) (n::nat) p::nat. EXP m (n + p) = EXP m n * EXP m p"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   314
  by (import hollight EXP_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   315
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   316
lemma EXP_ONE: "ALL n::nat. EXP (NUMERAL_BIT1 (0::nat)) n = NUMERAL_BIT1 (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   317
  by (import hollight EXP_ONE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   318
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   319
lemma EXP_1: "ALL x::nat. EXP x (NUMERAL_BIT1 (0::nat)) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   320
  by (import hollight EXP_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   321
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   322
lemma EXP_2: "ALL x::nat. EXP x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = x * x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   323
  by (import hollight EXP_2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   324
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   325
lemma MULT_EXP: "ALL (p::nat) (m::nat) n::nat. EXP (m * n) p = EXP m p * EXP n p"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   326
  by (import hollight MULT_EXP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   327
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   328
lemma EXP_MULT: "ALL (m::nat) (n::nat) p::nat. EXP m (n * p) = EXP (EXP m n) p"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   329
  by (import hollight EXP_MULT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   330
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   331
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   332
  "<=" :: "nat => nat => bool" ("<=")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   333
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   334
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   335
  "<=_def": "<= ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   336
SOME u::nat => nat => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   337
   (ALL m::nat. u m (0::nat) = (m = (0::nat))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   338
   (ALL (m::nat) n::nat. u m (Suc n) = (m = Suc n | u m n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   339
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   340
lemma DEF__lessthan__equal_: "<= =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   341
(SOME u::nat => nat => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   342
    (ALL m::nat. u m (0::nat) = (m = (0::nat))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   343
    (ALL (m::nat) n::nat. u m (Suc n) = (m = Suc n | u m n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   344
  by (import hollight DEF__lessthan__equal_)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   345
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   346
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   347
  "<" :: "nat => nat => bool" ("<")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   348
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   349
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   350
  "<_def": "< ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   351
SOME u::nat => nat => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   352
   (ALL m::nat. u m (0::nat) = False) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   353
   (ALL (m::nat) n::nat. u m (Suc n) = (m = n | u m n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   354
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   355
lemma DEF__lessthan_: "< =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   356
(SOME u::nat => nat => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   357
    (ALL m::nat. u m (0::nat) = False) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   358
    (ALL (m::nat) n::nat. u m (Suc n) = (m = n | u m n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   359
  by (import hollight DEF__lessthan_)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   360
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   361
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   362
  ">=" :: "nat => nat => bool" (">=")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   363
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   364
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   365
  ">=_def": ">= == %(u::nat) ua::nat. <= ua u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   366
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   367
lemma DEF__greaterthan__equal_: ">= = (%(u::nat) ua::nat. <= ua u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   368
  by (import hollight DEF__greaterthan__equal_)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   369
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   370
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   371
  ">" :: "nat => nat => bool" (">")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   372
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   373
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   374
  ">_def": "> == %(u::nat) ua::nat. < ua u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   375
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   376
lemma DEF__greaterthan_: "> = (%(u::nat) ua::nat. < ua u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   377
  by (import hollight DEF__greaterthan_)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   378
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   379
lemma LE_SUC_LT: "ALL (m::nat) n::nat. <= (Suc m) n = < m n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   380
  by (import hollight LE_SUC_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   381
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   382
lemma LT_SUC_LE: "ALL (m::nat) n::nat. < m (Suc n) = <= m n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   383
  by (import hollight LT_SUC_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   384
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   385
lemma LE_SUC: "ALL (x::nat) xa::nat. <= (Suc x) (Suc xa) = <= x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   386
  by (import hollight LE_SUC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   387
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   388
lemma LT_SUC: "ALL (x::nat) xa::nat. < (Suc x) (Suc xa) = < x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   389
  by (import hollight LT_SUC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   390
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   391
lemma LE_0: "All (<= (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   392
  by (import hollight LE_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   393
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   394
lemma LT_0: "ALL x::nat. < (0::nat) (Suc x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   395
  by (import hollight LT_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   396
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   397
lemma LE_REFL: "ALL n::nat. <= n n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   398
  by (import hollight LE_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   399
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   400
lemma LT_REFL: "ALL n::nat. ~ < n n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   401
  by (import hollight LT_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   402
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   403
lemma LE_ANTISYM: "ALL (m::nat) n::nat. (<= m n & <= n m) = (m = n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   404
  by (import hollight LE_ANTISYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   405
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   406
lemma LT_ANTISYM: "ALL (m::nat) n::nat. ~ (< m n & < n m)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   407
  by (import hollight LT_ANTISYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   408
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   409
lemma LET_ANTISYM: "ALL (m::nat) n::nat. ~ (<= m n & < n m)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   410
  by (import hollight LET_ANTISYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   411
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   412
lemma LTE_ANTISYM: "ALL (x::nat) xa::nat. ~ (< x xa & <= xa x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   413
  by (import hollight LTE_ANTISYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   414
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   415
lemma LE_TRANS: "ALL (m::nat) (n::nat) p::nat. <= m n & <= n p --> <= m p"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   416
  by (import hollight LE_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   417
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   418
lemma LT_TRANS: "ALL (m::nat) (n::nat) p::nat. < m n & < n p --> < m p"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   419
  by (import hollight LT_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   420
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   421
lemma LET_TRANS: "ALL (m::nat) (n::nat) p::nat. <= m n & < n p --> < m p"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   422
  by (import hollight LET_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   423
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   424
lemma LTE_TRANS: "ALL (m::nat) (n::nat) p::nat. < m n & <= n p --> < m p"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   425
  by (import hollight LTE_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   426
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   427
lemma LE_CASES: "ALL (m::nat) n::nat. <= m n | <= n m"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   428
  by (import hollight LE_CASES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   429
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   430
lemma LT_CASES: "ALL (m::nat) n::nat. < m n | < n m | m = n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   431
  by (import hollight LT_CASES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   432
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   433
lemma LET_CASES: "ALL (m::nat) n::nat. <= m n | < n m"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   434
  by (import hollight LET_CASES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   435
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   436
lemma LTE_CASES: "ALL (x::nat) xa::nat. < x xa | <= xa x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   437
  by (import hollight LTE_CASES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   438
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   439
lemma LT_NZ: "ALL n::nat. < (0::nat) n = (n ~= (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   440
  by (import hollight LT_NZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   441
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   442
lemma LE_LT: "ALL (m::nat) n::nat. <= m n = (< m n | m = n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   443
  by (import hollight LE_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   444
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   445
lemma LT_LE: "ALL (x::nat) xa::nat. < x xa = (<= x xa & x ~= xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   446
  by (import hollight LT_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   447
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   448
lemma NOT_LE: "ALL (m::nat) n::nat. (~ <= m n) = < n m"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   449
  by (import hollight NOT_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   450
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   451
lemma NOT_LT: "ALL (m::nat) n::nat. (~ < m n) = <= n m"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   452
  by (import hollight NOT_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   453
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   454
lemma LT_IMP_LE: "ALL (x::nat) xa::nat. < x xa --> <= x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   455
  by (import hollight LT_IMP_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   456
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   457
lemma EQ_IMP_LE: "ALL (m::nat) n::nat. m = n --> <= m n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   458
  by (import hollight EQ_IMP_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   459
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   460
lemma LE_EXISTS: "ALL (m::nat) n::nat. <= m n = (EX d::nat. n = m + d)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   461
  by (import hollight LE_EXISTS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   462
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   463
lemma LT_EXISTS: "ALL (m::nat) n::nat. < m n = (EX d::nat. n = m + Suc d)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   464
  by (import hollight LT_EXISTS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   465
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   466
lemma LE_ADD: "ALL (m::nat) n::nat. <= m (m + n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   467
  by (import hollight LE_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   468
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   469
lemma LE_ADDR: "ALL (x::nat) xa::nat. <= xa (x + xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   470
  by (import hollight LE_ADDR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   471
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   472
lemma LT_ADD: "ALL (m::nat) n::nat. < m (m + n) = < (0::nat) n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   473
  by (import hollight LT_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   474
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   475
lemma LT_ADDR: "ALL (x::nat) xa::nat. < xa (x + xa) = < (0::nat) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   476
  by (import hollight LT_ADDR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   477
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   478
lemma LE_ADD_LCANCEL: "ALL (x::nat) (xa::nat) xb::nat. <= (x + xa) (x + xb) = <= xa xb"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   479
  by (import hollight LE_ADD_LCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   480
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   481
lemma LE_ADD_RCANCEL: "ALL (x::nat) (xa::nat) xb::nat. <= (x + xb) (xa + xb) = <= x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   482
  by (import hollight LE_ADD_RCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   483
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   484
lemma LT_ADD_LCANCEL: "ALL (x::nat) (xa::nat) xb::nat. < (x + xa) (x + xb) = < xa xb"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   485
  by (import hollight LT_ADD_LCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   486
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   487
lemma LT_ADD_RCANCEL: "ALL (x::nat) (xa::nat) xb::nat. < (x + xb) (xa + xb) = < x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   488
  by (import hollight LT_ADD_RCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   489
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   490
lemma LE_ADD2: "ALL (m::nat) (n::nat) (p::nat) q::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   491
   <= m p & <= n q --> <= (m + n) (p + q)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   492
  by (import hollight LE_ADD2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   493
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   494
lemma LET_ADD2: "ALL (m::nat) (n::nat) (p::nat) q::nat. <= m p & < n q --> < (m + n) (p + q)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   495
  by (import hollight LET_ADD2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   496
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   497
lemma LTE_ADD2: "ALL (x::nat) (xa::nat) (xb::nat) xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   498
   < x xb & <= xa xc --> < (x + xa) (xb + xc)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   499
  by (import hollight LTE_ADD2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   500
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   501
lemma LT_ADD2: "ALL (m::nat) (n::nat) (p::nat) q::nat. < m p & < n q --> < (m + n) (p + q)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   502
  by (import hollight LT_ADD2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   503
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   504
lemma LT_MULT: "ALL (m::nat) n::nat. < (0::nat) (m * n) = (< (0::nat) m & < (0::nat) n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   505
  by (import hollight LT_MULT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   506
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   507
lemma LE_MULT2: "ALL (m::nat) (n::nat) (p::nat) q::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   508
   <= m n & <= p q --> <= (m * p) (n * q)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   509
  by (import hollight LE_MULT2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   510
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   511
lemma LT_LMULT: "ALL (m::nat) (n::nat) p::nat. m ~= (0::nat) & < n p --> < (m * n) (m * p)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   512
  by (import hollight LT_LMULT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   513
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   514
lemma LE_MULT_LCANCEL: "ALL (m::nat) (n::nat) p::nat. <= (m * n) (m * p) = (m = (0::nat) | <= n p)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   515
  by (import hollight LE_MULT_LCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   516
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   517
lemma LE_MULT_RCANCEL: "ALL (x::nat) (xa::nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   518
   <= (x * xb) (xa * xb) = (<= x xa | xb = (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   519
  by (import hollight LE_MULT_RCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   520
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   521
lemma LT_MULT_LCANCEL: "ALL (m::nat) (n::nat) p::nat. < (m * n) (m * p) = (m ~= (0::nat) & < n p)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   522
  by (import hollight LT_MULT_LCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   523
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   524
lemma LT_MULT_RCANCEL: "ALL (x::nat) (xa::nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   525
   < (x * xb) (xa * xb) = (< x xa & xb ~= (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   526
  by (import hollight LT_MULT_RCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   527
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   528
lemma LT_MULT2: "ALL (m::nat) (n::nat) (p::nat) q::nat. < m n & < p q --> < (m * p) (n * q)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   529
  by (import hollight LT_MULT2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   530
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   531
lemma LE_SQUARE_REFL: "ALL n::nat. <= n (n * n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   532
  by (import hollight LE_SQUARE_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   533
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   534
lemma WLOG_LE: "(ALL (m::nat) n::nat. (P::nat => nat => bool) m n = P n m) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   535
(ALL (m::nat) n::nat. <= m n --> P m n) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   536
(ALL m::nat. All (P m))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   537
  by (import hollight WLOG_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   538
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   539
lemma WLOG_LT: "(ALL m::nat. (P::nat => nat => bool) m m) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   540
(ALL (m::nat) n::nat. P m n = P n m) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   541
(ALL (m::nat) n::nat. < m n --> P m n) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   542
(ALL m::nat. All (P m))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   543
  by (import hollight WLOG_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   544
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   545
lemma num_WF: "ALL P::nat => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   546
   (ALL n::nat. (ALL m::nat. < m n --> P m) --> P n) --> All P"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   547
  by (import hollight num_WF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   548
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   549
lemma num_WOP: "ALL P::nat => bool. Ex P = (EX n::nat. P n & (ALL m::nat. < m n --> ~ P m))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   550
  by (import hollight num_WOP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   551
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   552
lemma num_MAX: "ALL P::nat => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   553
   (Ex P & (EX M::nat. ALL x::nat. P x --> <= x M)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   554
   (EX m::nat. P m & (ALL x::nat. P x --> <= x m))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   555
  by (import hollight num_MAX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   556
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   557
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   558
  EVEN :: "nat => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   559
  "EVEN ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   560
SOME EVEN::nat => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   561
   EVEN (0::nat) = True & (ALL n::nat. EVEN (Suc n) = (~ EVEN n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   562
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   563
lemma DEF_EVEN: "EVEN =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   564
(SOME EVEN::nat => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   565
    EVEN (0::nat) = True & (ALL n::nat. EVEN (Suc n) = (~ EVEN n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   566
  by (import hollight DEF_EVEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   567
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   568
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   569
  ODD :: "nat => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   570
  "ODD ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   571
SOME ODD::nat => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   572
   ODD (0::nat) = False & (ALL n::nat. ODD (Suc n) = (~ ODD n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   573
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   574
lemma DEF_ODD: "ODD =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   575
(SOME ODD::nat => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   576
    ODD (0::nat) = False & (ALL n::nat. ODD (Suc n) = (~ ODD n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   577
  by (import hollight DEF_ODD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   578
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   579
lemma NOT_EVEN: "ALL n::nat. (~ EVEN n) = ODD n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   580
  by (import hollight NOT_EVEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   581
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   582
lemma NOT_ODD: "ALL n::nat. (~ ODD n) = EVEN n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   583
  by (import hollight NOT_ODD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   584
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   585
lemma EVEN_OR_ODD: "ALL n::nat. EVEN n | ODD n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   586
  by (import hollight EVEN_OR_ODD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   587
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   588
lemma EVEN_AND_ODD: "ALL x::nat. ~ (EVEN x & ODD x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   589
  by (import hollight EVEN_AND_ODD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   590
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   591
lemma EVEN_ADD: "ALL (m::nat) n::nat. EVEN (m + n) = (EVEN m = EVEN n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   592
  by (import hollight EVEN_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   593
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   594
lemma EVEN_MULT: "ALL (m::nat) n::nat. EVEN (m * n) = (EVEN m | EVEN n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   595
  by (import hollight EVEN_MULT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   596
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   597
lemma EVEN_EXP: "ALL (m::nat) n::nat. EVEN (EXP m n) = (EVEN m & n ~= (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   598
  by (import hollight EVEN_EXP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   599
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   600
lemma ODD_ADD: "ALL (m::nat) n::nat. ODD (m + n) = (ODD m ~= ODD n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   601
  by (import hollight ODD_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   602
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   603
lemma ODD_MULT: "ALL (m::nat) n::nat. ODD (m * n) = (ODD m & ODD n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   604
  by (import hollight ODD_MULT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   605
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   606
lemma ODD_EXP: "ALL (m::nat) n::nat. ODD (EXP m n) = (ODD m | n = (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   607
  by (import hollight ODD_EXP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   608
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   609
lemma EVEN_DOUBLE: "ALL n::nat. EVEN (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   610
  by (import hollight EVEN_DOUBLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   611
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   612
lemma ODD_DOUBLE: "ALL x::nat. ODD (Suc (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   613
  by (import hollight ODD_DOUBLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   614
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   615
lemma EVEN_EXISTS_LEMMA: "ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   616
   (EVEN n --> (EX m::nat. n = NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * m)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   617
   (~ EVEN n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   618
    (EX m::nat. n = Suc (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * m)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   619
  by (import hollight EVEN_EXISTS_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   620
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   621
lemma EVEN_EXISTS: "ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   622
   EVEN n = (EX m::nat. n = NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * m)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   623
  by (import hollight EVEN_EXISTS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   624
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   625
lemma ODD_EXISTS: "ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   626
   ODD n = (EX m::nat. n = Suc (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * m))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   627
  by (import hollight ODD_EXISTS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   628
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   629
lemma EVEN_ODD_DECOMPOSITION: "ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   630
   (EX (k::nat) m::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   631
       ODD m & n = EXP (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) k * m) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   632
   (n ~= (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   633
  by (import hollight EVEN_ODD_DECOMPOSITION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   634
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   635
lemma SUB_0: "ALL x::nat. (0::nat) - x = (0::nat) & x - (0::nat) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   636
  by (import hollight SUB_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   637
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   638
lemma SUB_PRESUC: "ALL (m::nat) n::nat. Pred (Suc m - n) = m - n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   639
  by (import hollight SUB_PRESUC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   640
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   641
lemma SUB_EQ_0: "ALL (m::nat) n::nat. (m - n = (0::nat)) = <= m n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   642
  by (import hollight SUB_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   643
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   644
lemma ADD_SUBR: "ALL (x::nat) xa::nat. xa - (x + xa) = (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   645
  by (import hollight ADD_SUBR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   646
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   647
lemma SUB_ADD: "ALL (x::nat) xa::nat. <= xa x --> x - xa + xa = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   648
  by (import hollight SUB_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   649
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   650
lemma SUC_SUB1: "ALL x::nat. Suc x - NUMERAL_BIT1 (0::nat) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   651
  by (import hollight SUC_SUB1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   652
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   653
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   654
  FACT :: "nat => nat" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   655
  "FACT ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   656
SOME FACT::nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   657
   FACT (0::nat) = NUMERAL_BIT1 (0::nat) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   658
   (ALL n::nat. FACT (Suc n) = Suc n * FACT n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   659
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   660
lemma DEF_FACT: "FACT =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   661
(SOME FACT::nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   662
    FACT (0::nat) = NUMERAL_BIT1 (0::nat) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   663
    (ALL n::nat. FACT (Suc n) = Suc n * FACT n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   664
  by (import hollight DEF_FACT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   665
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   666
lemma FACT_LT: "ALL n::nat. < (0::nat) (FACT n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   667
  by (import hollight FACT_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   668
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   669
lemma FACT_LE: "ALL x::nat. <= (NUMERAL_BIT1 (0::nat)) (FACT x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   670
  by (import hollight FACT_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   671
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   672
lemma FACT_MONO: "ALL (m::nat) n::nat. <= m n --> <= (FACT m) (FACT n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   673
  by (import hollight FACT_MONO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   674
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   675
lemma DIVMOD_EXIST: "ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   676
   n ~= (0::nat) --> (EX (q::nat) r::nat. m = q * n + r & < r n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   677
  by (import hollight DIVMOD_EXIST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   678
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   679
lemma DIVMOD_EXIST_0: "ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   680
   EX (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   681
      COND (n = (0::nat)) (x = (0::nat) & xa = (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   682
       (m = x * n + xa & < xa n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   683
  by (import hollight DIVMOD_EXIST_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   684
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   685
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   686
  DIV :: "nat => nat => nat" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   687
  "DIV ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   688
SOME q::nat => nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   689
   EX r::nat => nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   690
      ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   691
         COND (n = (0::nat)) (q m n = (0::nat) & r m n = (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   692
          (m = q m n * n + r m n & < (r m n) n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   693
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   694
lemma DEF_DIV: "DIV =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   695
(SOME q::nat => nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   696
    EX r::nat => nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   697
       ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   698
          COND (n = (0::nat)) (q m n = (0::nat) & r m n = (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   699
           (m = q m n * n + r m n & < (r m n) n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   700
  by (import hollight DEF_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   701
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   702
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   703
  MOD :: "nat => nat => nat" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   704
  "MOD ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   705
SOME r::nat => nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   706
   ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   707
      COND (n = (0::nat)) (DIV m n = (0::nat) & r m n = (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   708
       (m = DIV m n * n + r m n & < (r m n) n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   709
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   710
lemma DEF_MOD: "MOD =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   711
(SOME r::nat => nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   712
    ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   713
       COND (n = (0::nat)) (DIV m n = (0::nat) & r m n = (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   714
        (m = DIV m n * n + r m n & < (r m n) n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   715
  by (import hollight DEF_MOD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   716
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   717
lemma DIVISION: "ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   718
   n ~= (0::nat) --> m = DIV m n * n + MOD m n & < (MOD m n) n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   719
  by (import hollight DIVISION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   720
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   721
lemma DIVMOD_UNIQ_LEMMA: "ALL (m::nat) (n::nat) (q1::nat) (r1::nat) (q2::nat) r2::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   722
   (m = q1 * n + r1 & < r1 n) & m = q2 * n + r2 & < r2 n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   723
   q1 = q2 & r1 = r2"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   724
  by (import hollight DIVMOD_UNIQ_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   725
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   726
lemma DIVMOD_UNIQ: "ALL (m::nat) (n::nat) (q::nat) r::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   727
   m = q * n + r & < r n --> DIV m n = q & MOD m n = r"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   728
  by (import hollight DIVMOD_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   729
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   730
lemma MOD_UNIQ: "ALL (m::nat) (n::nat) (q::nat) r::nat. m = q * n + r & < r n --> MOD m n = r"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   731
  by (import hollight MOD_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   732
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   733
lemma DIV_UNIQ: "ALL (m::nat) (n::nat) (q::nat) r::nat. m = q * n + r & < r n --> DIV m n = q"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   734
  by (import hollight DIV_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   735
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   736
lemma MOD_MULT: "ALL (x::nat) xa::nat. x ~= (0::nat) --> MOD (x * xa) x = (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   737
  by (import hollight MOD_MULT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   738
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   739
lemma DIV_MULT: "ALL (x::nat) xa::nat. x ~= (0::nat) --> DIV (x * xa) x = xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   740
  by (import hollight DIV_MULT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   741
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   742
lemma DIV_DIV: "ALL (m::nat) (n::nat) p::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   743
   n * p ~= (0::nat) --> DIV (DIV m n) p = DIV m (n * p)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   744
  by (import hollight DIV_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   745
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   746
lemma MOD_LT: "ALL (m::nat) n::nat. < m n --> MOD m n = m"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   747
  by (import hollight MOD_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   748
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   749
lemma MOD_EQ: "ALL (m::nat) (n::nat) (p::nat) q::nat. m = n + q * p --> MOD m p = MOD n p"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   750
  by (import hollight MOD_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   751
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   752
lemma DIV_MOD: "ALL (m::nat) (n::nat) p::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   753
   n * p ~= (0::nat) --> MOD (DIV m n) p = DIV (MOD m (n * p)) n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   754
  by (import hollight DIV_MOD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   755
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   756
lemma DIV_1: "ALL n::nat. DIV n (NUMERAL_BIT1 (0::nat)) = n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   757
  by (import hollight DIV_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   758
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   759
lemma EXP_LT_0: "ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   760
   < (0::nat) (EXP xa x) = (xa ~= (0::nat) | x = (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   761
  by (import hollight EXP_LT_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   762
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   763
lemma DIV_LE: "ALL (m::nat) n::nat. n ~= (0::nat) --> <= (DIV m n) m"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   764
  by (import hollight DIV_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   765
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   766
lemma DIV_MUL_LE: "ALL (m::nat) n::nat. <= (n * DIV m n) m"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   767
  by (import hollight DIV_MUL_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   768
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   769
lemma DIV_0: "ALL n::nat. n ~= (0::nat) --> DIV (0::nat) n = (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   770
  by (import hollight DIV_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   771
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   772
lemma MOD_0: "ALL n::nat. n ~= (0::nat) --> MOD (0::nat) n = (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   773
  by (import hollight MOD_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   774
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   775
lemma DIV_LT: "ALL (m::nat) n::nat. < m n --> DIV m n = (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   776
  by (import hollight DIV_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   777
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   778
lemma MOD_MOD: "ALL (m::nat) (n::nat) p::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   779
   n * p ~= (0::nat) --> MOD (MOD m (n * p)) n = MOD m n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   780
  by (import hollight MOD_MOD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   781
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   782
lemma MOD_MOD_REFL: "ALL (m::nat) n::nat. n ~= (0::nat) --> MOD (MOD m n) n = MOD m n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   783
  by (import hollight MOD_MOD_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   784
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   785
lemma DIV_MULT2: "ALL (x::nat) (xa::nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   786
   x * xb ~= (0::nat) --> DIV (x * xa) (x * xb) = DIV xa xb"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   787
  by (import hollight DIV_MULT2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   788
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   789
lemma MOD_MULT2: "ALL (x::nat) (xa::nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   790
   x * xb ~= (0::nat) --> MOD (x * xa) (x * xb) = x * MOD xa xb"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   791
  by (import hollight MOD_MULT2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   792
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   793
lemma MOD_1: "ALL n::nat. MOD n (NUMERAL_BIT1 (0::nat)) = (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   794
  by (import hollight MOD_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   795
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   796
lemma MOD_EXISTS: "ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   797
   (EX q::nat. m = n * q) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   798
   COND (n = (0::nat)) (m = (0::nat)) (MOD m n = (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   799
  by (import hollight MOD_EXISTS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   800
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   801
lemma LT_EXP: "ALL (x::nat) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   802
   < (EXP x m) (EXP x n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   803
   (<= (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) x & < m n |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   804
    x = (0::nat) & m ~= (0::nat) & n = (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   805
  by (import hollight LT_EXP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   806
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   807
lemma LE_EXP: "ALL (x::nat) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   808
   <= (EXP x m) (EXP x n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   809
   COND (x = (0::nat)) (m = (0::nat) --> n = (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   810
    (x = NUMERAL_BIT1 (0::nat) | <= m n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   811
  by (import hollight LE_EXP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   812
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   813
lemma DIV_MONO: "ALL (m::nat) (n::nat) p::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   814
   p ~= (0::nat) & <= m n --> <= (DIV m p) (DIV n p)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   815
  by (import hollight DIV_MONO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   816
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   817
lemma DIV_MONO_LT: "ALL (m::nat) (n::nat) p::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   818
   p ~= (0::nat) & <= (m + p) n --> < (DIV m p) (DIV n p)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   819
  by (import hollight DIV_MONO_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   820
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   821
lemma LE_LDIV: "ALL (a::nat) (b::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   822
   a ~= (0::nat) & <= b (a * n) --> <= (DIV b a) n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   823
  by (import hollight LE_LDIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   824
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   825
lemma LE_RDIV_EQ: "ALL (a::nat) (b::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   826
   a ~= (0::nat) --> <= n (DIV b a) = <= (a * n) b"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   827
  by (import hollight LE_RDIV_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   828
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   829
lemma LE_LDIV_EQ: "ALL (a::nat) (b::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   830
   a ~= (0::nat) --> <= (DIV b a) n = < b (a * (n + NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   831
  by (import hollight LE_LDIV_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   832
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   833
lemma DIV_EQ_0: "ALL (m::nat) n::nat. n ~= (0::nat) --> (DIV m n = (0::nat)) = < m n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   834
  by (import hollight DIV_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   835
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   836
lemma MOD_EQ_0: "ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   837
   n ~= (0::nat) --> (MOD m n = (0::nat)) = (EX q::nat. m = q * n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   838
  by (import hollight MOD_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   839
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   840
lemma EVEN_MOD: "ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   841
   EVEN n = (MOD n (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   842
  by (import hollight EVEN_MOD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   843
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   844
lemma ODD_MOD: "ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   845
   ODD n =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   846
   (MOD n (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   847
  by (import hollight ODD_MOD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   848
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   849
lemma MOD_MULT_RMOD: "ALL (m::nat) (n::nat) p::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   850
   n ~= (0::nat) --> MOD (m * MOD p n) n = MOD (m * p) n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   851
  by (import hollight MOD_MULT_RMOD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   852
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   853
lemma MOD_MULT_LMOD: "ALL (x::nat) (xa::nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   854
   xa ~= (0::nat) --> MOD (MOD x xa * xb) xa = MOD (x * xb) xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   855
  by (import hollight MOD_MULT_LMOD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   856
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   857
lemma MOD_MULT_MOD2: "ALL (x::nat) (xa::nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   858
   xa ~= (0::nat) --> MOD (MOD x xa * MOD xb xa) xa = MOD (x * xb) xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   859
  by (import hollight MOD_MULT_MOD2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   860
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   861
lemma MOD_EXP_MOD: "ALL (m::nat) (n::nat) p::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   862
   n ~= (0::nat) --> MOD (EXP (MOD m n) p) n = MOD (EXP m p) n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   863
  by (import hollight MOD_EXP_MOD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   864
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   865
lemma MOD_MULT_ADD: "ALL (m::nat) (n::nat) p::nat. MOD (m * n + p) n = MOD p n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   866
  by (import hollight MOD_MULT_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   867
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   868
lemma MOD_ADD_MOD: "ALL (a::nat) (b::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   869
   n ~= (0::nat) --> MOD (MOD a n + MOD b n) n = MOD (a + b) n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   870
  by (import hollight MOD_ADD_MOD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   871
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   872
lemma DIV_ADD_MOD: "ALL (a::nat) (b::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   873
   n ~= (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   874
   (MOD (a + b) n = MOD a n + MOD b n) = (DIV (a + b) n = DIV a n + DIV b n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   875
  by (import hollight DIV_ADD_MOD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   876
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   877
lemma DIV_REFL: "ALL n::nat. n ~= (0::nat) --> DIV n n = NUMERAL_BIT1 (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   878
  by (import hollight DIV_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   879
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   880
lemma MOD_LE: "ALL (m::nat) n::nat. n ~= (0::nat) --> <= (MOD m n) m"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   881
  by (import hollight MOD_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   882
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   883
lemma DIV_MONO2: "ALL (m::nat) (n::nat) p::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   884
   p ~= (0::nat) & <= p m --> <= (DIV n m) (DIV n p)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   885
  by (import hollight DIV_MONO2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   886
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   887
lemma DIV_LE_EXCLUSION: "ALL (a::nat) (b::nat) (c::nat) d::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   888
   b ~= (0::nat) & < (b * c) ((a + NUMERAL_BIT1 (0::nat)) * d) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   889
   <= (DIV c d) (DIV a b)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   890
  by (import hollight DIV_LE_EXCLUSION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   891
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   892
lemma DIV_EQ_EXCLUSION: "< ((b::nat) * (c::nat)) (((a::nat) + NUMERAL_BIT1 (0::nat)) * (d::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   893
< (a * d) ((c + NUMERAL_BIT1 (0::nat)) * b) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   894
DIV a b = DIV c d"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   895
  by (import hollight DIV_EQ_EXCLUSION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   896
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   897
lemma SUB_ELIM_THM: "(P::nat => bool) ((a::nat) - (b::nat)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   898
(ALL x::nat. (b = a + x --> P (0::nat)) & (a = b + x --> P x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   899
  by (import hollight SUB_ELIM_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   900
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   901
lemma PRE_ELIM_THM: "(P::nat => bool) (Pred (n::nat)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   902
(ALL m::nat. (n = (0::nat) --> P (0::nat)) & (n = Suc m --> P m))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   903
  by (import hollight PRE_ELIM_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   904
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   905
lemma DIVMOD_ELIM_THM: "(P::nat => nat => bool) (DIV (m::nat) (n::nat)) (MOD m n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   906
(n = (0::nat) & P (0::nat) (0::nat) |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   907
 n ~= (0::nat) & (ALL (q::nat) r::nat. m = q * n + r & < r n --> P q r))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   908
  by (import hollight DIVMOD_ELIM_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   909
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   910
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   911
  eqeq :: "'q_9910::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   912
=> 'q_9909::type => ('q_9910::type => 'q_9909::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   913
  "eqeq ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   914
%(u::'q_9910::type) (ua::'q_9909::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   915
   ub::'q_9910::type => 'q_9909::type => bool. ub u ua"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   916
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   917
lemma DEF__equal__equal_: "eqeq =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   918
(%(u::'q_9910::type) (ua::'q_9909::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   919
    ub::'q_9910::type => 'q_9909::type => bool. ub u ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   920
  by (import hollight DEF__equal__equal_)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   921
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   922
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   923
  mod_nat :: "nat => nat => nat => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   924
  "mod_nat ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   925
%(u::nat) (ua::nat) ub::nat. EX (q1::nat) q2::nat. ua + u * q1 = ub + u * q2"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   926
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   927
lemma DEF_mod_nat: "mod_nat =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   928
(%(u::nat) (ua::nat) ub::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   929
    EX (q1::nat) q2::nat. ua + u * q1 = ub + u * q2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   930
  by (import hollight DEF_mod_nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   931
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   932
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   933
  minimal :: "(nat => bool) => nat" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   934
  "minimal == %u::nat => bool. SOME n::nat. u n & (ALL m::nat. < m n --> ~ u m)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   935
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   936
lemma DEF_minimal: "minimal =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   937
(%u::nat => bool. SOME n::nat. u n & (ALL m::nat. < m n --> ~ u m))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   938
  by (import hollight DEF_minimal)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   939
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   940
lemma MINIMAL: "ALL P::nat => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   941
   Ex P = (P (minimal P) & (ALL x::nat. < x (minimal P) --> ~ P x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   942
  by (import hollight MINIMAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   943
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   944
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   945
  WF :: "('A::type => 'A::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   946
  "WF ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   947
%u::'A::type => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   948
   ALL P::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   949
      Ex P --> (EX x::'A::type. P x & (ALL y::'A::type. u y x --> ~ P y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   950
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   951
lemma DEF_WF: "WF =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   952
(%u::'A::type => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   953
    ALL P::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   954
       Ex P --> (EX x::'A::type. P x & (ALL y::'A::type. u y x --> ~ P y)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   955
  by (import hollight DEF_WF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   956
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   957
lemma WF_EQ: "WF (u_354::'A::type => 'A::type => bool) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   958
(ALL P::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   959
    Ex P = (EX x::'A::type. P x & (ALL y::'A::type. u_354 y x --> ~ P y)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   960
  by (import hollight WF_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   961
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   962
lemma WF_IND: "WF (u_354::'A::type => 'A::type => bool) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   963
(ALL P::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   964
    (ALL x::'A::type. (ALL y::'A::type. u_354 y x --> P y) --> P x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   965
    All P)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   966
  by (import hollight WF_IND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   967
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   968
lemma WF_DCHAIN: "WF (u_354::'A::type => 'A::type => bool) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   969
(~ (EX s::nat => 'A::type. ALL n::nat. u_354 (s (Suc n)) (s n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   970
  by (import hollight WF_DCHAIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   971
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   972
lemma WF_UREC: "WF (u_354::'A::type => 'A::type => bool) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   973
(ALL H::('A::type => 'B::type) => 'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   974
    (ALL (f::'A::type => 'B::type) (g::'A::type => 'B::type) x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   975
        (ALL z::'A::type. u_354 z x --> f z = g z) --> H f x = H g x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   976
    (ALL (f::'A::type => 'B::type) g::'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   977
        (ALL x::'A::type. f x = H f x) & (ALL x::'A::type. g x = H g x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   978
        f = g))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   979
  by (import hollight WF_UREC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   980
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   981
lemma WF_UREC_WF: "(ALL H::('A::type => bool) => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   982
    (ALL (f::'A::type => bool) (g::'A::type => bool) x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   983
        (ALL z::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   984
            (u_354::'A::type => 'A::type => bool) z x --> f z = g z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   985
        H f x = H g x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   986
    (ALL (f::'A::type => bool) g::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   987
        (ALL x::'A::type. f x = H f x) & (ALL x::'A::type. g x = H g x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   988
        f = g)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   989
WF u_354"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   990
  by (import hollight WF_UREC_WF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   991
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   992
lemma WF_REC_INVARIANT: "WF (u_354::'A::type => 'A::type => bool) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   993
(ALL (H::('A::type => 'B::type) => 'A::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   994
    S::'A::type => 'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   995
    (ALL (f::'A::type => 'B::type) (g::'A::type => 'B::type) x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   996
        (ALL z::'A::type. u_354 z x --> f z = g z & S z (f z)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   997
        H f x = H g x & S x (H f x)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   998
    (EX f::'A::type => 'B::type. ALL x::'A::type. f x = H f x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
   999
  by (import hollight WF_REC_INVARIANT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1000
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1001
lemma WF_REC: "WF (u_354::'A::type => 'A::type => bool) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1002
(ALL H::('A::type => 'B::type) => 'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1003
    (ALL (f::'A::type => 'B::type) (g::'A::type => 'B::type) x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1004
        (ALL z::'A::type. u_354 z x --> f z = g z) --> H f x = H g x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1005
    (EX f::'A::type => 'B::type. ALL x::'A::type. f x = H f x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1006
  by (import hollight WF_REC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1007
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1008
lemma WF_REC_WF: "(ALL H::('A::type => nat) => 'A::type => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1009
    (ALL (f::'A::type => nat) (g::'A::type => nat) x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1010
        (ALL z::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1011
            (u_354::'A::type => 'A::type => bool) z x --> f z = g z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1012
        H f x = H g x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1013
    (EX f::'A::type => nat. ALL x::'A::type. f x = H f x)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1014
WF u_354"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1015
  by (import hollight WF_REC_WF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1016
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1017
lemma WF_EREC: "WF (u_354::'A::type => 'A::type => bool) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1018
(ALL H::('A::type => 'B::type) => 'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1019
    (ALL (f::'A::type => 'B::type) (g::'A::type => 'B::type) x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1020
        (ALL z::'A::type. u_354 z x --> f z = g z) --> H f x = H g x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1021
    (EX! f::'A::type => 'B::type. ALL x::'A::type. f x = H f x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1022
  by (import hollight WF_EREC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1023
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1024
lemma WF_SUBSET: "(ALL (x::'A::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1025
    (u_354::'A::type => 'A::type => bool) x y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1026
    (u_473::'A::type => 'A::type => bool) x y) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1027
WF u_473 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1028
WF u_354"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1029
  by (import hollight WF_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1030
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1031
lemma WF_MEASURE_GEN: "ALL m::'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1032
   WF (u_354::'B::type => 'B::type => bool) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1033
   WF (%(x::'A::type) x'::'A::type. u_354 (m x) (m x'))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1034
  by (import hollight WF_MEASURE_GEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1035
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1036
lemma WF_LEX_DEPENDENT: "ALL (R::'A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1037
   S::'A::type => 'B::type => 'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1038
   WF R & (ALL x::'A::type. WF (S x)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1039
   WF (GABS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1040
        (%f::'A::type * 'B::type => 'A::type * 'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1041
            ALL (r1::'A::type) s1::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1042
               GEQ (f (r1, s1))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1043
                (GABS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1044
                  (%f::'A::type * 'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1045
                      ALL (r2::'A::type) s2::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1046
                         GEQ (f (r2, s2))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1047
                          (R r1 r2 | r1 = r2 & S r1 s1 s2)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1048
  by (import hollight WF_LEX_DEPENDENT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1049
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1050
lemma WF_LEX: "ALL (x::'A::type => 'A::type => bool) xa::'B::type => 'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1051
   WF x & WF xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1052
   WF (GABS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1053
        (%f::'A::type * 'B::type => 'A::type * 'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1054
            ALL (r1::'A::type) s1::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1055
               GEQ (f (r1, s1))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1056
                (GABS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1057
                  (%f::'A::type * 'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1058
                      ALL (r2::'A::type) s2::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1059
                         GEQ (f (r2, s2)) (x r1 r2 | r1 = r2 & xa s1 s2)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1060
  by (import hollight WF_LEX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1061
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1062
lemma WF_POINTWISE: "WF (u_354::'A::type => 'A::type => bool) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1063
WF (u_473::'B::type => 'B::type => bool) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1064
WF (GABS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1065
     (%f::'A::type * 'B::type => 'A::type * 'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1066
         ALL (x1::'A::type) y1::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1067
            GEQ (f (x1, y1))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1068
             (GABS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1069
               (%f::'A::type * 'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1070
                   ALL (x2::'A::type) y2::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1071
                      GEQ (f (x2, y2)) (u_354 x1 x2 & u_473 y1 y2)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1072
  by (import hollight WF_POINTWISE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1073
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1074
lemma WF_num: "WF <"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1075
  by (import hollight WF_num)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1076
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1077
lemma WF_REC_num: "ALL H::(nat => 'A::type) => nat => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1078
   (ALL (f::nat => 'A::type) (g::nat => 'A::type) x::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1079
       (ALL z::nat. < z x --> f z = g z) --> H f x = H g x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1080
   (EX f::nat => 'A::type. ALL x::nat. f x = H f x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1081
  by (import hollight WF_REC_num)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1082
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1083
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1084
  measure :: "('q_11107::type => nat) => 'q_11107::type => 'q_11107::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1085
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1086
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1087
  measure_def: "hollight.measure ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1088
%(u::'q_11107::type => nat) (x::'q_11107::type) y::'q_11107::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1089
   < (u x) (u y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1090
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1091
lemma DEF_measure: "hollight.measure =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1092
(%(u::'q_11107::type => nat) (x::'q_11107::type) y::'q_11107::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1093
    < (u x) (u y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1094
  by (import hollight DEF_measure)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1095
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1096
lemma WF_MEASURE: "ALL m::'A::type => nat. WF (hollight.measure m)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1097
  by (import hollight WF_MEASURE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1098
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1099
lemma MEASURE_LE: "(ALL x::'q_11137::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1100
    hollight.measure (m::'q_11137::type => nat) x (a::'q_11137::type) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1101
    hollight.measure m x (b::'q_11137::type)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1102
<= (m a) (m b)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1103
  by (import hollight MEASURE_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1104
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1105
lemma WF_REFL: "ALL x::'A::type. WF (u_354::'A::type => 'A::type => bool) --> ~ u_354 x x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1106
  by (import hollight WF_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1107
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1108
lemma WF_FALSE: "WF (%(x::'A::type) y::'A::type. False)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1109
  by (import hollight WF_FALSE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1110
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1111
lemma WF_REC_TAIL: "ALL (P::'A::type => bool) (g::'A::type => 'A::type) h::'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1112
   EX f::'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1113
      ALL x::'A::type. f x = COND (P x) (f (g x)) (h x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1114
  by (import hollight WF_REC_TAIL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1115
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1116
lemma WF_REC_TAIL_GENERAL: "ALL (P::('A::type => 'B::type) => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1117
   (G::('A::type => 'B::type) => 'A::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1118
   H::('A::type => 'B::type) => 'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1119
   WF (u_354::'A::type => 'A::type => bool) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1120
   (ALL (f::'A::type => 'B::type) (g::'A::type => 'B::type) x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1121
       (ALL z::'A::type. u_354 z x --> f z = g z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1122
       P f x = P g x & G f x = G g x & H f x = H g x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1123
   (ALL (f::'A::type => 'B::type) (g::'A::type => 'B::type) x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1124
       (ALL z::'A::type. u_354 z x --> f z = g z) --> H f x = H g x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1125
   (ALL (f::'A::type => 'B::type) (x::'A::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1126
       P f x & u_354 y (G f x) --> u_354 y x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1127
   (EX f::'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1128
       ALL x::'A::type. f x = COND (P f x) (f (G f x)) (H f x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1129
  by (import hollight WF_REC_TAIL_GENERAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1130
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1131
lemma ARITH_ZERO: "(0::nat) = (0::nat) & NUMERAL_BIT0 (0::nat) = (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1132
  by (import hollight ARITH_ZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1133
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1134
lemma ARITH_SUC: "(ALL x::nat. Suc x = Suc x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1135
Suc (0::nat) = NUMERAL_BIT1 (0::nat) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1136
(ALL x::nat. Suc (NUMERAL_BIT0 x) = NUMERAL_BIT1 x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1137
(ALL x::nat. Suc (NUMERAL_BIT1 x) = NUMERAL_BIT0 (Suc x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1138
  by (import hollight ARITH_SUC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1139
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1140
lemma ARITH_PRE: "(ALL x::nat. Pred x = Pred x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1141
Pred (0::nat) = (0::nat) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1142
(ALL x::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1143
    Pred (NUMERAL_BIT0 x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1144
    COND (x = (0::nat)) (0::nat) (NUMERAL_BIT1 (Pred x))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1145
(ALL x::nat. Pred (NUMERAL_BIT1 x) = NUMERAL_BIT0 x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1146
  by (import hollight ARITH_PRE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1147
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1148
lemma ARITH_ADD: "(ALL (x::nat) xa::nat. x + xa = x + xa) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1149
(0::nat) + (0::nat) = (0::nat) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1150
(ALL x::nat. (0::nat) + NUMERAL_BIT0 x = NUMERAL_BIT0 x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1151
(ALL x::nat. (0::nat) + NUMERAL_BIT1 x = NUMERAL_BIT1 x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1152
(ALL x::nat. NUMERAL_BIT0 x + (0::nat) = NUMERAL_BIT0 x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1153
(ALL x::nat. NUMERAL_BIT1 x + (0::nat) = NUMERAL_BIT1 x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1154
(ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1155
    NUMERAL_BIT0 x + NUMERAL_BIT0 xa = NUMERAL_BIT0 (x + xa)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1156
(ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1157
    NUMERAL_BIT0 x + NUMERAL_BIT1 xa = NUMERAL_BIT1 (x + xa)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1158
(ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1159
    NUMERAL_BIT1 x + NUMERAL_BIT0 xa = NUMERAL_BIT1 (x + xa)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1160
(ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1161
    NUMERAL_BIT1 x + NUMERAL_BIT1 xa = NUMERAL_BIT0 (Suc (x + xa)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1162
  by (import hollight ARITH_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1163
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1164
lemma ARITH_MULT: "(ALL (x::nat) xa::nat. x * xa = x * xa) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1165
(0::nat) * (0::nat) = (0::nat) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1166
(ALL x::nat. (0::nat) * NUMERAL_BIT0 x = (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1167
(ALL x::nat. (0::nat) * NUMERAL_BIT1 x = (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1168
(ALL x::nat. NUMERAL_BIT0 x * (0::nat) = (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1169
(ALL x::nat. NUMERAL_BIT1 x * (0::nat) = (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1170
(ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1171
    NUMERAL_BIT0 x * NUMERAL_BIT0 xa =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1172
    NUMERAL_BIT0 (NUMERAL_BIT0 (x * xa))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1173
(ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1174
    NUMERAL_BIT0 x * NUMERAL_BIT1 xa =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1175
    NUMERAL_BIT0 x + NUMERAL_BIT0 (NUMERAL_BIT0 (x * xa))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1176
(ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1177
    NUMERAL_BIT1 x * NUMERAL_BIT0 xa =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1178
    NUMERAL_BIT0 xa + NUMERAL_BIT0 (NUMERAL_BIT0 (x * xa))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1179
(ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1180
    NUMERAL_BIT1 x * NUMERAL_BIT1 xa =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1181
    NUMERAL_BIT1 x +
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1182
    (NUMERAL_BIT0 xa + NUMERAL_BIT0 (NUMERAL_BIT0 (x * xa))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1183
  by (import hollight ARITH_MULT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1184
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1185
lemma ARITH_EXP: "(ALL (x::nat) xa::nat. EXP x xa = EXP x xa) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1186
EXP (0::nat) (0::nat) = NUMERAL_BIT1 (0::nat) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1187
(ALL m::nat. EXP (NUMERAL_BIT0 m) (0::nat) = NUMERAL_BIT1 (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1188
(ALL m::nat. EXP (NUMERAL_BIT1 m) (0::nat) = NUMERAL_BIT1 (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1189
(ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1190
    EXP (0::nat) (NUMERAL_BIT0 n) = EXP (0::nat) n * EXP (0::nat) n) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1191
(ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1192
    EXP (NUMERAL_BIT0 m) (NUMERAL_BIT0 n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1193
    EXP (NUMERAL_BIT0 m) n * EXP (NUMERAL_BIT0 m) n) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1194
(ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1195
    EXP (NUMERAL_BIT1 m) (NUMERAL_BIT0 n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1196
    EXP (NUMERAL_BIT1 m) n * EXP (NUMERAL_BIT1 m) n) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1197
(ALL n::nat. EXP (0::nat) (NUMERAL_BIT1 n) = (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1198
(ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1199
    EXP (NUMERAL_BIT0 m) (NUMERAL_BIT1 n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1200
    NUMERAL_BIT0 m * (EXP (NUMERAL_BIT0 m) n * EXP (NUMERAL_BIT0 m) n)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1201
(ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1202
    EXP (NUMERAL_BIT1 m) (NUMERAL_BIT1 n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1203
    NUMERAL_BIT1 m * (EXP (NUMERAL_BIT1 m) n * EXP (NUMERAL_BIT1 m) n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1204
  by (import hollight ARITH_EXP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1205
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1206
lemma ARITH_EVEN: "(ALL x::nat. EVEN x = EVEN x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1207
EVEN (0::nat) = True &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1208
(ALL x::nat. EVEN (NUMERAL_BIT0 x) = True) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1209
(ALL x::nat. EVEN (NUMERAL_BIT1 x) = False)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1210
  by (import hollight ARITH_EVEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1211
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1212
lemma ARITH_ODD: "(ALL x::nat. ODD x = ODD x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1213
ODD (0::nat) = False &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1214
(ALL x::nat. ODD (NUMERAL_BIT0 x) = False) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1215
(ALL x::nat. ODD (NUMERAL_BIT1 x) = True)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1216
  by (import hollight ARITH_ODD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1217
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1218
lemma ARITH_LE: "(ALL (x::nat) xa::nat. <= x xa = <= x xa) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1219
<= (0::nat) (0::nat) = True &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1220
(ALL x::nat. <= (NUMERAL_BIT0 x) (0::nat) = (x = (0::nat))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1221
(ALL x::nat. <= (NUMERAL_BIT1 x) (0::nat) = False) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1222
(ALL x::nat. <= (0::nat) (NUMERAL_BIT0 x) = True) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1223
(ALL x::nat. <= (0::nat) (NUMERAL_BIT1 x) = True) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1224
(ALL (x::nat) xa::nat. <= (NUMERAL_BIT0 x) (NUMERAL_BIT0 xa) = <= x xa) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1225
(ALL (x::nat) xa::nat. <= (NUMERAL_BIT0 x) (NUMERAL_BIT1 xa) = <= x xa) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1226
(ALL (x::nat) xa::nat. <= (NUMERAL_BIT1 x) (NUMERAL_BIT0 xa) = < x xa) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1227
(ALL (x::nat) xa::nat. <= (NUMERAL_BIT1 x) (NUMERAL_BIT1 xa) = <= x xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1228
  by (import hollight ARITH_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1229
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1230
lemma ARITH_LT: "(ALL (x::nat) xa::nat. < x xa = < x xa) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1231
< (0::nat) (0::nat) = False &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1232
(ALL x::nat. < (NUMERAL_BIT0 x) (0::nat) = False) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1233
(ALL x::nat. < (NUMERAL_BIT1 x) (0::nat) = False) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1234
(ALL x::nat. < (0::nat) (NUMERAL_BIT0 x) = < (0::nat) x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1235
(ALL x::nat. < (0::nat) (NUMERAL_BIT1 x) = True) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1236
(ALL (x::nat) xa::nat. < (NUMERAL_BIT0 x) (NUMERAL_BIT0 xa) = < x xa) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1237
(ALL (x::nat) xa::nat. < (NUMERAL_BIT0 x) (NUMERAL_BIT1 xa) = <= x xa) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1238
(ALL (x::nat) xa::nat. < (NUMERAL_BIT1 x) (NUMERAL_BIT0 xa) = < x xa) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1239
(ALL (x::nat) xa::nat. < (NUMERAL_BIT1 x) (NUMERAL_BIT1 xa) = < x xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1240
  by (import hollight ARITH_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1241
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1242
lemma ARITH_EQ: "(ALL (x::nat) xa::nat. (x = xa) = (x = xa)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1243
((0::nat) = (0::nat)) = True &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1244
(ALL x::nat. (NUMERAL_BIT0 x = (0::nat)) = (x = (0::nat))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1245
(ALL x::nat. (NUMERAL_BIT1 x = (0::nat)) = False) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1246
(ALL x::nat. ((0::nat) = NUMERAL_BIT0 x) = ((0::nat) = x)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1247
(ALL x::nat. ((0::nat) = NUMERAL_BIT1 x) = False) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1248
(ALL (x::nat) xa::nat. (NUMERAL_BIT0 x = NUMERAL_BIT0 xa) = (x = xa)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1249
(ALL (x::nat) xa::nat. (NUMERAL_BIT0 x = NUMERAL_BIT1 xa) = False) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1250
(ALL (x::nat) xa::nat. (NUMERAL_BIT1 x = NUMERAL_BIT0 xa) = False) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1251
(ALL (x::nat) xa::nat. (NUMERAL_BIT1 x = NUMERAL_BIT1 xa) = (x = xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1252
  by (import hollight ARITH_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1253
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1254
lemma ARITH_SUB: "(ALL (x::nat) xa::nat. x - xa = x - xa) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1255
(0::nat) - (0::nat) = (0::nat) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1256
(ALL x::nat. (0::nat) - NUMERAL_BIT0 x = (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1257
(ALL x::nat. (0::nat) - NUMERAL_BIT1 x = (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1258
(ALL x::nat. NUMERAL_BIT0 x - (0::nat) = NUMERAL_BIT0 x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1259
(ALL x::nat. NUMERAL_BIT1 x - (0::nat) = NUMERAL_BIT1 x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1260
(ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1261
    NUMERAL_BIT0 m - NUMERAL_BIT0 n = NUMERAL_BIT0 (m - n)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1262
(ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1263
    NUMERAL_BIT0 m - NUMERAL_BIT1 n = Pred (NUMERAL_BIT0 (m - n))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1264
(ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1265
    NUMERAL_BIT1 m - NUMERAL_BIT0 n =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1266
    COND (<= n m) (NUMERAL_BIT1 (m - n)) (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1267
(ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1268
    NUMERAL_BIT1 m - NUMERAL_BIT1 n = NUMERAL_BIT0 (m - n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1269
  by (import hollight ARITH_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1270
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1271
lemma right_th: "(s::nat) * NUMERAL_BIT1 (x::nat) = s + NUMERAL_BIT0 (s * x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1272
  by (import hollight right_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1273
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1274
lemma SEMIRING_PTHS: "(ALL (x::'A::type) (y::'A::type) z::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1275
    (add::'A::type => 'A::type => 'A::type) x (add y z) = add (add x y) z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1276
(ALL (x::'A::type) y::'A::type. add x y = add y x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1277
(ALL x::'A::type. add (r0::'A::type) x = x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1278
(ALL (x::'A::type) (y::'A::type) z::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1279
    (mul::'A::type => 'A::type => 'A::type) x (mul y z) = mul (mul x y) z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1280
(ALL (x::'A::type) y::'A::type. mul x y = mul y x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1281
(ALL x::'A::type. mul (r1::'A::type) x = x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1282
(ALL x::'A::type. mul r0 x = r0) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1283
(ALL (x::'A::type) (y::'A::type) z::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1284
    mul x (add y z) = add (mul x y) (mul x z)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1285
(ALL x::'A::type. (pwr::'A::type => nat => 'A::type) x (0::nat) = r1) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1286
(ALL (x::'A::type) n::nat. pwr x (Suc n) = mul x (pwr x n)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1287
mul r1 (x::'A::type) = x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1288
add (mul (a::'A::type) (m::'A::type)) (mul (b::'A::type) m) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1289
mul (add a b) m &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1290
add (mul a m) m = mul (add a r1) m &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1291
add m (mul a m) = mul (add a r1) m &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1292
add m m = mul (add r1 r1) m &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1293
mul r0 m = r0 &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1294
add r0 a = a &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1295
add a r0 = a &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1296
mul a b = mul b a &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1297
mul (add a b) (c::'A::type) = add (mul a c) (mul b c) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1298
mul r0 a = r0 &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1299
mul a r0 = r0 &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1300
mul r1 a = a &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1301
mul a r1 = a &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1302
mul (mul (lx::'A::type) (ly::'A::type))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1303
 (mul (rx::'A::type) (ry::'A::type)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1304
mul (mul lx rx) (mul ly ry) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1305
mul (mul lx ly) (mul rx ry) = mul lx (mul ly (mul rx ry)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1306
mul (mul lx ly) (mul rx ry) = mul rx (mul (mul lx ly) ry) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1307
mul (mul lx ly) rx = mul (mul lx rx) ly &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1308
mul (mul lx ly) rx = mul lx (mul ly rx) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1309
mul lx rx = mul rx lx &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1310
mul lx (mul rx ry) = mul (mul lx rx) ry &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1311
mul lx (mul rx ry) = mul rx (mul lx ry) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1312
add (add a b) (add c (d::'A::type)) = add (add a c) (add b d) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1313
add (add a b) c = add a (add b c) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1314
add a (add c d) = add c (add a d) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1315
add (add a b) c = add (add a c) b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1316
add a c = add c a &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1317
add a (add c d) = add (add a c) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1318
mul (pwr x (p::nat)) (pwr x (q::nat)) = pwr x (p + q) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1319
mul x (pwr x q) = pwr x (Suc q) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1320
mul (pwr x q) x = pwr x (Suc q) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1321
mul x x = pwr x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1322
pwr (mul x (y::'A::type)) q = mul (pwr x q) (pwr y q) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1323
pwr (pwr x p) q = pwr x (p * q) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1324
pwr x (0::nat) = r1 &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1325
pwr x (NUMERAL_BIT1 (0::nat)) = x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1326
mul x (add y (z::'A::type)) = add (mul x y) (mul x z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1327
pwr x (Suc q) = mul x (pwr x q)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1328
  by (import hollight SEMIRING_PTHS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1329
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1330
lemma sth: "(ALL (x::nat) (y::nat) z::nat. x + (y + z) = x + y + z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1331
(ALL (x::nat) y::nat. x + y = y + x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1332
(ALL x::nat. (0::nat) + x = x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1333
(ALL (x::nat) (y::nat) z::nat. x * (y * z) = x * y * z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1334
(ALL (x::nat) y::nat. x * y = y * x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1335
(ALL x::nat. NUMERAL_BIT1 (0::nat) * x = x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1336
(ALL x::nat. (0::nat) * x = (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1337
(ALL (x::nat) (xa::nat) xb::nat. x * (xa + xb) = x * xa + x * xb) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1338
(ALL x::nat. EXP x (0::nat) = NUMERAL_BIT1 (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1339
(ALL (x::nat) xa::nat. EXP x (Suc xa) = x * EXP x xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1340
  by (import hollight sth)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1341
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1342
lemma NUM_INTEGRAL_LEMMA: "(w::nat) = (x::nat) + (d::nat) & (y::nat) = (z::nat) + (e::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1343
(w * y + x * z = w * z + x * y) = (w = x | y = z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1344
  by (import hollight NUM_INTEGRAL_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1345
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1346
lemma NUM_INTEGRAL: "(ALL x::nat. (0::nat) * x = (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1347
(ALL (x::nat) (xa::nat) xb::nat. (x + xa = x + xb) = (xa = xb)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1348
(ALL (w::nat) (x::nat) (y::nat) z::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1349
    (w * y + x * z = w * z + x * y) = (w = x | y = z))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1350
  by (import hollight NUM_INTEGRAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1351
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1352
lemma INJ_INVERSE2: "ALL P::'A::type => 'B::type => 'C::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1353
   (ALL (x1::'A::type) (y1::'B::type) (x2::'A::type) y2::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1354
       (P x1 y1 = P x2 y2) = (x1 = x2 & y1 = y2)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1355
   (EX (x::'C::type => 'A::type) Y::'C::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1356
       ALL (xa::'A::type) y::'B::type. x (P xa y) = xa & Y (P xa y) = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1357
  by (import hollight INJ_INVERSE2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1358
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1359
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1360
  NUMPAIR :: "nat => nat => nat" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1361
  "NUMPAIR ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1362
%(u::nat) ua::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1363
   EXP (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) u *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1364
   (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * ua + NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1365
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1366
lemma DEF_NUMPAIR: "NUMPAIR =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1367
(%(u::nat) ua::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1368
    EXP (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) u *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1369
    (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * ua + NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1370
  by (import hollight DEF_NUMPAIR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1371
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1372
lemma NUMPAIR_INJ_LEMMA: "ALL (x::nat) (xa::nat) (xb::nat) xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1373
   NUMPAIR x xa = NUMPAIR xb xc --> x = xb"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1374
  by (import hollight NUMPAIR_INJ_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1375
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1376
lemma NUMPAIR_INJ: "ALL (x1::nat) (y1::nat) (x2::nat) y2::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1377
   (NUMPAIR x1 y1 = NUMPAIR x2 y2) = (x1 = x2 & y1 = y2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1378
  by (import hollight NUMPAIR_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1379
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1380
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1381
  NUMFST :: "nat => nat" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1382
  "NUMFST ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1383
SOME X::nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1384
   EX Y::nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1385
      ALL (x::nat) y::nat. X (NUMPAIR x y) = x & Y (NUMPAIR x y) = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1386
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1387
lemma DEF_NUMFST: "NUMFST =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1388
(SOME X::nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1389
    EX Y::nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1390
       ALL (x::nat) y::nat. X (NUMPAIR x y) = x & Y (NUMPAIR x y) = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1391
  by (import hollight DEF_NUMFST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1392
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1393
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1394
  NUMSND :: "nat => nat" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1395
  "NUMSND ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1396
SOME Y::nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1397
   ALL (x::nat) y::nat. NUMFST (NUMPAIR x y) = x & Y (NUMPAIR x y) = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1398
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1399
lemma DEF_NUMSND: "NUMSND =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1400
(SOME Y::nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1401
    ALL (x::nat) y::nat. NUMFST (NUMPAIR x y) = x & Y (NUMPAIR x y) = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1402
  by (import hollight DEF_NUMSND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1403
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1404
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1405
  NUMSUM :: "bool => nat => nat" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1406
  "NUMSUM ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1407
%(u::bool) ua::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1408
   COND u (Suc (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * ua))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1409
    (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1410
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1411
lemma DEF_NUMSUM: "NUMSUM =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1412
(%(u::bool) ua::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1413
    COND u (Suc (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * ua))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1414
     (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1415
  by (import hollight DEF_NUMSUM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1416
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1417
lemma NUMSUM_INJ: "ALL (b1::bool) (x1::nat) (b2::bool) x2::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1418
   (NUMSUM b1 x1 = NUMSUM b2 x2) = (b1 = b2 & x1 = x2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1419
  by (import hollight NUMSUM_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1420
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1421
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1422
  NUMLEFT :: "nat => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1423
  "NUMLEFT ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1424
SOME X::nat => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1425
   EX Y::nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1426
      ALL (x::bool) y::nat. X (NUMSUM x y) = x & Y (NUMSUM x y) = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1427
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1428
lemma DEF_NUMLEFT: "NUMLEFT =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1429
(SOME X::nat => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1430
    EX Y::nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1431
       ALL (x::bool) y::nat. X (NUMSUM x y) = x & Y (NUMSUM x y) = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1432
  by (import hollight DEF_NUMLEFT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1433
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1434
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1435
  NUMRIGHT :: "nat => nat" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1436
  "NUMRIGHT ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1437
SOME Y::nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1438
   ALL (x::bool) y::nat. NUMLEFT (NUMSUM x y) = x & Y (NUMSUM x y) = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1439
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1440
lemma DEF_NUMRIGHT: "NUMRIGHT =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1441
(SOME Y::nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1442
    ALL (x::bool) y::nat. NUMLEFT (NUMSUM x y) = x & Y (NUMSUM x y) = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1443
  by (import hollight DEF_NUMRIGHT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1444
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1445
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1446
  INJN :: "nat => nat => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1447
  "INJN == %(u::nat) (n::nat) a::'A::type. n = u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1448
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1449
lemma DEF_INJN: "INJN = (%(u::nat) (n::nat) a::'A::type. n = u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1450
  by (import hollight DEF_INJN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1451
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1452
lemma INJN_INJ: "(All::(nat => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1453
 (%n1::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1454
     (All::(nat => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1455
      (%n2::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1456
          (op =::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1457
           ((op =::(nat => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1458
                   => (nat => 'A::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1459
             ((INJN::nat => nat => 'A::type => bool) n1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1460
             ((INJN::nat => nat => 'A::type => bool) n2))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1461
           ((op =::nat => nat => bool) n1 n2)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1462
  by (import hollight INJN_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1463
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1464
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1465
  INJA :: "'A::type => nat => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1466
  "INJA == %(u::'A::type) (n::nat) b::'A::type. b = u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1467
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1468
lemma DEF_INJA: "INJA = (%(u::'A::type) (n::nat) b::'A::type. b = u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1469
  by (import hollight DEF_INJA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1470
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1471
lemma INJA_INJ: "ALL (a1::'A::type) a2::'A::type. (INJA a1 = INJA a2) = (a1 = a2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1472
  by (import hollight INJA_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1473
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1474
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1475
  INJF :: "(nat => nat => 'A::type => bool) => nat => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1476
  "INJF == %(u::nat => nat => 'A::type => bool) n::nat. u (NUMFST n) (NUMSND n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1477
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1478
lemma DEF_INJF: "INJF =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1479
(%(u::nat => nat => 'A::type => bool) n::nat. u (NUMFST n) (NUMSND n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1480
  by (import hollight DEF_INJF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1481
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1482
lemma INJF_INJ: "ALL (f1::nat => nat => 'A::type => bool) f2::nat => nat => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1483
   (INJF f1 = INJF f2) = (f1 = f2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1484
  by (import hollight INJF_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1485
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1486
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1487
  INJP :: "(nat => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1488
=> (nat => 'A::type => bool) => nat => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1489
  "INJP ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1490
%(u::nat => 'A::type => bool) (ua::nat => 'A::type => bool) (n::nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1491
   a::'A::type. COND (NUMLEFT n) (u (NUMRIGHT n) a) (ua (NUMRIGHT n) a)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1492
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1493
lemma DEF_INJP: "INJP =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1494
(%(u::nat => 'A::type => bool) (ua::nat => 'A::type => bool) (n::nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1495
    a::'A::type. COND (NUMLEFT n) (u (NUMRIGHT n) a) (ua (NUMRIGHT n) a))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1496
  by (import hollight DEF_INJP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1497
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1498
lemma INJP_INJ: "ALL (f1::nat => 'A::type => bool) (f1'::nat => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1499
   (f2::nat => 'A::type => bool) f2'::nat => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1500
   (INJP f1 f2 = INJP f1' f2') = (f1 = f1' & f2 = f2')"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1501
  by (import hollight INJP_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1502
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1503
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1504
  ZCONSTR :: "nat
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1505
=> 'A::type => (nat => nat => 'A::type => bool) => nat => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1506
  "ZCONSTR ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1507
%(u::nat) (ua::'A::type) ub::nat => nat => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1508
   INJP (INJN (Suc u)) (INJP (INJA ua) (INJF ub))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1509
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1510
lemma DEF_ZCONSTR: "ZCONSTR =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1511
(%(u::nat) (ua::'A::type) ub::nat => nat => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1512
    INJP (INJN (Suc u)) (INJP (INJA ua) (INJF ub)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1513
  by (import hollight DEF_ZCONSTR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1514
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1515
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1516
  ZBOT :: "nat => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1517
  "ZBOT == INJP (INJN (0::nat)) (SOME z::nat => 'A::type => bool. True)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1518
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1519
lemma DEF_ZBOT: "ZBOT = INJP (INJN (0::nat)) (SOME z::nat => 'A::type => bool. True)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1520
  by (import hollight DEF_ZBOT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1521
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1522
lemma ZCONSTR_ZBOT: "ALL (x::nat) (xa::'A::type) xb::nat => nat => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1523
   ZCONSTR x xa xb ~= ZBOT"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1524
  by (import hollight ZCONSTR_ZBOT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1525
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1526
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1527
  ZRECSPACE :: "(nat => 'A::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1528
  "ZRECSPACE ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1529
%a::nat => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1530
   ALL ZRECSPACE'::(nat => 'A::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1531
      (ALL a::nat => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1532
          a = ZBOT |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1533
          (EX (c::nat) (i::'A::type) r::nat => nat => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1534
              a = ZCONSTR c i r & (ALL n::nat. ZRECSPACE' (r n))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1535
          ZRECSPACE' a) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1536
      ZRECSPACE' a"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1537
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1538
lemma DEF_ZRECSPACE: "ZRECSPACE =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1539
(%a::nat => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1540
    ALL ZRECSPACE'::(nat => 'A::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1541
       (ALL a::nat => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1542
           a = ZBOT |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1543
           (EX (c::nat) (i::'A::type) r::nat => nat => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1544
               a = ZCONSTR c i r & (ALL n::nat. ZRECSPACE' (r n))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1545
           ZRECSPACE' a) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1546
       ZRECSPACE' a)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1547
  by (import hollight DEF_ZRECSPACE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1548
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1549
typedef (open) ('A) recspace = "(Collect::((nat => 'A::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1550
          => (nat => 'A::type => bool) set)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1551
 (ZRECSPACE::(nat => 'A::type => bool) => bool)"  morphisms "_dest_rec" "_mk_rec"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1552
  apply (rule light_ex_imp_nonempty[where t="ZBOT::nat => 'A::type => bool"])
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1553
  by (import hollight TYDEF_recspace)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1554
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1555
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1556
  "_dest_rec" :: _ ("'_dest'_rec")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1557
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1558
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1559
  "_mk_rec" :: _ ("'_mk'_rec")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1560
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1561
lemmas "TYDEF_recspace_@intern" = typedef_hol2hollight 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1562
  [where a="a :: 'A::type recspace" and r=r ,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1563
   OF type_definition_recspace]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1564
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1565
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1566
  BOTTOM :: "'A::type recspace" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1567
  "BOTTOM == _mk_rec ZBOT"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1568
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1569
lemma DEF_BOTTOM: "BOTTOM = _mk_rec ZBOT"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1570
  by (import hollight DEF_BOTTOM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1571
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1572
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1573
  CONSTR :: "nat => 'A::type => (nat => 'A::type recspace) => 'A::type recspace" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1574
  "CONSTR ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1575
%(u::nat) (ua::'A::type) ub::nat => 'A::type recspace.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1576
   _mk_rec (ZCONSTR u ua (%n::nat. _dest_rec (ub n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1577
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1578
lemma DEF_CONSTR: "CONSTR =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1579
(%(u::nat) (ua::'A::type) ub::nat => 'A::type recspace.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1580
    _mk_rec (ZCONSTR u ua (%n::nat. _dest_rec (ub n))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1581
  by (import hollight DEF_CONSTR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1582
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1583
lemma MK_REC_INJ: "ALL (x::nat => 'A::type => bool) y::nat => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1584
   _mk_rec x = _mk_rec y --> ZRECSPACE x & ZRECSPACE y --> x = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1585
  by (import hollight MK_REC_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1586
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1587
lemma CONSTR_BOT: "ALL (c::nat) (i::'A::type) r::nat => 'A::type recspace.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1588
   CONSTR c i r ~= BOTTOM"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1589
  by (import hollight CONSTR_BOT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1590
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1591
lemma CONSTR_INJ: "ALL (c1::nat) (i1::'A::type) (r1::nat => 'A::type recspace) (c2::nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1592
   (i2::'A::type) r2::nat => 'A::type recspace.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1593
   (CONSTR c1 i1 r1 = CONSTR c2 i2 r2) = (c1 = c2 & i1 = i2 & r1 = r2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1594
  by (import hollight CONSTR_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1595
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1596
lemma CONSTR_IND: "ALL P::'A::type recspace => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1597
   P BOTTOM &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1598
   (ALL (c::nat) (i::'A::type) r::nat => 'A::type recspace.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1599
       (ALL n::nat. P (r n)) --> P (CONSTR c i r)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1600
   All P"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1601
  by (import hollight CONSTR_IND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1602
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1603
lemma CONSTR_REC: "ALL Fn::nat
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1604
        => 'A::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1605
           => (nat => 'A::type recspace) => (nat => 'B::type) => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1606
   EX f::'A::type recspace => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1607
      ALL (c::nat) (i::'A::type) r::nat => 'A::type recspace.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1608
         f (CONSTR c i r) = Fn c i r (%n::nat. f (r n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1609
  by (import hollight CONSTR_REC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1610
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1611
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1612
  FCONS :: "'A::type => (nat => 'A::type) => nat => 'A::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1613
  "FCONS ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1614
SOME FCONS::'A::type => (nat => 'A::type) => nat => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1615
   (ALL (a::'A::type) f::nat => 'A::type. FCONS a f (0::nat) = a) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1616
   (ALL (a::'A::type) (f::nat => 'A::type) n::nat. FCONS a f (Suc n) = f n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1617
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1618
lemma DEF_FCONS: "FCONS =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1619
(SOME FCONS::'A::type => (nat => 'A::type) => nat => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1620
    (ALL (a::'A::type) f::nat => 'A::type. FCONS a f (0::nat) = a) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1621
    (ALL (a::'A::type) (f::nat => 'A::type) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1622
        FCONS a f (Suc n) = f n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1623
  by (import hollight DEF_FCONS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1624
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1625
lemma FCONS_UNDO: "ALL f::nat => 'A::type. f = FCONS (f (0::nat)) (f o Suc)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1626
  by (import hollight FCONS_UNDO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1627
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1628
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1629
  FNIL :: "nat => 'A::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1630
  "FNIL == %u::nat. SOME x::'A::type. True"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1631
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1632
lemma DEF_FNIL: "FNIL = (%u::nat. SOME x::'A::type. True)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1633
  by (import hollight DEF_FNIL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1634
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1635
typedef (open) ('A, 'B) sum = "(Collect::(('A::type * 'B::type) recspace => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1636
          => ('A::type * 'B::type) recspace set)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1637
 (%a::('A::type * 'B::type) recspace.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1638
     (All::((('A::type * 'B::type) recspace => bool) => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1639
      (%sum'::('A::type * 'B::type) recspace => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1640
          (op -->::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1641
           ((All::(('A::type * 'B::type) recspace => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1642
             (%a::('A::type * 'B::type) recspace.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1643
                 (op -->::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1644
                  ((op |::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1645
                    ((Ex::('A::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1646
                      (%aa::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1647
                          (op =::('A::type * 'B::type) recspace
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1648
                                 => ('A::type * 'B::type) recspace => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1649
                           a ((CONSTR::nat
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1650
 => 'A::type * 'B::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1651
    => (nat => ('A::type * 'B::type) recspace)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1652
       => ('A::type * 'B::type) recspace)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1653
                               ((NUMERAL::nat => nat) (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1654
                               ((Pair::'A::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1655
 => 'B::type => 'A::type * 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1656
                                 aa ((Eps::('B::type => bool) => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1657
(%v::'B::type. True::bool)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1658
                               (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1659
                                   BOTTOM::('A::type *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1660
      'B::type) recspace))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1661
                    ((Ex::('B::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1662
                      (%aa::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1663
                          (op =::('A::type * 'B::type) recspace
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1664
                                 => ('A::type * 'B::type) recspace => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1665
                           a ((CONSTR::nat
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1666
 => 'A::type * 'B::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1667
    => (nat => ('A::type * 'B::type) recspace)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1668
       => ('A::type * 'B::type) recspace)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1669
                               ((Suc::nat => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1670
                                 ((NUMERAL::nat => nat) (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1671
                               ((Pair::'A::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1672
 => 'B::type => 'A::type * 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1673
                                 ((Eps::('A::type => bool) => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1674
                                   (%v::'A::type. True::bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1675
                                 aa)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1676
                               (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1677
                                   BOTTOM::('A::type *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1678
      'B::type) recspace)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1679
                  (sum' a)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1680
           (sum' a)))"  morphisms "_dest_sum" "_mk_sum"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1681
  apply (rule light_ex_imp_nonempty[where t="(CONSTR::nat
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1682
         => 'A::type * 'B::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1683
            => (nat => ('A::type * 'B::type) recspace)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1684
               => ('A::type * 'B::type) recspace)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1685
 ((NUMERAL::nat => nat) (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1686
 ((Pair::'A::type => 'B::type => 'A::type * 'B::type) (a::'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1687
   ((Eps::('B::type => bool) => 'B::type) (%v::'B::type. True::bool)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1688
 (%n::nat. BOTTOM::('A::type * 'B::type) recspace)"])
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1689
  by (import hollight TYDEF_sum)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1690
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1691
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1692
  "_dest_sum" :: _ ("'_dest'_sum")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1693
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1694
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1695
  "_mk_sum" :: _ ("'_mk'_sum")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1696
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1697
lemmas "TYDEF_sum_@intern" = typedef_hol2hollight 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1698
  [where a="a :: ('A::type, 'B::type) sum" and r=r ,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1699
   OF type_definition_sum]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1700
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1701
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1702
  INL :: "'A::type => ('A::type, 'B::type) sum" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1703
  "INL ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1704
%a::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1705
   _mk_sum (CONSTR (0::nat) (a, SOME v::'B::type. True) (%n::nat. BOTTOM))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1706
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1707
lemma DEF_INL: "INL =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1708
(%a::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1709
    _mk_sum (CONSTR (0::nat) (a, SOME v::'B::type. True) (%n::nat. BOTTOM)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1710
  by (import hollight DEF_INL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1711
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1712
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1713
  INR :: "'B::type => ('A::type, 'B::type) sum" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1714
  "INR ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1715
%a::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1716
   _mk_sum
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1717
    (CONSTR (Suc (0::nat)) (SOME v::'A::type. True, a) (%n::nat. BOTTOM))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1718
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1719
lemma DEF_INR: "INR =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1720
(%a::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1721
    _mk_sum
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1722
     (CONSTR (Suc (0::nat)) (SOME v::'A::type. True, a) (%n::nat. BOTTOM)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1723
  by (import hollight DEF_INR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1724
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1725
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1726
  OUTL :: "('A::type, 'B::type) sum => 'A::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1727
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1728
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1729
  OUTL_def: "hollight.OUTL ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1730
SOME OUTL::('A::type, 'B::type) sum => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1731
   ALL x::'A::type. OUTL (INL x) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1732
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1733
lemma DEF_OUTL: "hollight.OUTL =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1734
(SOME OUTL::('A::type, 'B::type) sum => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1735
    ALL x::'A::type. OUTL (INL x) = x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1736
  by (import hollight DEF_OUTL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1737
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1738
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1739
  OUTR :: "('A::type, 'B::type) sum => 'B::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1740
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1741
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1742
  OUTR_def: "hollight.OUTR ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1743
SOME OUTR::('A::type, 'B::type) sum => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1744
   ALL y::'B::type. OUTR (INR y) = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1745
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1746
lemma DEF_OUTR: "hollight.OUTR =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1747
(SOME OUTR::('A::type, 'B::type) sum => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1748
    ALL y::'B::type. OUTR (INR y) = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1749
  by (import hollight DEF_OUTR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1750
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1751
typedef (open) ('A) option = "(Collect::('A::type recspace => bool) => 'A::type recspace set)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1752
 (%a::'A::type recspace.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1753
     (All::(('A::type recspace => bool) => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1754
      (%option'::'A::type recspace => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1755
          (op -->::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1756
           ((All::('A::type recspace => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1757
             (%a::'A::type recspace.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1758
                 (op -->::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1759
                  ((op |::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1760
                    ((op =::'A::type recspace => 'A::type recspace => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1761
                      a ((CONSTR::nat
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1762
                                  => 'A::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1763
                                     => (nat => 'A::type recspace)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1764
  => 'A::type recspace)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1765
                          ((NUMERAL::nat => nat) (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1766
                          ((Eps::('A::type => bool) => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1767
                            (%v::'A::type. True::bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1768
                          (%n::nat. BOTTOM::'A::type recspace)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1769
                    ((Ex::('A::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1770
                      (%aa::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1771
                          (op =::'A::type recspace
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1772
                                 => 'A::type recspace => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1773
                           a ((CONSTR::nat
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1774
 => 'A::type => (nat => 'A::type recspace) => 'A::type recspace)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1775
                               ((Suc::nat => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1776
                                 ((NUMERAL::nat => nat) (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1777
                               aa (%n::nat. BOTTOM::'A::type recspace)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1778
                  (option' a)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1779
           (option' a)))"  morphisms "_dest_option" "_mk_option"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1780
  apply (rule light_ex_imp_nonempty[where t="(CONSTR::nat => 'A::type => (nat => 'A::type recspace) => 'A::type recspace)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1781
 ((NUMERAL::nat => nat) (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1782
 ((Eps::('A::type => bool) => 'A::type) (%v::'A::type. True::bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1783
 (%n::nat. BOTTOM::'A::type recspace)"])
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1784
  by (import hollight TYDEF_option)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1785
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1786
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1787
  "_dest_option" :: _ ("'_dest'_option")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1788
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1789
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1790
  "_mk_option" :: _ ("'_mk'_option")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1791
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1792
lemmas "TYDEF_option_@intern" = typedef_hol2hollight 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1793
  [where a="a :: 'A::type hollight.option" and r=r ,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1794
   OF type_definition_option]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1795
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1796
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1797
  NONE :: "'A::type hollight.option" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1798
  "NONE ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1799
_mk_option (CONSTR (0::nat) (SOME v::'A::type. True) (%n::nat. BOTTOM))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1800
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1801
lemma DEF_NONE: "NONE =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1802
_mk_option (CONSTR (0::nat) (SOME v::'A::type. True) (%n::nat. BOTTOM))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1803
  by (import hollight DEF_NONE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1804
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1805
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1806
  SOME :: "'A::type => 'A::type hollight.option" ("SOME")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1807
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1808
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1809
  SOME_def: "SOME == %a::'A::type. _mk_option (CONSTR (Suc (0::nat)) a (%n::nat. BOTTOM))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1810
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1811
lemma DEF_SOME: "SOME =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1812
(%a::'A::type. _mk_option (CONSTR (Suc (0::nat)) a (%n::nat. BOTTOM)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1813
  by (import hollight DEF_SOME)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1814
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1815
typedef (open) ('A) list = "(Collect::('A::type recspace => bool) => 'A::type recspace set)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1816
 (%a::'A::type recspace.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1817
     (All::(('A::type recspace => bool) => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1818
      (%list'::'A::type recspace => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1819
          (op -->::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1820
           ((All::('A::type recspace => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1821
             (%a::'A::type recspace.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1822
                 (op -->::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1823
                  ((op |::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1824
                    ((op =::'A::type recspace => 'A::type recspace => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1825
                      a ((CONSTR::nat
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1826
                                  => 'A::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1827
                                     => (nat => 'A::type recspace)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1828
  => 'A::type recspace)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1829
                          ((NUMERAL::nat => nat) (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1830
                          ((Eps::('A::type => bool) => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1831
                            (%v::'A::type. True::bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1832
                          (%n::nat. BOTTOM::'A::type recspace)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1833
                    ((Ex::('A::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1834
                      (%a0::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1835
                          (Ex::('A::type recspace => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1836
                           (%a1::'A::type recspace.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1837
                               (op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1838
                                ((op =::'A::type recspace
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1839
  => 'A::type recspace => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1840
                                  a ((CONSTR::nat
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1841
        => 'A::type => (nat => 'A::type recspace) => 'A::type recspace)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1842
((Suc::nat => nat) ((NUMERAL::nat => nat) (0::nat))) a0
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1843
((FCONS::'A::type recspace
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1844
         => (nat => 'A::type recspace) => nat => 'A::type recspace)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1845
  a1 (%n::nat. BOTTOM::'A::type recspace))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1846
                                (list' a1)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1847
                  (list' a)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1848
           (list' a)))"  morphisms "_dest_list" "_mk_list"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1849
  apply (rule light_ex_imp_nonempty[where t="(CONSTR::nat => 'A::type => (nat => 'A::type recspace) => 'A::type recspace)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1850
 ((NUMERAL::nat => nat) (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1851
 ((Eps::('A::type => bool) => 'A::type) (%v::'A::type. True::bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1852
 (%n::nat. BOTTOM::'A::type recspace)"])
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1853
  by (import hollight TYDEF_list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1854
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1855
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1856
  "_dest_list" :: _ ("'_dest'_list")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1857
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1858
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1859
  "_mk_list" :: _ ("'_mk'_list")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1860
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1861
lemmas "TYDEF_list_@intern" = typedef_hol2hollight 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1862
  [where a="a :: 'A::type hollight.list" and r=r ,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1863
   OF type_definition_list]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1864
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1865
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1866
  NIL :: "'A::type hollight.list" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1867
  "NIL == _mk_list (CONSTR (0::nat) (SOME v::'A::type. True) (%n::nat. BOTTOM))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1868
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1869
lemma DEF_NIL: "NIL = _mk_list (CONSTR (0::nat) (SOME v::'A::type. True) (%n::nat. BOTTOM))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1870
  by (import hollight DEF_NIL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1871
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1872
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1873
  CONS :: "'A::type => 'A::type hollight.list => 'A::type hollight.list" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1874
  "CONS ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1875
%(a0::'A::type) a1::'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1876
   _mk_list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1877
    (CONSTR (Suc (0::nat)) a0 (FCONS (_dest_list a1) (%n::nat. BOTTOM)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1878
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1879
lemma DEF_CONS: "CONS =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1880
(%(a0::'A::type) a1::'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1881
    _mk_list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1882
     (CONSTR (Suc (0::nat)) a0 (FCONS (_dest_list a1) (%n::nat. BOTTOM))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1883
  by (import hollight DEF_CONS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1884
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1885
lemma pair_RECURSION: "ALL PAIR'::'A::type => 'B::type => 'C::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1886
   EX x::'A::type * 'B::type => 'C::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1887
      ALL (a0::'A::type) a1::'B::type. x (a0, a1) = PAIR' a0 a1"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1888
  by (import hollight pair_RECURSION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1889
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1890
lemma num_RECURSION_STD: "ALL (e::'Z::type) f::nat => 'Z::type => 'Z::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1891
   EX fn::nat => 'Z::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1892
      fn (0::nat) = e & (ALL n::nat. fn (Suc n) = f n (fn n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1893
  by (import hollight num_RECURSION_STD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1894
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1895
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1896
  ISO :: "('A::type => 'B::type) => ('B::type => 'A::type) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1897
  "ISO ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1898
%(u::'A::type => 'B::type) ua::'B::type => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1899
   (ALL x::'B::type. u (ua x) = x) & (ALL y::'A::type. ua (u y) = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1900
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1901
lemma DEF_ISO: "ISO =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1902
(%(u::'A::type => 'B::type) ua::'B::type => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1903
    (ALL x::'B::type. u (ua x) = x) & (ALL y::'A::type. ua (u y) = y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1904
  by (import hollight DEF_ISO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1905
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1906
lemma ISO_REFL: "ISO (%x::'A::type. x) (%x::'A::type. x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1907
  by (import hollight ISO_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1908
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1909
lemma ISO_FUN: "ISO (f::'A::type => 'A'::type) (f'::'A'::type => 'A::type) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1910
ISO (g::'B::type => 'B'::type) (g'::'B'::type => 'B::type) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1911
ISO (%(h::'A::type => 'B::type) a'::'A'::type. g (h (f' a')))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1912
 (%(h::'A'::type => 'B'::type) a::'A::type. g' (h (f a)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1913
  by (import hollight ISO_FUN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1914
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1915
lemma ISO_USAGE: "ISO (f::'q_16585::type => 'q_16582::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1916
 (g::'q_16582::type => 'q_16585::type) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1917
(ALL P::'q_16585::type => bool. All P = (ALL x::'q_16582::type. P (g x))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1918
(ALL P::'q_16585::type => bool. Ex P = (EX x::'q_16582::type. P (g x))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1919
(ALL (a::'q_16585::type) b::'q_16582::type. (a = g b) = (f a = b))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1920
  by (import hollight ISO_USAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1921
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1922
typedef (open) N_2 = "{a::bool recspace.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1923
 ALL u::bool recspace => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1924
    (ALL a::bool recspace.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1925
        a =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1926
        CONSTR (NUMERAL (0::nat)) (SOME x::bool. True) (%n::nat. BOTTOM) |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1927
        a =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1928
        CONSTR (Suc (NUMERAL (0::nat))) (SOME x::bool. True)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1929
         (%n::nat. BOTTOM) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1930
        u a) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1931
    u a}"  morphisms "_dest_2" "_mk_2"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1932
  apply (rule light_ex_imp_nonempty[where t="CONSTR (NUMERAL (0::nat)) (SOME x::bool. True) (%n::nat. BOTTOM)"])
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1933
  by (import hollight TYDEF_2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1934
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1935
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1936
  "_dest_2" :: _ ("'_dest'_2")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1937
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1938
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1939
  "_mk_2" :: _ ("'_mk'_2")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1940
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1941
lemmas "TYDEF_2_@intern" = typedef_hol2hollight 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1942
  [where a="a :: N_2" and r=r ,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1943
   OF type_definition_N_2]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1944
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1945
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1946
  "_10288" :: "N_2" ("'_10288")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1947
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1948
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1949
  "_10288_def": "_10288 == _mk_2 (CONSTR (0::nat) (SOME x::bool. True) (%n::nat. BOTTOM))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1950
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1951
lemma DEF__10288: "_10288 = _mk_2 (CONSTR (0::nat) (SOME x::bool. True) (%n::nat. BOTTOM))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1952
  by (import hollight DEF__10288)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1953
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1954
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1955
  "_10289" :: "N_2" ("'_10289")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1956
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1957
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1958
  "_10289_def": "_10289 ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1959
_mk_2 (CONSTR (Suc (0::nat)) (SOME x::bool. True) (%n::nat. BOTTOM))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1960
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1961
lemma DEF__10289: "_10289 =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1962
_mk_2 (CONSTR (Suc (0::nat)) (SOME x::bool. True) (%n::nat. BOTTOM))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1963
  by (import hollight DEF__10289)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1964
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1965
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1966
  two_1 :: "N_2" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1967
  "two_1 == _10288"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1968
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1969
lemma DEF_two_1: "two_1 = _10288"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1970
  by (import hollight DEF_two_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1971
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1972
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1973
  two_2 :: "N_2" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1974
  "two_2 == _10289"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1975
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1976
lemma DEF_two_2: "two_2 = _10289"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1977
  by (import hollight DEF_two_2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1978
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1979
typedef (open) N_3 = "{a::bool recspace.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1980
 ALL u::bool recspace => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1981
    (ALL a::bool recspace.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1982
        a =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1983
        CONSTR (NUMERAL (0::nat)) (SOME x::bool. True) (%n::nat. BOTTOM) |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1984
        a =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1985
        CONSTR (Suc (NUMERAL (0::nat))) (SOME x::bool. True)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1986
         (%n::nat. BOTTOM) |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1987
        a =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1988
        CONSTR (Suc (Suc (NUMERAL (0::nat)))) (SOME x::bool. True)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1989
         (%n::nat. BOTTOM) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1990
        u a) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1991
    u a}"  morphisms "_dest_3" "_mk_3"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1992
  apply (rule light_ex_imp_nonempty[where t="CONSTR (NUMERAL (0::nat)) (SOME x::bool. True) (%n::nat. BOTTOM)"])
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1993
  by (import hollight TYDEF_3)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1994
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1995
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1996
  "_dest_3" :: _ ("'_dest'_3")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1997
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1998
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  1999
  "_mk_3" :: _ ("'_mk'_3")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2000
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2001
lemmas "TYDEF_3_@intern" = typedef_hol2hollight 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2002
  [where a="a :: N_3" and r=r ,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2003
   OF type_definition_N_3]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2004
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2005
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2006
  "_10312" :: "N_3" ("'_10312")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2007
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2008
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2009
  "_10312_def": "_10312 == _mk_3 (CONSTR (0::nat) (SOME x::bool. True) (%n::nat. BOTTOM))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2010
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2011
lemma DEF__10312: "_10312 = _mk_3 (CONSTR (0::nat) (SOME x::bool. True) (%n::nat. BOTTOM))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2012
  by (import hollight DEF__10312)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2013
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2014
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2015
  "_10313" :: "N_3" ("'_10313")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2016
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2017
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2018
  "_10313_def": "_10313 ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2019
_mk_3 (CONSTR (Suc (0::nat)) (SOME x::bool. True) (%n::nat. BOTTOM))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2020
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2021
lemma DEF__10313: "_10313 =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2022
_mk_3 (CONSTR (Suc (0::nat)) (SOME x::bool. True) (%n::nat. BOTTOM))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2023
  by (import hollight DEF__10313)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2024
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2025
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2026
  "_10314" :: "N_3" ("'_10314")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2027
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2028
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2029
  "_10314_def": "_10314 ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2030
_mk_3 (CONSTR (Suc (Suc (0::nat))) (SOME x::bool. True) (%n::nat. BOTTOM))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2031
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2032
lemma DEF__10314: "_10314 =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2033
_mk_3 (CONSTR (Suc (Suc (0::nat))) (SOME x::bool. True) (%n::nat. BOTTOM))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2034
  by (import hollight DEF__10314)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2035
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2036
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2037
  three_1 :: "N_3" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2038
  "three_1 == _10312"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2039
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2040
lemma DEF_three_1: "three_1 = _10312"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2041
  by (import hollight DEF_three_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2042
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2043
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2044
  three_2 :: "N_3" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2045
  "three_2 == _10313"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2046
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2047
lemma DEF_three_2: "three_2 = _10313"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2048
  by (import hollight DEF_three_2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2049
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2050
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2051
  three_3 :: "N_3" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2052
  "three_3 == _10314"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2053
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2054
lemma DEF_three_3: "three_3 = _10314"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2055
  by (import hollight DEF_three_3)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2056
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2057
lemma list_INDUCT: "ALL P::'A::type hollight.list => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2058
   P NIL &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2059
   (ALL (a0::'A::type) a1::'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2060
       P a1 --> P (CONS a0 a1)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2061
   All P"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2062
  by (import hollight list_INDUCT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2063
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2064
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2065
  HD :: "'A::type hollight.list => 'A::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2066
  "HD ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2067
SOME HD::'A::type hollight.list => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2068
   ALL (t::'A::type hollight.list) h::'A::type. HD (CONS h t) = h"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2069
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2070
lemma DEF_HD: "HD =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2071
(SOME HD::'A::type hollight.list => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2072
    ALL (t::'A::type hollight.list) h::'A::type. HD (CONS h t) = h)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2073
  by (import hollight DEF_HD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2074
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2075
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2076
  TL :: "'A::type hollight.list => 'A::type hollight.list" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2077
  "TL ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2078
SOME TL::'A::type hollight.list => 'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2079
   ALL (h::'A::type) t::'A::type hollight.list. TL (CONS h t) = t"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2080
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2081
lemma DEF_TL: "TL =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2082
(SOME TL::'A::type hollight.list => 'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2083
    ALL (h::'A::type) t::'A::type hollight.list. TL (CONS h t) = t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2084
  by (import hollight DEF_TL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2085
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2086
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2087
  APPEND :: "'A::type hollight.list => 'A::type hollight.list => 'A::type hollight.list" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2088
  "APPEND ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2089
SOME APPEND::'A::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2090
             => 'A::type hollight.list => 'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2091
   (ALL l::'A::type hollight.list. APPEND NIL l = l) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2092
   (ALL (h::'A::type) (t::'A::type hollight.list) l::'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2093
       APPEND (CONS h t) l = CONS h (APPEND t l))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2094
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2095
lemma DEF_APPEND: "APPEND =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2096
(SOME APPEND::'A::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2097
              => 'A::type hollight.list => 'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2098
    (ALL l::'A::type hollight.list. APPEND NIL l = l) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2099
    (ALL (h::'A::type) (t::'A::type hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2100
        l::'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2101
        APPEND (CONS h t) l = CONS h (APPEND t l)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2102
  by (import hollight DEF_APPEND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2103
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2104
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2105
  REVERSE :: "'A::type hollight.list => 'A::type hollight.list" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2106
  "REVERSE ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2107
SOME REVERSE::'A::type hollight.list => 'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2108
   REVERSE NIL = NIL &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2109
   (ALL (l::'A::type hollight.list) x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2110
       REVERSE (CONS x l) = APPEND (REVERSE l) (CONS x NIL))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2111
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2112
lemma DEF_REVERSE: "REVERSE =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2113
(SOME REVERSE::'A::type hollight.list => 'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2114
    REVERSE NIL = NIL &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2115
    (ALL (l::'A::type hollight.list) x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2116
        REVERSE (CONS x l) = APPEND (REVERSE l) (CONS x NIL)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2117
  by (import hollight DEF_REVERSE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2118
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2119
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2120
  LENGTH :: "'A::type hollight.list => nat" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2121
  "LENGTH ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2122
SOME LENGTH::'A::type hollight.list => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2123
   LENGTH NIL = (0::nat) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2124
   (ALL (h::'A::type) t::'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2125
       LENGTH (CONS h t) = Suc (LENGTH t))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2126
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2127
lemma DEF_LENGTH: "LENGTH =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2128
(SOME LENGTH::'A::type hollight.list => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2129
    LENGTH NIL = (0::nat) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2130
    (ALL (h::'A::type) t::'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2131
        LENGTH (CONS h t) = Suc (LENGTH t)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2132
  by (import hollight DEF_LENGTH)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2133
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2134
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2135
  MAP :: "('A::type => 'B::type) => 'A::type hollight.list => 'B::type hollight.list" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2136
  "MAP ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2137
SOME MAP::('A::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2138
          => 'A::type hollight.list => 'B::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2139
   (ALL f::'A::type => 'B::type. MAP f NIL = NIL) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2140
   (ALL (f::'A::type => 'B::type) (h::'A::type) t::'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2141
       MAP f (CONS h t) = CONS (f h) (MAP f t))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2142
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2143
lemma DEF_MAP: "MAP =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2144
(SOME MAP::('A::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2145
           => 'A::type hollight.list => 'B::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2146
    (ALL f::'A::type => 'B::type. MAP f NIL = NIL) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2147
    (ALL (f::'A::type => 'B::type) (h::'A::type) t::'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2148
        MAP f (CONS h t) = CONS (f h) (MAP f t)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2149
  by (import hollight DEF_MAP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2150
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2151
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2152
  LAST :: "'A::type hollight.list => 'A::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2153
  "LAST ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2154
SOME LAST::'A::type hollight.list => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2155
   ALL (h::'A::type) t::'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2156
      LAST (CONS h t) = COND (t = NIL) h (LAST t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2157
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2158
lemma DEF_LAST: "LAST =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2159
(SOME LAST::'A::type hollight.list => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2160
    ALL (h::'A::type) t::'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2161
       LAST (CONS h t) = COND (t = NIL) h (LAST t))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2162
  by (import hollight DEF_LAST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2163
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2164
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2165
  REPLICATE :: "nat => 'q_16809::type => 'q_16809::type hollight.list" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2166
  "REPLICATE ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2167
SOME REPLICATE::nat => 'q_16809::type => 'q_16809::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2168
   (ALL x::'q_16809::type. REPLICATE (0::nat) x = NIL) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2169
   (ALL (n::nat) x::'q_16809::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2170
       REPLICATE (Suc n) x = CONS x (REPLICATE n x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2171
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2172
lemma DEF_REPLICATE: "REPLICATE =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2173
(SOME REPLICATE::nat => 'q_16809::type => 'q_16809::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2174
    (ALL x::'q_16809::type. REPLICATE (0::nat) x = NIL) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2175
    (ALL (n::nat) x::'q_16809::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2176
        REPLICATE (Suc n) x = CONS x (REPLICATE n x)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2177
  by (import hollight DEF_REPLICATE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2178
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2179
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2180
  NULL :: "'q_16824::type hollight.list => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2181
  "NULL ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2182
SOME NULL::'q_16824::type hollight.list => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2183
   NULL NIL = True &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2184
   (ALL (h::'q_16824::type) t::'q_16824::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2185
       NULL (CONS h t) = False)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2186
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2187
lemma DEF_NULL: "NULL =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2188
(SOME NULL::'q_16824::type hollight.list => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2189
    NULL NIL = True &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2190
    (ALL (h::'q_16824::type) t::'q_16824::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2191
        NULL (CONS h t) = False))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2192
  by (import hollight DEF_NULL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2193
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2194
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2195
  ALL_list :: "('q_16844::type => bool) => 'q_16844::type hollight.list => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2196
  "ALL_list ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2197
SOME u::('q_16844::type => bool) => 'q_16844::type hollight.list => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2198
   (ALL P::'q_16844::type => bool. u P NIL = True) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2199
   (ALL (h::'q_16844::type) (P::'q_16844::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2200
       t::'q_16844::type hollight.list. u P (CONS h t) = (P h & u P t))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2201
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2202
lemma DEF_ALL: "ALL_list =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2203
(SOME u::('q_16844::type => bool) => 'q_16844::type hollight.list => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2204
    (ALL P::'q_16844::type => bool. u P NIL = True) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2205
    (ALL (h::'q_16844::type) (P::'q_16844::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2206
        t::'q_16844::type hollight.list. u P (CONS h t) = (P h & u P t)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2207
  by (import hollight DEF_ALL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2208
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2209
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2210
  EX :: "('q_16865::type => bool) => 'q_16865::type hollight.list => bool" ("EX")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2211
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2212
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2213
  EX_def: "EX ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2214
SOME u::('q_16865::type => bool) => 'q_16865::type hollight.list => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2215
   (ALL P::'q_16865::type => bool. u P NIL = False) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2216
   (ALL (h::'q_16865::type) (P::'q_16865::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2217
       t::'q_16865::type hollight.list. u P (CONS h t) = (P h | u P t))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2218
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2219
lemma DEF_EX: "EX =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2220
(SOME u::('q_16865::type => bool) => 'q_16865::type hollight.list => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2221
    (ALL P::'q_16865::type => bool. u P NIL = False) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2222
    (ALL (h::'q_16865::type) (P::'q_16865::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2223
        t::'q_16865::type hollight.list. u P (CONS h t) = (P h | u P t)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2224
  by (import hollight DEF_EX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2225
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2226
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2227
  ITLIST :: "('q_16888::type => 'q_16887::type => 'q_16887::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2228
=> 'q_16888::type hollight.list => 'q_16887::type => 'q_16887::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2229
  "ITLIST ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2230
SOME ITLIST::('q_16888::type => 'q_16887::type => 'q_16887::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2231
             => 'q_16888::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2232
                => 'q_16887::type => 'q_16887::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2233
   (ALL (f::'q_16888::type => 'q_16887::type => 'q_16887::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2234
       b::'q_16887::type. ITLIST f NIL b = b) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2235
   (ALL (h::'q_16888::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2236
       (f::'q_16888::type => 'q_16887::type => 'q_16887::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2237
       (t::'q_16888::type hollight.list) b::'q_16887::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2238
       ITLIST f (CONS h t) b = f h (ITLIST f t b))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2239
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2240
lemma DEF_ITLIST: "ITLIST =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2241
(SOME ITLIST::('q_16888::type => 'q_16887::type => 'q_16887::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2242
              => 'q_16888::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2243
                 => 'q_16887::type => 'q_16887::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2244
    (ALL (f::'q_16888::type => 'q_16887::type => 'q_16887::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2245
        b::'q_16887::type. ITLIST f NIL b = b) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2246
    (ALL (h::'q_16888::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2247
        (f::'q_16888::type => 'q_16887::type => 'q_16887::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2248
        (t::'q_16888::type hollight.list) b::'q_16887::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2249
        ITLIST f (CONS h t) b = f h (ITLIST f t b)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2250
  by (import hollight DEF_ITLIST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2251
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2252
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2253
  MEM :: "'q_16913::type => 'q_16913::type hollight.list => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2254
  "MEM ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2255
SOME MEM::'q_16913::type => 'q_16913::type hollight.list => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2256
   (ALL x::'q_16913::type. MEM x NIL = False) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2257
   (ALL (h::'q_16913::type) (x::'q_16913::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2258
       t::'q_16913::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2259
       MEM x (CONS h t) = (x = h | MEM x t))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2260
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2261
lemma DEF_MEM: "MEM =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2262
(SOME MEM::'q_16913::type => 'q_16913::type hollight.list => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2263
    (ALL x::'q_16913::type. MEM x NIL = False) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2264
    (ALL (h::'q_16913::type) (x::'q_16913::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2265
        t::'q_16913::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2266
        MEM x (CONS h t) = (x = h | MEM x t)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2267
  by (import hollight DEF_MEM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2268
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2269
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2270
  ALL2 :: "('q_16946::type => 'q_16953::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2271
=> 'q_16946::type hollight.list => 'q_16953::type hollight.list => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2272
  "ALL2 ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2273
SOME ALL2::('q_16946::type => 'q_16953::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2274
           => 'q_16946::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2275
              => 'q_16953::type hollight.list => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2276
   (ALL (P::'q_16946::type => 'q_16953::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2277
       l2::'q_16953::type hollight.list. ALL2 P NIL l2 = (l2 = NIL)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2278
   (ALL (h1::'q_16946::type) (P::'q_16946::type => 'q_16953::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2279
       (t1::'q_16946::type hollight.list) l2::'q_16953::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2280
       ALL2 P (CONS h1 t1) l2 =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2281
       COND (l2 = NIL) False (P h1 (HD l2) & ALL2 P t1 (TL l2)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2282
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2283
lemma DEF_ALL2: "ALL2 =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2284
(SOME ALL2::('q_16946::type => 'q_16953::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2285
            => 'q_16946::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2286
               => 'q_16953::type hollight.list => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2287
    (ALL (P::'q_16946::type => 'q_16953::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2288
        l2::'q_16953::type hollight.list. ALL2 P NIL l2 = (l2 = NIL)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2289
    (ALL (h1::'q_16946::type) (P::'q_16946::type => 'q_16953::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2290
        (t1::'q_16946::type hollight.list) l2::'q_16953::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2291
        ALL2 P (CONS h1 t1) l2 =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2292
        COND (l2 = NIL) False (P h1 (HD l2) & ALL2 P t1 (TL l2))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2293
  by (import hollight DEF_ALL2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2294
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2295
lemma ALL2: "ALL2 (P::'q_17008::type => 'q_17007::type => bool) NIL NIL = True &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2296
ALL2 P (CONS (h1::'q_17008::type) (t1::'q_17008::type hollight.list)) NIL =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2297
False &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2298
ALL2 P NIL (CONS (h2::'q_17007::type) (t2::'q_17007::type hollight.list)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2299
False &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2300
ALL2 P (CONS h1 t1) (CONS h2 t2) = (P h1 h2 & ALL2 P t1 t2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2301
  by (import hollight ALL2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2302
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2303
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2304
  MAP2 :: "('q_17038::type => 'q_17045::type => 'q_17035::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2305
=> 'q_17038::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2306
   => 'q_17045::type hollight.list => 'q_17035::type hollight.list" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2307
  "MAP2 ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2308
SOME MAP2::('q_17038::type => 'q_17045::type => 'q_17035::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2309
           => 'q_17038::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2310
              => 'q_17045::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2311
                 => 'q_17035::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2312
   (ALL (f::'q_17038::type => 'q_17045::type => 'q_17035::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2313
       l::'q_17045::type hollight.list. MAP2 f NIL l = NIL) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2314
   (ALL (h1::'q_17038::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2315
       (f::'q_17038::type => 'q_17045::type => 'q_17035::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2316
       (t1::'q_17038::type hollight.list) l::'q_17045::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2317
       MAP2 f (CONS h1 t1) l = CONS (f h1 (HD l)) (MAP2 f t1 (TL l)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2318
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2319
lemma DEF_MAP2: "MAP2 =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2320
(SOME MAP2::('q_17038::type => 'q_17045::type => 'q_17035::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2321
            => 'q_17038::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2322
               => 'q_17045::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2323
                  => 'q_17035::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2324
    (ALL (f::'q_17038::type => 'q_17045::type => 'q_17035::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2325
        l::'q_17045::type hollight.list. MAP2 f NIL l = NIL) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2326
    (ALL (h1::'q_17038::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2327
        (f::'q_17038::type => 'q_17045::type => 'q_17035::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2328
        (t1::'q_17038::type hollight.list) l::'q_17045::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2329
        MAP2 f (CONS h1 t1) l = CONS (f h1 (HD l)) (MAP2 f t1 (TL l))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2330
  by (import hollight DEF_MAP2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2331
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2332
lemma MAP2: "MAP2 (f::'q_17080::type => 'q_17079::type => 'q_17086::type) NIL NIL = NIL &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2333
MAP2 f (CONS (h1::'q_17080::type) (t1::'q_17080::type hollight.list))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2334
 (CONS (h2::'q_17079::type) (t2::'q_17079::type hollight.list)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2335
CONS (f h1 h2) (MAP2 f t1 t2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2336
  by (import hollight MAP2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2337
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2338
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2339
  EL :: "nat => 'q_17106::type hollight.list => 'q_17106::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2340
  "EL ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2341
SOME EL::nat => 'q_17106::type hollight.list => 'q_17106::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2342
   (ALL l::'q_17106::type hollight.list. EL (0::nat) l = HD l) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2343
   (ALL (n::nat) l::'q_17106::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2344
       EL (Suc n) l = EL n (TL l))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2345
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2346
lemma DEF_EL: "EL =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2347
(SOME EL::nat => 'q_17106::type hollight.list => 'q_17106::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2348
    (ALL l::'q_17106::type hollight.list. EL (0::nat) l = HD l) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2349
    (ALL (n::nat) l::'q_17106::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2350
        EL (Suc n) l = EL n (TL l)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2351
  by (import hollight DEF_EL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2352
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2353
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2354
  FILTER :: "('q_17131::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2355
=> 'q_17131::type hollight.list => 'q_17131::type hollight.list" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2356
  "FILTER ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2357
SOME FILTER::('q_17131::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2358
             => 'q_17131::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2359
                => 'q_17131::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2360
   (ALL P::'q_17131::type => bool. FILTER P NIL = NIL) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2361
   (ALL (h::'q_17131::type) (P::'q_17131::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2362
       t::'q_17131::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2363
       FILTER P (CONS h t) = COND (P h) (CONS h (FILTER P t)) (FILTER P t))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2364
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2365
lemma DEF_FILTER: "FILTER =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2366
(SOME FILTER::('q_17131::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2367
              => 'q_17131::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2368
                 => 'q_17131::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2369
    (ALL P::'q_17131::type => bool. FILTER P NIL = NIL) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2370
    (ALL (h::'q_17131::type) (P::'q_17131::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2371
        t::'q_17131::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2372
        FILTER P (CONS h t) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2373
        COND (P h) (CONS h (FILTER P t)) (FILTER P t)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2374
  by (import hollight DEF_FILTER)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2375
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2376
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2377
  ASSOC :: "'q_17160::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2378
=> ('q_17160::type * 'q_17154::type) hollight.list => 'q_17154::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2379
  "ASSOC ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2380
SOME ASSOC::'q_17160::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2381
            => ('q_17160::type * 'q_17154::type) hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2382
               => 'q_17154::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2383
   ALL (h::'q_17160::type * 'q_17154::type) (a::'q_17160::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2384
      t::('q_17160::type * 'q_17154::type) hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2385
      ASSOC a (CONS h t) = COND (fst h = a) (snd h) (ASSOC a t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2386
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2387
lemma DEF_ASSOC: "ASSOC =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2388
(SOME ASSOC::'q_17160::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2389
             => ('q_17160::type * 'q_17154::type) hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2390
                => 'q_17154::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2391
    ALL (h::'q_17160::type * 'q_17154::type) (a::'q_17160::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2392
       t::('q_17160::type * 'q_17154::type) hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2393
       ASSOC a (CONS h t) = COND (fst h = a) (snd h) (ASSOC a t))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2394
  by (import hollight DEF_ASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2395
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2396
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2397
  ITLIST2 :: "('q_17184::type => 'q_17192::type => 'q_17182::type => 'q_17182::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2398
=> 'q_17184::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2399
   => 'q_17192::type hollight.list => 'q_17182::type => 'q_17182::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2400
  "ITLIST2 ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2401
SOME ITLIST2::('q_17184::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2402
               => 'q_17192::type => 'q_17182::type => 'q_17182::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2403
              => 'q_17184::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2404
                 => 'q_17192::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2405
                    => 'q_17182::type => 'q_17182::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2406
   (ALL (f::'q_17184::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2407
            => 'q_17192::type => 'q_17182::type => 'q_17182::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2408
       (l2::'q_17192::type hollight.list) b::'q_17182::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2409
       ITLIST2 f NIL l2 b = b) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2410
   (ALL (h1::'q_17184::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2411
       (f::'q_17184::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2412
           => 'q_17192::type => 'q_17182::type => 'q_17182::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2413
       (t1::'q_17184::type hollight.list) (l2::'q_17192::type hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2414
       b::'q_17182::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2415
       ITLIST2 f (CONS h1 t1) l2 b = f h1 (HD l2) (ITLIST2 f t1 (TL l2) b))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2416
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2417
lemma DEF_ITLIST2: "ITLIST2 =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2418
(SOME ITLIST2::('q_17184::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2419
                => 'q_17192::type => 'q_17182::type => 'q_17182::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2420
               => 'q_17184::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2421
                  => 'q_17192::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2422
                     => 'q_17182::type => 'q_17182::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2423
    (ALL (f::'q_17184::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2424
             => 'q_17192::type => 'q_17182::type => 'q_17182::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2425
        (l2::'q_17192::type hollight.list) b::'q_17182::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2426
        ITLIST2 f NIL l2 b = b) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2427
    (ALL (h1::'q_17184::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2428
        (f::'q_17184::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2429
            => 'q_17192::type => 'q_17182::type => 'q_17182::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2430
        (t1::'q_17184::type hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2431
        (l2::'q_17192::type hollight.list) b::'q_17182::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2432
        ITLIST2 f (CONS h1 t1) l2 b =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2433
        f h1 (HD l2) (ITLIST2 f t1 (TL l2) b)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2434
  by (import hollight DEF_ITLIST2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2435
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2436
lemma ITLIST2: "ITLIST2
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2437
 (f::'q_17226::type => 'q_17225::type => 'q_17224::type => 'q_17224::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2438
 NIL NIL (b::'q_17224::type) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2439
b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2440
ITLIST2 f (CONS (h1::'q_17226::type) (t1::'q_17226::type hollight.list))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2441
 (CONS (h2::'q_17225::type) (t2::'q_17225::type hollight.list)) b =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2442
f h1 h2 (ITLIST2 f t1 t2 b)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2443
  by (import hollight ITLIST2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2444
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2445
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2446
  ZIP :: "'q_17256::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2447
=> 'q_17264::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2448
   => ('q_17256::type * 'q_17264::type) hollight.list" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2449
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2450
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2451
  ZIP_def: "hollight.ZIP ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2452
SOME ZIP::'q_17256::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2453
          => 'q_17264::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2454
             => ('q_17256::type * 'q_17264::type) hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2455
   (ALL l2::'q_17264::type hollight.list. ZIP NIL l2 = NIL) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2456
   (ALL (h1::'q_17256::type) (t1::'q_17256::type hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2457
       l2::'q_17264::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2458
       ZIP (CONS h1 t1) l2 = CONS (h1, HD l2) (ZIP t1 (TL l2)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2459
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2460
lemma DEF_ZIP: "hollight.ZIP =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2461
(SOME ZIP::'q_17256::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2462
           => 'q_17264::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2463
              => ('q_17256::type * 'q_17264::type) hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2464
    (ALL l2::'q_17264::type hollight.list. ZIP NIL l2 = NIL) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2465
    (ALL (h1::'q_17256::type) (t1::'q_17256::type hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2466
        l2::'q_17264::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2467
        ZIP (CONS h1 t1) l2 = CONS (h1, HD l2) (ZIP t1 (TL l2))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2468
  by (import hollight DEF_ZIP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2469
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2470
lemma ZIP: "(op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2471
 ((op =::('q_17275::type * 'q_17276::type) hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2472
         => ('q_17275::type * 'q_17276::type) hollight.list => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2473
   ((hollight.ZIP::'q_17275::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2474
                   => 'q_17276::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2475
                      => ('q_17275::type * 'q_17276::type) hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2476
     (NIL::'q_17275::type hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2477
     (NIL::'q_17276::type hollight.list))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2478
   (NIL::('q_17275::type * 'q_17276::type) hollight.list))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2479
 ((op =::('q_17300::type * 'q_17301::type) hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2480
         => ('q_17300::type * 'q_17301::type) hollight.list => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2481
   ((hollight.ZIP::'q_17300::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2482
                   => 'q_17301::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2483
                      => ('q_17300::type * 'q_17301::type) hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2484
     ((CONS::'q_17300::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2485
             => 'q_17300::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2486
                => 'q_17300::type hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2487
       (h1::'q_17300::type) (t1::'q_17300::type hollight.list))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2488
     ((CONS::'q_17301::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2489
             => 'q_17301::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2490
                => 'q_17301::type hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2491
       (h2::'q_17301::type) (t2::'q_17301::type hollight.list)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2492
   ((CONS::'q_17300::type * 'q_17301::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2493
           => ('q_17300::type * 'q_17301::type) hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2494
              => ('q_17300::type * 'q_17301::type) hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2495
     ((Pair::'q_17300::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2496
             => 'q_17301::type => 'q_17300::type * 'q_17301::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2497
       h1 h2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2498
     ((hollight.ZIP::'q_17300::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2499
                     => 'q_17301::type hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2500
                        => ('q_17300::type * 'q_17301::type) hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2501
       t1 t2)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2502
  by (import hollight ZIP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2503
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2504
lemma NOT_CONS_NIL: "ALL (x::'A::type) xa::'A::type hollight.list. CONS x xa ~= NIL"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2505
  by (import hollight NOT_CONS_NIL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2506
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2507
lemma LAST_CLAUSES: "LAST (CONS (h::'A::type) NIL) = h &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2508
LAST (CONS h (CONS (k::'A::type) (t::'A::type hollight.list))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2509
LAST (CONS k t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2510
  by (import hollight LAST_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2511
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2512
lemma APPEND_NIL: "ALL l::'A::type hollight.list. APPEND l NIL = l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2513
  by (import hollight APPEND_NIL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2514
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2515
lemma APPEND_ASSOC: "ALL (l::'A::type hollight.list) (m::'A::type hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2516
   n::'A::type hollight.list. APPEND l (APPEND m n) = APPEND (APPEND l m) n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2517
  by (import hollight APPEND_ASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2518
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2519
lemma REVERSE_APPEND: "ALL (l::'A::type hollight.list) m::'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2520
   REVERSE (APPEND l m) = APPEND (REVERSE m) (REVERSE l)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2521
  by (import hollight REVERSE_APPEND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2522
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2523
lemma REVERSE_REVERSE: "ALL l::'A::type hollight.list. REVERSE (REVERSE l) = l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2524
  by (import hollight REVERSE_REVERSE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2525
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2526
lemma CONS_11: "ALL (x::'A::type) (xa::'A::type) (xb::'A::type hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2527
   xc::'A::type hollight.list. (CONS x xb = CONS xa xc) = (x = xa & xb = xc)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2528
  by (import hollight CONS_11)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2529
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2530
lemma list_CASES: "ALL l::'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2531
   l = NIL | (EX (h::'A::type) t::'A::type hollight.list. l = CONS h t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2532
  by (import hollight list_CASES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2533
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2534
lemma LENGTH_APPEND: "ALL (l::'A::type hollight.list) m::'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2535
   LENGTH (APPEND l m) = LENGTH l + LENGTH m"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2536
  by (import hollight LENGTH_APPEND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2537
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2538
lemma MAP_APPEND: "ALL (f::'A::type => 'B::type) (l1::'A::type hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2539
   l2::'A::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2540
   MAP f (APPEND l1 l2) = APPEND (MAP f l1) (MAP f l2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2541
  by (import hollight MAP_APPEND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2542
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2543
lemma LENGTH_MAP: "ALL (l::'A::type hollight.list) f::'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2544
   LENGTH (MAP f l) = LENGTH l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2545
  by (import hollight LENGTH_MAP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2546
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2547
lemma LENGTH_EQ_NIL: "ALL l::'A::type hollight.list. (LENGTH l = (0::nat)) = (l = NIL)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2548
  by (import hollight LENGTH_EQ_NIL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2549
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2550
lemma LENGTH_EQ_CONS: "ALL (l::'q_17608::type hollight.list) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2551
   (LENGTH l = Suc n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2552
   (EX (h::'q_17608::type) t::'q_17608::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2553
       l = CONS h t & LENGTH t = n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2554
  by (import hollight LENGTH_EQ_CONS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2555
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2556
lemma MAP_o: "ALL (f::'A::type => 'B::type) (g::'B::type => 'C::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2557
   l::'A::type hollight.list. MAP (g o f) l = MAP g (MAP f l)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2558
  by (import hollight MAP_o)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2559
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2560
lemma MAP_EQ: "ALL (f::'q_17672::type => 'q_17683::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2561
   (g::'q_17672::type => 'q_17683::type) l::'q_17672::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2562
   ALL_list (%x::'q_17672::type. f x = g x) l --> MAP f l = MAP g l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2563
  by (import hollight MAP_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2564
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2565
lemma ALL_IMP: "ALL (P::'q_17713::type => bool) (Q::'q_17713::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2566
   l::'q_17713::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2567
   (ALL x::'q_17713::type. MEM x l & P x --> Q x) & ALL_list P l -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2568
   ALL_list Q l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2569
  by (import hollight ALL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2570
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2571
lemma NOT_EX: "ALL (P::'q_17741::type => bool) l::'q_17741::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2572
   (~ EX P l) = ALL_list (%x::'q_17741::type. ~ P x) l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2573
  by (import hollight NOT_EX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2574
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2575
lemma NOT_ALL: "ALL (P::'q_17763::type => bool) l::'q_17763::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2576
   (~ ALL_list P l) = EX (%x::'q_17763::type. ~ P x) l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2577
  by (import hollight NOT_ALL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2578
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2579
lemma ALL_MAP: "ALL (P::'q_17785::type => bool) (f::'q_17784::type => 'q_17785::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2580
   l::'q_17784::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2581
   ALL_list P (MAP f l) = ALL_list (P o f) l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2582
  by (import hollight ALL_MAP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2583
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2584
lemma ALL_T: "All (ALL_list (%x::'q_17803::type. True))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2585
  by (import hollight ALL_T)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2586
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2587
lemma MAP_EQ_ALL2: "ALL (l::'q_17828::type hollight.list) m::'q_17828::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2588
   ALL2
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2589
    (%(x::'q_17828::type) y::'q_17828::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2590
        (f::'q_17828::type => 'q_17839::type) x = f y)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2591
    l m -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2592
   MAP f l = MAP f m"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2593
  by (import hollight MAP_EQ_ALL2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2594
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2595
lemma ALL2_MAP: "ALL (P::'q_17870::type => 'q_17871::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2596
   (f::'q_17871::type => 'q_17870::type) l::'q_17871::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2597
   ALL2 P (MAP f l) l = ALL_list (%a::'q_17871::type. P (f a) a) l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2598
  by (import hollight ALL2_MAP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2599
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2600
lemma MAP_EQ_DEGEN: "ALL (l::'q_17888::type hollight.list) f::'q_17888::type => 'q_17888::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2601
   ALL_list (%x::'q_17888::type. f x = x) l --> MAP f l = l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2602
  by (import hollight MAP_EQ_DEGEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2603
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2604
lemma ALL2_AND_RIGHT: "ALL (l::'q_17931::type hollight.list) (m::'q_17930::type hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2605
   (P::'q_17931::type => bool) Q::'q_17931::type => 'q_17930::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2606
   ALL2 (%(x::'q_17931::type) y::'q_17930::type. P x & Q x y) l m =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2607
   (ALL_list P l & ALL2 Q l m)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2608
  by (import hollight ALL2_AND_RIGHT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2609
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2610
lemma ITLIST_EXTRA: "ALL l::'q_17968::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2611
   ITLIST (f::'q_17968::type => 'q_17967::type => 'q_17967::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2612
    (APPEND l (CONS (a::'q_17968::type) NIL)) (b::'q_17967::type) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2613
   ITLIST f l (f a b)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2614
  by (import hollight ITLIST_EXTRA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2615
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2616
lemma ALL_MP: "ALL (P::'q_17994::type => bool) (Q::'q_17994::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2617
   l::'q_17994::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2618
   ALL_list (%x::'q_17994::type. P x --> Q x) l & ALL_list P l -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2619
   ALL_list Q l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2620
  by (import hollight ALL_MP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2621
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2622
lemma AND_ALL: "ALL x::'q_18024::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2623
   (ALL_list (P::'q_18024::type => bool) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2624
    ALL_list (Q::'q_18024::type => bool) x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2625
   ALL_list (%x::'q_18024::type. P x & Q x) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2626
  by (import hollight AND_ALL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2627
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2628
lemma EX_IMP: "ALL (P::'q_18054::type => bool) (Q::'q_18054::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2629
   l::'q_18054::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2630
   (ALL x::'q_18054::type. MEM x l & P x --> Q x) & EX P l --> EX Q l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2631
  by (import hollight EX_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2632
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2633
lemma ALL_MEM: "ALL (P::'q_18081::type => bool) l::'q_18081::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2634
   (ALL x::'q_18081::type. MEM x l --> P x) = ALL_list P l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2635
  by (import hollight ALL_MEM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2636
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2637
lemma LENGTH_REPLICATE: "ALL (n::nat) x::'q_18099::type. LENGTH (REPLICATE n x) = n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2638
  by (import hollight LENGTH_REPLICATE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2639
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2640
lemma EX_MAP: "ALL (P::'q_18123::type => bool) (f::'q_18122::type => 'q_18123::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2641
   l::'q_18122::type hollight.list. EX P (MAP f l) = EX (P o f) l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2642
  by (import hollight EX_MAP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2643
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2644
lemma EXISTS_EX: "ALL (P::'q_18161::type => 'q_18160::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2645
   l::'q_18160::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2646
   (EX x::'q_18161::type. EX (P x) l) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2647
   EX (%s::'q_18160::type. EX x::'q_18161::type. P x s) l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2648
  by (import hollight EXISTS_EX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2649
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2650
lemma FORALL_ALL: "ALL (P::'q_18191::type => 'q_18190::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2651
   l::'q_18190::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2652
   (ALL x::'q_18191::type. ALL_list (P x) l) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2653
   ALL_list (%s::'q_18190::type. ALL x::'q_18191::type. P x s) l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2654
  by (import hollight FORALL_ALL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2655
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2656
lemma MEM_APPEND: "ALL (x::'q_18219::type) (l1::'q_18219::type hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2657
   l2::'q_18219::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2658
   MEM x (APPEND l1 l2) = (MEM x l1 | MEM x l2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2659
  by (import hollight MEM_APPEND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2660
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2661
lemma MEM_MAP: "ALL (f::'q_18255::type => 'q_18252::type) (y::'q_18252::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2662
   l::'q_18255::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2663
   MEM y (MAP f l) = (EX x::'q_18255::type. MEM x l & y = f x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2664
  by (import hollight MEM_MAP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2665
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2666
lemma FILTER_APPEND: "ALL (P::'q_18286::type => bool) (l1::'q_18286::type hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2667
   l2::'q_18286::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2668
   FILTER P (APPEND l1 l2) = APPEND (FILTER P l1) (FILTER P l2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2669
  by (import hollight FILTER_APPEND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2670
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2671
lemma FILTER_MAP: "ALL (P::'q_18313::type => bool) (f::'q_18320::type => 'q_18313::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2672
   l::'q_18320::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2673
   FILTER P (MAP f l) = MAP f (FILTER (P o f) l)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2674
  by (import hollight FILTER_MAP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2675
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2676
lemma MEM_FILTER: "ALL (P::'q_18347::type => bool) (l::'q_18347::type hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2677
   x::'q_18347::type. MEM x (FILTER P l) = (P x & MEM x l)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2678
  by (import hollight MEM_FILTER)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2679
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2680
lemma EX_MEM: "ALL (P::'q_18368::type => bool) l::'q_18368::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2681
   (EX x::'q_18368::type. P x & MEM x l) = EX P l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2682
  by (import hollight EX_MEM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2683
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2684
lemma MAP_FST_ZIP: "ALL (l1::'q_18388::type hollight.list) l2::'q_18390::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2685
   LENGTH l1 = LENGTH l2 --> MAP fst (hollight.ZIP l1 l2) = l1"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2686
  by (import hollight MAP_FST_ZIP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2687
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2688
lemma MAP_SND_ZIP: "ALL (l1::'q_18419::type hollight.list) l2::'q_18421::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2689
   LENGTH l1 = LENGTH l2 --> MAP snd (hollight.ZIP l1 l2) = l2"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2690
  by (import hollight MAP_SND_ZIP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2691
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2692
lemma MEM_ASSOC: "ALL (l::('q_18465::type * 'q_18449::type) hollight.list) x::'q_18465::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2693
   MEM (x, ASSOC x l) l = MEM x (MAP fst l)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2694
  by (import hollight MEM_ASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2695
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2696
lemma ALL_APPEND: "ALL (P::'q_18486::type => bool) (l1::'q_18486::type hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2697
   l2::'q_18486::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2698
   ALL_list P (APPEND l1 l2) = (ALL_list P l1 & ALL_list P l2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2699
  by (import hollight ALL_APPEND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2700
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2701
lemma MEM_EL: "ALL (l::'q_18509::type hollight.list) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2702
   < n (LENGTH l) --> MEM (EL n l) l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2703
  by (import hollight MEM_EL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2704
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2705
lemma ALL2_MAP2: "ALL (l::'q_18552::type hollight.list) m::'q_18553::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2706
   ALL2 (P::'q_18551::type => 'q_18550::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2707
    (MAP (f::'q_18552::type => 'q_18551::type) l)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2708
    (MAP (g::'q_18553::type => 'q_18550::type) m) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2709
   ALL2 (%(x::'q_18552::type) y::'q_18553::type. P (f x) (g y)) l m"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2710
  by (import hollight ALL2_MAP2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2711
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2712
lemma AND_ALL2: "ALL (P::'q_18599::type => 'q_18598::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2713
   (Q::'q_18599::type => 'q_18598::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2714
   (x::'q_18599::type hollight.list) xa::'q_18598::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2715
   (ALL2 P x xa & ALL2 Q x xa) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2716
   ALL2 (%(x::'q_18599::type) y::'q_18598::type. P x y & Q x y) x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2717
  by (import hollight AND_ALL2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2718
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2719
lemma ALL2_ALL: "ALL (P::'q_18621::type => 'q_18621::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2720
   l::'q_18621::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2721
   ALL2 P l l = ALL_list (%x::'q_18621::type. P x x) l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2722
  by (import hollight ALL2_ALL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2723
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2724
lemma APPEND_EQ_NIL: "ALL (x::'q_18650::type hollight.list) xa::'q_18650::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2725
   (APPEND x xa = NIL) = (x = NIL & xa = NIL)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2726
  by (import hollight APPEND_EQ_NIL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2727
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2728
lemma LENGTH_MAP2: "ALL (f::'q_18670::type => 'q_18672::type => 'q_18683::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2729
   (l::'q_18670::type hollight.list) m::'q_18672::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2730
   LENGTH l = LENGTH m --> LENGTH (MAP2 f l m) = LENGTH m"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2731
  by (import hollight LENGTH_MAP2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2732
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2733
lemma MONO_ALL: "(ALL x::'A::type. (P::'A::type => bool) x --> (Q::'A::type => bool) x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2734
ALL_list P (l::'A::type hollight.list) --> ALL_list Q l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2735
  by (import hollight MONO_ALL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2736
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2737
lemma MONO_ALL2: "(ALL (x::'A::type) y::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2738
    (P::'A::type => 'B::type => bool) x y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2739
    (Q::'A::type => 'B::type => bool) x y) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2740
ALL2 P (l::'A::type hollight.list) (l'::'B::type hollight.list) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2741
ALL2 Q l l'"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2742
  by (import hollight MONO_ALL2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2743
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2744
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2745
  dist :: "nat * nat => nat" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2746
  "dist == %u::nat * nat. fst u - snd u + (snd u - fst u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2747
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2748
lemma DEF_dist: "dist = (%u::nat * nat. fst u - snd u + (snd u - fst u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2749
  by (import hollight DEF_dist)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2750
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2751
lemma DIST_REFL: "ALL x::nat. dist (x, x) = (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2752
  by (import hollight DIST_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2753
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2754
lemma DIST_LZERO: "ALL x::nat. dist (0::nat, x) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2755
  by (import hollight DIST_LZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2756
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2757
lemma DIST_RZERO: "ALL x::nat. dist (x, 0::nat) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2758
  by (import hollight DIST_RZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2759
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2760
lemma DIST_SYM: "ALL (x::nat) xa::nat. dist (x, xa) = dist (xa, x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2761
  by (import hollight DIST_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2762
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2763
lemma DIST_LADD: "ALL (x::nat) (xa::nat) xb::nat. dist (x + xb, x + xa) = dist (xb, xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2764
  by (import hollight DIST_LADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2765
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2766
lemma DIST_RADD: "ALL (x::nat) (xa::nat) xb::nat. dist (x + xa, xb + xa) = dist (x, xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2767
  by (import hollight DIST_RADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2768
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2769
lemma DIST_LADD_0: "ALL (x::nat) xa::nat. dist (x + xa, x) = xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2770
  by (import hollight DIST_LADD_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2771
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2772
lemma DIST_RADD_0: "ALL (x::nat) xa::nat. dist (x, x + xa) = xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2773
  by (import hollight DIST_RADD_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2774
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2775
lemma DIST_LMUL: "ALL (x::nat) (xa::nat) xb::nat. x * dist (xa, xb) = dist (x * xa, x * xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2776
  by (import hollight DIST_LMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2777
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2778
lemma DIST_RMUL: "ALL (x::nat) (xa::nat) xb::nat. dist (x, xa) * xb = dist (x * xb, xa * xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2779
  by (import hollight DIST_RMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2780
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2781
lemma DIST_EQ_0: "ALL (x::nat) xa::nat. (dist (x, xa) = (0::nat)) = (x = xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2782
  by (import hollight DIST_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2783
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2784
lemma DIST_ELIM_THM: "(P::nat => bool) (dist (x::nat, y::nat)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2785
(ALL d::nat. (x = y + d --> P d) & (y = x + d --> P d))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2786
  by (import hollight DIST_ELIM_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2787
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2788
lemma DIST_LE_CASES: "ALL (m::nat) (n::nat) p::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2789
   <= (dist (m, n)) p = (<= m (n + p) & <= n (m + p))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2790
  by (import hollight DIST_LE_CASES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2791
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2792
lemma DIST_ADDBOUND: "ALL (m::nat) n::nat. <= (dist (m, n)) (m + n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2793
  by (import hollight DIST_ADDBOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2794
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2795
lemma DIST_TRIANGLE: "ALL (m::nat) (n::nat) p::nat. <= (dist (m, p)) (dist (m, n) + dist (n, p))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2796
  by (import hollight DIST_TRIANGLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2797
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2798
lemma DIST_ADD2: "ALL (m::nat) (n::nat) (p::nat) q::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2799
   <= (dist (m + n, p + q)) (dist (m, p) + dist (n, q))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2800
  by (import hollight DIST_ADD2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2801
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2802
lemma DIST_ADD2_REV: "ALL (m::nat) (n::nat) (p::nat) q::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2803
   <= (dist (m, p)) (dist (m + n, p + q) + dist (n, q))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2804
  by (import hollight DIST_ADD2_REV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2805
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2806
lemma DIST_TRIANGLE_LE: "ALL (m::nat) (n::nat) (p::nat) q::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2807
   <= (dist (m, n) + dist (n, p)) q --> <= (dist (m, p)) q"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2808
  by (import hollight DIST_TRIANGLE_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2809
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2810
lemma DIST_TRIANGLES_LE: "ALL (m::nat) (n::nat) (p::nat) (q::nat) (r::nat) s::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2811
   <= (dist (m, n)) r & <= (dist (p, q)) s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2812
   <= (dist (m, p)) (dist (n, q) + (r + s))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2813
  by (import hollight DIST_TRIANGLES_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2814
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2815
lemma BOUNDS_LINEAR: "ALL (A::nat) (B::nat) C::nat. (ALL n::nat. <= (A * n) (B * n + C)) = <= A B"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2816
  by (import hollight BOUNDS_LINEAR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2817
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2818
lemma BOUNDS_LINEAR_0: "ALL (A::nat) B::nat. (ALL n::nat. <= (A * n) B) = (A = (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2819
  by (import hollight BOUNDS_LINEAR_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2820
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2821
lemma BOUNDS_DIVIDED: "ALL P::nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2822
   (EX B::nat. ALL n::nat. <= (P n) B) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2823
   (EX (x::nat) B::nat. ALL n::nat. <= (n * P n) (x * n + B))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2824
  by (import hollight BOUNDS_DIVIDED)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2825
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2826
lemma BOUNDS_NOTZERO: "ALL (P::nat => nat => nat) (A::nat) B::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2827
   P (0::nat) (0::nat) = (0::nat) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2828
   (ALL (m::nat) n::nat. <= (P m n) (A * (m + n) + B)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2829
   (EX x::nat. ALL (m::nat) n::nat. <= (P m n) (x * (m + n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2830
  by (import hollight BOUNDS_NOTZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2831
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2832
lemma BOUNDS_IGNORE: "ALL (P::nat => nat) Q::nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2833
   (EX B::nat. ALL i::nat. <= (P i) (Q i + B)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2834
   (EX (x::nat) N::nat. ALL i::nat. <= N i --> <= (P i) (Q i + x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2835
  by (import hollight BOUNDS_IGNORE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2836
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2837
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2838
  is_nadd :: "(nat => nat) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2839
  "is_nadd ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2840
%u::nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2841
   EX B::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2842
      ALL (m::nat) n::nat. <= (dist (m * u n, n * u m)) (B * (m + n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2843
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2844
lemma DEF_is_nadd: "is_nadd =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2845
(%u::nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2846
    EX B::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2847
       ALL (m::nat) n::nat. <= (dist (m * u n, n * u m)) (B * (m + n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2848
  by (import hollight DEF_is_nadd)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2849
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2850
lemma is_nadd_0: "is_nadd (%n::nat. 0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2851
  by (import hollight is_nadd_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2852
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2853
typedef (open) nadd = "Collect is_nadd"  morphisms "dest_nadd" "mk_nadd"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2854
  apply (rule light_ex_imp_nonempty[where t="%n::nat. NUMERAL (0::nat)"])
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2855
  by (import hollight TYDEF_nadd)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2856
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2857
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2858
  dest_nadd :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2859
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2860
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2861
  mk_nadd :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2862
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2863
lemmas "TYDEF_nadd_@intern" = typedef_hol2hollight 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2864
  [where a="a :: nadd" and r=r ,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2865
   OF type_definition_nadd]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2866
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2867
lemma NADD_CAUCHY: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2868
   EX xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2869
      ALL (xb::nat) xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2870
         <= (dist (xb * dest_nadd x xc, xc * dest_nadd x xb))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2871
          (xa * (xb + xc))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2872
  by (import hollight NADD_CAUCHY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2873
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2874
lemma NADD_BOUND: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2875
   EX (xa::nat) B::nat. ALL n::nat. <= (dest_nadd x n) (xa * n + B)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2876
  by (import hollight NADD_BOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2877
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2878
lemma NADD_MULTIPLICATIVE: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2879
   EX xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2880
      ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2881
         <= (dist (dest_nadd x (m * n), m * dest_nadd x n)) (xa * m + xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2882
  by (import hollight NADD_MULTIPLICATIVE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2883
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2884
lemma NADD_ADDITIVE: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2885
   EX xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2886
      ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2887
         <= (dist (dest_nadd x (m + n), dest_nadd x m + dest_nadd x n)) xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2888
  by (import hollight NADD_ADDITIVE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2889
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2890
lemma NADD_SUC: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2891
   EX xa::nat. ALL n::nat. <= (dist (dest_nadd x (Suc n), dest_nadd x n)) xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2892
  by (import hollight NADD_SUC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2893
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2894
lemma NADD_DIST_LEMMA: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2895
   EX xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2896
      ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2897
         <= (dist (dest_nadd x (m + n), dest_nadd x m)) (xa * n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2898
  by (import hollight NADD_DIST_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2899
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2900
lemma NADD_DIST: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2901
   EX xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2902
      ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2903
         <= (dist (dest_nadd x m, dest_nadd x n)) (xa * dist (m, n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2904
  by (import hollight NADD_DIST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2905
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2906
lemma NADD_ALTMUL: "ALL (x::nadd) y::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2907
   EX (A::nat) B::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2908
      ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2909
         <= (dist
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2910
              (n * dest_nadd x (dest_nadd y n),
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2911
               dest_nadd x n * dest_nadd y n))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2912
          (A * n + B)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2913
  by (import hollight NADD_ALTMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2914
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2915
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2916
  nadd_eq :: "nadd => nadd => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2917
  "nadd_eq ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2918
%(u::nadd) ua::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2919
   EX B::nat. ALL n::nat. <= (dist (dest_nadd u n, dest_nadd ua n)) B"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2920
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2921
lemma DEF_nadd_eq: "nadd_eq =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2922
(%(u::nadd) ua::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2923
    EX B::nat. ALL n::nat. <= (dist (dest_nadd u n, dest_nadd ua n)) B)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2924
  by (import hollight DEF_nadd_eq)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2925
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2926
lemma NADD_EQ_REFL: "ALL x::nadd. nadd_eq x x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2927
  by (import hollight NADD_EQ_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2928
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2929
lemma NADD_EQ_SYM: "ALL (x::nadd) y::nadd. nadd_eq x y = nadd_eq y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2930
  by (import hollight NADD_EQ_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2931
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2932
lemma NADD_EQ_TRANS: "ALL (x::nadd) (y::nadd) z::nadd. nadd_eq x y & nadd_eq y z --> nadd_eq x z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2933
  by (import hollight NADD_EQ_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2934
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2935
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2936
  nadd_of_num :: "nat => nadd" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2937
  "nadd_of_num == %u::nat. mk_nadd (op * u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2938
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2939
lemma DEF_nadd_of_num: "nadd_of_num = (%u::nat. mk_nadd (op * u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2940
  by (import hollight DEF_nadd_of_num)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2941
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2942
lemma NADD_OF_NUM: "ALL x::nat. dest_nadd (nadd_of_num x) = op * x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2943
  by (import hollight NADD_OF_NUM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2944
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2945
lemma NADD_OF_NUM_WELLDEF: "ALL (m::nat) n::nat. m = n --> nadd_eq (nadd_of_num m) (nadd_of_num n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2946
  by (import hollight NADD_OF_NUM_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2947
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2948
lemma NADD_OF_NUM_EQ: "ALL (m::nat) n::nat. nadd_eq (nadd_of_num m) (nadd_of_num n) = (m = n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2949
  by (import hollight NADD_OF_NUM_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2950
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2951
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2952
  nadd_le :: "nadd => nadd => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2953
  "nadd_le ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2954
%(u::nadd) ua::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2955
   EX B::nat. ALL n::nat. <= (dest_nadd u n) (dest_nadd ua n + B)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2956
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2957
lemma DEF_nadd_le: "nadd_le =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2958
(%(u::nadd) ua::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2959
    EX B::nat. ALL n::nat. <= (dest_nadd u n) (dest_nadd ua n + B))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2960
  by (import hollight DEF_nadd_le)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2961
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2962
lemma NADD_LE_WELLDEF_LEMMA: "ALL (x::nadd) (x'::nadd) (y::nadd) y'::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2963
   nadd_eq x x' & nadd_eq y y' & nadd_le x y --> nadd_le x' y'"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2964
  by (import hollight NADD_LE_WELLDEF_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2965
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2966
lemma NADD_LE_WELLDEF: "ALL (x::nadd) (x'::nadd) (y::nadd) y'::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2967
   nadd_eq x x' & nadd_eq y y' --> nadd_le x y = nadd_le x' y'"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2968
  by (import hollight NADD_LE_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2969
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2970
lemma NADD_LE_REFL: "ALL x::nadd. nadd_le x x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2971
  by (import hollight NADD_LE_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2972
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2973
lemma NADD_LE_TRANS: "ALL (x::nadd) (y::nadd) z::nadd. nadd_le x y & nadd_le y z --> nadd_le x z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2974
  by (import hollight NADD_LE_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2975
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2976
lemma NADD_LE_ANTISYM: "ALL (x::nadd) y::nadd. (nadd_le x y & nadd_le y x) = nadd_eq x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2977
  by (import hollight NADD_LE_ANTISYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2978
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2979
lemma NADD_LE_TOTAL_LEMMA: "ALL (x::nadd) y::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2980
   ~ nadd_le x y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2981
   (ALL B::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2982
       EX n::nat. n ~= (0::nat) & < (dest_nadd y n + B) (dest_nadd x n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2983
  by (import hollight NADD_LE_TOTAL_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2984
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2985
lemma NADD_LE_TOTAL: "ALL (x::nadd) y::nadd. nadd_le x y | nadd_le y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2986
  by (import hollight NADD_LE_TOTAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2987
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2988
lemma NADD_ARCH: "ALL x::nadd. EX xa::nat. nadd_le x (nadd_of_num xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2989
  by (import hollight NADD_ARCH)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2990
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2991
lemma NADD_OF_NUM_LE: "ALL (m::nat) n::nat. nadd_le (nadd_of_num m) (nadd_of_num n) = <= m n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2992
  by (import hollight NADD_OF_NUM_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2993
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2994
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2995
  nadd_add :: "nadd => nadd => nadd" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2996
  "nadd_add ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2997
%(u::nadd) ua::nadd. mk_nadd (%n::nat. dest_nadd u n + dest_nadd ua n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2998
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  2999
lemma DEF_nadd_add: "nadd_add =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3000
(%(u::nadd) ua::nadd. mk_nadd (%n::nat. dest_nadd u n + dest_nadd ua n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3001
  by (import hollight DEF_nadd_add)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3002
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3003
lemma NADD_ADD: "ALL (x::nadd) y::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3004
   dest_nadd (nadd_add x y) = (%n::nat. dest_nadd x n + dest_nadd y n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3005
  by (import hollight NADD_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3006
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3007
lemma NADD_ADD_WELLDEF: "ALL (x::nadd) (x'::nadd) (y::nadd) y'::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3008
   nadd_eq x x' & nadd_eq y y' --> nadd_eq (nadd_add x y) (nadd_add x' y')"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3009
  by (import hollight NADD_ADD_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3010
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3011
lemma NADD_ADD_SYM: "ALL (x::nadd) y::nadd. nadd_eq (nadd_add x y) (nadd_add y x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3012
  by (import hollight NADD_ADD_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3013
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3014
lemma NADD_ADD_ASSOC: "ALL (x::nadd) (y::nadd) z::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3015
   nadd_eq (nadd_add x (nadd_add y z)) (nadd_add (nadd_add x y) z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3016
  by (import hollight NADD_ADD_ASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3017
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3018
lemma NADD_ADD_LID: "ALL x::nadd. nadd_eq (nadd_add (nadd_of_num (0::nat)) x) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3019
  by (import hollight NADD_ADD_LID)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3020
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3021
lemma NADD_ADD_LCANCEL: "ALL (x::nadd) (y::nadd) z::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3022
   nadd_eq (nadd_add x y) (nadd_add x z) --> nadd_eq y z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3023
  by (import hollight NADD_ADD_LCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3024
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3025
lemma NADD_LE_ADD: "ALL (x::nadd) y::nadd. nadd_le x (nadd_add x y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3026
  by (import hollight NADD_LE_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3027
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3028
lemma NADD_LE_EXISTS: "ALL (x::nadd) y::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3029
   nadd_le x y --> (EX d::nadd. nadd_eq y (nadd_add x d))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3030
  by (import hollight NADD_LE_EXISTS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3031
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3032
lemma NADD_OF_NUM_ADD: "ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3033
   nadd_eq (nadd_add (nadd_of_num x) (nadd_of_num xa))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3034
    (nadd_of_num (x + xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3035
  by (import hollight NADD_OF_NUM_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3036
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3037
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3038
  nadd_mul :: "nadd => nadd => nadd" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3039
  "nadd_mul ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3040
%(u::nadd) ua::nadd. mk_nadd (%n::nat. dest_nadd u (dest_nadd ua n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3041
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3042
lemma DEF_nadd_mul: "nadd_mul =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3043
(%(u::nadd) ua::nadd. mk_nadd (%n::nat. dest_nadd u (dest_nadd ua n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3044
  by (import hollight DEF_nadd_mul)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3045
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3046
lemma NADD_MUL: "ALL (x::nadd) y::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3047
   dest_nadd (nadd_mul x y) = (%n::nat. dest_nadd x (dest_nadd y n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3048
  by (import hollight NADD_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3049
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3050
lemma NADD_MUL_SYM: "ALL (x::nadd) y::nadd. nadd_eq (nadd_mul x y) (nadd_mul y x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3051
  by (import hollight NADD_MUL_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3052
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3053
lemma NADD_MUL_ASSOC: "ALL (x::nadd) (y::nadd) z::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3054
   nadd_eq (nadd_mul x (nadd_mul y z)) (nadd_mul (nadd_mul x y) z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3055
  by (import hollight NADD_MUL_ASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3056
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3057
lemma NADD_MUL_LID: "ALL x::nadd. nadd_eq (nadd_mul (nadd_of_num (NUMERAL_BIT1 (0::nat))) x) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3058
  by (import hollight NADD_MUL_LID)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3059
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3060
lemma NADD_LDISTRIB: "ALL (x::nadd) (y::nadd) z::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3061
   nadd_eq (nadd_mul x (nadd_add y z))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3062
    (nadd_add (nadd_mul x y) (nadd_mul x z))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3063
  by (import hollight NADD_LDISTRIB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3064
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3065
lemma NADD_MUL_WELLDEF_LEMMA: "ALL (x::nadd) (y::nadd) y'::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3066
   nadd_eq y y' --> nadd_eq (nadd_mul x y) (nadd_mul x y')"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3067
  by (import hollight NADD_MUL_WELLDEF_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3068
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3069
lemma NADD_MUL_WELLDEF: "ALL (x::nadd) (x'::nadd) (y::nadd) y'::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3070
   nadd_eq x x' & nadd_eq y y' --> nadd_eq (nadd_mul x y) (nadd_mul x' y')"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3071
  by (import hollight NADD_MUL_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3072
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3073
lemma NADD_OF_NUM_MUL: "ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3074
   nadd_eq (nadd_mul (nadd_of_num x) (nadd_of_num xa))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3075
    (nadd_of_num (x * xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3076
  by (import hollight NADD_OF_NUM_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3077
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3078
lemma NADD_LE_0: "All (nadd_le (nadd_of_num (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3079
  by (import hollight NADD_LE_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3080
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3081
lemma NADD_EQ_IMP_LE: "ALL (x::nadd) y::nadd. nadd_eq x y --> nadd_le x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3082
  by (import hollight NADD_EQ_IMP_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3083
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3084
lemma NADD_LE_LMUL: "ALL (x::nadd) (y::nadd) z::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3085
   nadd_le y z --> nadd_le (nadd_mul x y) (nadd_mul x z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3086
  by (import hollight NADD_LE_LMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3087
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3088
lemma NADD_LE_RMUL: "ALL (x::nadd) (y::nadd) z::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3089
   nadd_le x y --> nadd_le (nadd_mul x z) (nadd_mul y z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3090
  by (import hollight NADD_LE_RMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3091
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3092
lemma NADD_LE_RADD: "ALL (x::nadd) (y::nadd) z::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3093
   nadd_le (nadd_add x z) (nadd_add y z) = nadd_le x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3094
  by (import hollight NADD_LE_RADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3095
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3096
lemma NADD_LE_LADD: "ALL (x::nadd) (y::nadd) z::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3097
   nadd_le (nadd_add x y) (nadd_add x z) = nadd_le y z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3098
  by (import hollight NADD_LE_LADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3099
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3100
lemma NADD_RDISTRIB: "ALL (x::nadd) (y::nadd) z::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3101
   nadd_eq (nadd_mul (nadd_add x y) z)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3102
    (nadd_add (nadd_mul x z) (nadd_mul y z))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3103
  by (import hollight NADD_RDISTRIB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3104
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3105
lemma NADD_ARCH_MULT: "ALL (x::nadd) k::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3106
   ~ nadd_eq x (nadd_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3107
   (EX xa::nat. nadd_le (nadd_of_num k) (nadd_mul (nadd_of_num xa) x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3108
  by (import hollight NADD_ARCH_MULT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3109
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3110
lemma NADD_ARCH_ZERO: "ALL (x::nadd) k::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3111
   (ALL n::nat. nadd_le (nadd_mul (nadd_of_num n) x) k) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3112
   nadd_eq x (nadd_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3113
  by (import hollight NADD_ARCH_ZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3114
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3115
lemma NADD_ARCH_LEMMA: "ALL (x::nadd) (y::nadd) z::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3116
   (ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3117
       nadd_le (nadd_mul (nadd_of_num n) x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3118
        (nadd_add (nadd_mul (nadd_of_num n) y) z)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3119
   nadd_le x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3120
  by (import hollight NADD_ARCH_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3121
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3122
lemma NADD_COMPLETE: "ALL P::nadd => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3123
   Ex P & (EX M::nadd. ALL x::nadd. P x --> nadd_le x M) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3124
   (EX M::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3125
       (ALL x::nadd. P x --> nadd_le x M) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3126
       (ALL M'::nadd. (ALL x::nadd. P x --> nadd_le x M') --> nadd_le M M'))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3127
  by (import hollight NADD_COMPLETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3128
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3129
lemma NADD_UBOUND: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3130
   EX (xa::nat) N::nat. ALL n::nat. <= N n --> <= (dest_nadd x n) (xa * n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3131
  by (import hollight NADD_UBOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3132
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3133
lemma NADD_NONZERO: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3134
   ~ nadd_eq x (nadd_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3135
   (EX N::nat. ALL n::nat. <= N n --> dest_nadd x n ~= (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3136
  by (import hollight NADD_NONZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3137
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3138
lemma NADD_LBOUND: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3139
   ~ nadd_eq x (nadd_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3140
   (EX (A::nat) N::nat. ALL n::nat. <= N n --> <= n (A * dest_nadd x n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3141
  by (import hollight NADD_LBOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3142
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3143
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3144
  nadd_rinv :: "nadd => nat => nat" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3145
  "nadd_rinv == %(u::nadd) n::nat. DIV (n * n) (dest_nadd u n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3146
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3147
lemma DEF_nadd_rinv: "nadd_rinv = (%(u::nadd) n::nat. DIV (n * n) (dest_nadd u n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3148
  by (import hollight DEF_nadd_rinv)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3149
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3150
lemma NADD_MUL_LINV_LEMMA0: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3151
   ~ nadd_eq x (nadd_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3152
   (EX (xa::nat) B::nat. ALL i::nat. <= (nadd_rinv x i) (xa * i + B))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3153
  by (import hollight NADD_MUL_LINV_LEMMA0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3154
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3155
lemma NADD_MUL_LINV_LEMMA1: "ALL (x::nadd) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3156
   dest_nadd x n ~= (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3157
   <= (dist (dest_nadd x n * nadd_rinv x n, n * n)) (dest_nadd x n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3158
  by (import hollight NADD_MUL_LINV_LEMMA1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3159
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3160
lemma NADD_MUL_LINV_LEMMA2: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3161
   ~ nadd_eq x (nadd_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3162
   (EX N::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3163
       ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3164
          <= N n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3165
          <= (dist (dest_nadd x n * nadd_rinv x n, n * n)) (dest_nadd x n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3166
  by (import hollight NADD_MUL_LINV_LEMMA2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3167
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3168
lemma NADD_MUL_LINV_LEMMA3: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3169
   ~ nadd_eq x (nadd_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3170
   (EX N::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3171
       ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3172
          <= N n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3173
          <= (dist
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3174
               (m * (dest_nadd x m * (dest_nadd x n * nadd_rinv x n)),
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3175
                m * (dest_nadd x m * (n * n))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3176
           (m * (dest_nadd x m * dest_nadd x n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3177
  by (import hollight NADD_MUL_LINV_LEMMA3)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3178
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3179
lemma NADD_MUL_LINV_LEMMA4: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3180
   ~ nadd_eq x (nadd_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3181
   (EX N::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3182
       ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3183
          <= N m & <= N n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3184
          <= (dest_nadd x m * dest_nadd x n *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3185
              dist (m * nadd_rinv x n, n * nadd_rinv x m))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3186
           (m * n * dist (m * dest_nadd x n, n * dest_nadd x m) +
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3187
            dest_nadd x m * dest_nadd x n * (m + n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3188
  by (import hollight NADD_MUL_LINV_LEMMA4)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3189
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3190
lemma NADD_MUL_LINV_LEMMA5: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3191
   ~ nadd_eq x (nadd_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3192
   (EX (B::nat) N::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3193
       ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3194
          <= N m & <= N n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3195
          <= (dest_nadd x m * dest_nadd x n *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3196
              dist (m * nadd_rinv x n, n * nadd_rinv x m))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3197
           (B * (m * n * (m + n))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3198
  by (import hollight NADD_MUL_LINV_LEMMA5)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3199
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3200
lemma NADD_MUL_LINV_LEMMA6: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3201
   ~ nadd_eq x (nadd_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3202
   (EX (B::nat) N::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3203
       ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3204
          <= N m & <= N n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3205
          <= (m * n * dist (m * nadd_rinv x n, n * nadd_rinv x m))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3206
           (B * (m * n * (m + n))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3207
  by (import hollight NADD_MUL_LINV_LEMMA6)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3208
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3209
lemma NADD_MUL_LINV_LEMMA7: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3210
   ~ nadd_eq x (nadd_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3211
   (EX (B::nat) N::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3212
       ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3213
          <= N m & <= N n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3214
          <= (dist (m * nadd_rinv x n, n * nadd_rinv x m)) (B * (m + n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3215
  by (import hollight NADD_MUL_LINV_LEMMA7)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3216
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3217
lemma NADD_MUL_LINV_LEMMA7a: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3218
   ~ nadd_eq x (nadd_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3219
   (ALL N::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3220
       EX (A::nat) B::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3221
          ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3222
             <= m N -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3223
             <= (dist (m * nadd_rinv x n, n * nadd_rinv x m)) (A * n + B))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3224
  by (import hollight NADD_MUL_LINV_LEMMA7a)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3225
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3226
lemma NADD_MUL_LINV_LEMMA8: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3227
   ~ nadd_eq x (nadd_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3228
   (EX B::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3229
       ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3230
          <= (dist (m * nadd_rinv x n, n * nadd_rinv x m)) (B * (m + n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3231
  by (import hollight NADD_MUL_LINV_LEMMA8)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3232
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3233
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3234
  nadd_inv :: "nadd => nadd" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3235
  "nadd_inv ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3236
%u::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3237
   COND (nadd_eq u (nadd_of_num (0::nat))) (nadd_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3238
    (mk_nadd (nadd_rinv u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3239
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3240
lemma DEF_nadd_inv: "nadd_inv =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3241
(%u::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3242
    COND (nadd_eq u (nadd_of_num (0::nat))) (nadd_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3243
     (mk_nadd (nadd_rinv u)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3244
  by (import hollight DEF_nadd_inv)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3245
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3246
lemma NADD_INV: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3247
   dest_nadd (nadd_inv x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3248
   COND (nadd_eq x (nadd_of_num (0::nat))) (%n::nat. 0::nat) (nadd_rinv x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3249
  by (import hollight NADD_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3250
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3251
lemma NADD_MUL_LINV: "ALL x::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3252
   ~ nadd_eq x (nadd_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3253
   nadd_eq (nadd_mul (nadd_inv x) x) (nadd_of_num (NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3254
  by (import hollight NADD_MUL_LINV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3255
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3256
lemma NADD_INV_0: "nadd_eq (nadd_inv (nadd_of_num (0::nat))) (nadd_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3257
  by (import hollight NADD_INV_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3258
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3259
lemma NADD_INV_WELLDEF: "ALL (x::nadd) y::nadd. nadd_eq x y --> nadd_eq (nadd_inv x) (nadd_inv y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3260
  by (import hollight NADD_INV_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3261
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3262
typedef (open) hreal = "{s::nadd => bool. EX x::nadd. s = nadd_eq x}"  morphisms "dest_hreal" "mk_hreal"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3263
  apply (rule light_ex_imp_nonempty[where t="nadd_eq (x::nadd)"])
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3264
  by (import hollight TYDEF_hreal)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3265
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3266
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3267
  dest_hreal :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3268
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3269
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3270
  mk_hreal :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3271
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3272
lemmas "TYDEF_hreal_@intern" = typedef_hol2hollight 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3273
  [where a="a :: hreal" and r=r ,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3274
   OF type_definition_hreal]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3275
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3276
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3277
  hreal_of_num :: "nat => hreal" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3278
  "hreal_of_num == %m::nat. mk_hreal (nadd_eq (nadd_of_num m))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3279
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3280
lemma DEF_hreal_of_num: "hreal_of_num = (%m::nat. mk_hreal (nadd_eq (nadd_of_num m)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3281
  by (import hollight DEF_hreal_of_num)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3282
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3283
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3284
  hreal_add :: "hreal => hreal => hreal" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3285
  "hreal_add ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3286
%(x::hreal) y::hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3287
   mk_hreal
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3288
    (%u::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3289
        EX (xa::nadd) ya::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3290
           nadd_eq (nadd_add xa ya) u & dest_hreal x xa & dest_hreal y ya)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3291
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3292
lemma DEF_hreal_add: "hreal_add =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3293
(%(x::hreal) y::hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3294
    mk_hreal
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3295
     (%u::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3296
         EX (xa::nadd) ya::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3297
            nadd_eq (nadd_add xa ya) u & dest_hreal x xa & dest_hreal y ya))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3298
  by (import hollight DEF_hreal_add)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3299
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3300
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3301
  hreal_mul :: "hreal => hreal => hreal" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3302
  "hreal_mul ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3303
%(x::hreal) y::hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3304
   mk_hreal
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3305
    (%u::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3306
        EX (xa::nadd) ya::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3307
           nadd_eq (nadd_mul xa ya) u & dest_hreal x xa & dest_hreal y ya)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3308
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3309
lemma DEF_hreal_mul: "hreal_mul =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3310
(%(x::hreal) y::hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3311
    mk_hreal
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3312
     (%u::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3313
         EX (xa::nadd) ya::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3314
            nadd_eq (nadd_mul xa ya) u & dest_hreal x xa & dest_hreal y ya))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3315
  by (import hollight DEF_hreal_mul)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3316
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3317
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3318
  hreal_le :: "hreal => hreal => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3319
  "hreal_le ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3320
%(x::hreal) y::hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3321
   SOME u::bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3322
      EX (xa::nadd) ya::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3323
         nadd_le xa ya = u & dest_hreal x xa & dest_hreal y ya"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3324
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3325
lemma DEF_hreal_le: "hreal_le =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3326
(%(x::hreal) y::hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3327
    SOME u::bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3328
       EX (xa::nadd) ya::nadd.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3329
          nadd_le xa ya = u & dest_hreal x xa & dest_hreal y ya)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3330
  by (import hollight DEF_hreal_le)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3331
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3332
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3333
  hreal_inv :: "hreal => hreal" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3334
  "hreal_inv ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3335
%x::hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3336
   mk_hreal
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3337
    (%u::nadd. EX xa::nadd. nadd_eq (nadd_inv xa) u & dest_hreal x xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3338
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3339
lemma DEF_hreal_inv: "hreal_inv =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3340
(%x::hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3341
    mk_hreal
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3342
     (%u::nadd. EX xa::nadd. nadd_eq (nadd_inv xa) u & dest_hreal x xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3343
  by (import hollight DEF_hreal_inv)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3344
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3345
lemma HREAL_LE_EXISTS_DEF: "ALL (m::hreal) n::hreal. hreal_le m n = (EX d::hreal. n = hreal_add m d)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3346
  by (import hollight HREAL_LE_EXISTS_DEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3347
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3348
lemma HREAL_EQ_ADD_LCANCEL: "ALL (m::hreal) (n::hreal) p::hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3349
   (hreal_add m n = hreal_add m p) = (n = p)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3350
  by (import hollight HREAL_EQ_ADD_LCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3351
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3352
lemma HREAL_EQ_ADD_RCANCEL: "ALL (x::hreal) (xa::hreal) xb::hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3353
   (hreal_add x xb = hreal_add xa xb) = (x = xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3354
  by (import hollight HREAL_EQ_ADD_RCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3355
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3356
lemma HREAL_LE_ADD_LCANCEL: "ALL (x::hreal) (xa::hreal) xb::hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3357
   hreal_le (hreal_add x xa) (hreal_add x xb) = hreal_le xa xb"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3358
  by (import hollight HREAL_LE_ADD_LCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3359
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3360
lemma HREAL_LE_ADD_RCANCEL: "ALL (x::hreal) (xa::hreal) xb::hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3361
   hreal_le (hreal_add x xb) (hreal_add xa xb) = hreal_le x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3362
  by (import hollight HREAL_LE_ADD_RCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3363
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3364
lemma HREAL_ADD_RID: "ALL x::hreal. hreal_add x (hreal_of_num (0::nat)) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3365
  by (import hollight HREAL_ADD_RID)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3366
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3367
lemma HREAL_ADD_RDISTRIB: "ALL (x::hreal) (xa::hreal) xb::hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3368
   hreal_mul (hreal_add x xa) xb =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3369
   hreal_add (hreal_mul x xb) (hreal_mul xa xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3370
  by (import hollight HREAL_ADD_RDISTRIB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3371
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3372
lemma HREAL_MUL_LZERO: "ALL m::hreal. hreal_mul (hreal_of_num (0::nat)) m = hreal_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3373
  by (import hollight HREAL_MUL_LZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3374
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3375
lemma HREAL_MUL_RZERO: "ALL x::hreal. hreal_mul x (hreal_of_num (0::nat)) = hreal_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3376
  by (import hollight HREAL_MUL_RZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3377
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3378
lemma HREAL_ADD_AC: "hreal_add (m::hreal) (n::hreal) = hreal_add n m &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3379
hreal_add (hreal_add m n) (p::hreal) = hreal_add m (hreal_add n p) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3380
hreal_add m (hreal_add n p) = hreal_add n (hreal_add m p)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3381
  by (import hollight HREAL_ADD_AC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3382
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3383
lemma HREAL_LE_ADD2: "ALL (a::hreal) (b::hreal) (c::hreal) d::hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3384
   hreal_le a b & hreal_le c d --> hreal_le (hreal_add a c) (hreal_add b d)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3385
  by (import hollight HREAL_LE_ADD2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3386
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3387
lemma HREAL_LE_MUL_RCANCEL_IMP: "ALL (a::hreal) (b::hreal) c::hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3388
   hreal_le a b --> hreal_le (hreal_mul a c) (hreal_mul b c)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3389
  by (import hollight HREAL_LE_MUL_RCANCEL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3390
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3391
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3392
  treal_of_num :: "nat => hreal * hreal" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3393
  "treal_of_num == %u::nat. (hreal_of_num u, hreal_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3394
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3395
lemma DEF_treal_of_num: "treal_of_num = (%u::nat. (hreal_of_num u, hreal_of_num (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3396
  by (import hollight DEF_treal_of_num)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3397
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3398
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3399
  treal_neg :: "hreal * hreal => hreal * hreal" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3400
  "treal_neg == %u::hreal * hreal. (snd u, fst u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3401
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3402
lemma DEF_treal_neg: "treal_neg = (%u::hreal * hreal. (snd u, fst u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3403
  by (import hollight DEF_treal_neg)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3404
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3405
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3406
  treal_add :: "hreal * hreal => hreal * hreal => hreal * hreal" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3407
  "treal_add ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3408
%(u::hreal * hreal) ua::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3409
   (hreal_add (fst u) (fst ua), hreal_add (snd u) (snd ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3410
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3411
lemma DEF_treal_add: "treal_add =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3412
(%(u::hreal * hreal) ua::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3413
    (hreal_add (fst u) (fst ua), hreal_add (snd u) (snd ua)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3414
  by (import hollight DEF_treal_add)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3415
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3416
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3417
  treal_mul :: "hreal * hreal => hreal * hreal => hreal * hreal" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3418
  "treal_mul ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3419
%(u::hreal * hreal) ua::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3420
   (hreal_add (hreal_mul (fst u) (fst ua)) (hreal_mul (snd u) (snd ua)),
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3421
    hreal_add (hreal_mul (fst u) (snd ua)) (hreal_mul (snd u) (fst ua)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3422
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3423
lemma DEF_treal_mul: "treal_mul =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3424
(%(u::hreal * hreal) ua::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3425
    (hreal_add (hreal_mul (fst u) (fst ua)) (hreal_mul (snd u) (snd ua)),
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3426
     hreal_add (hreal_mul (fst u) (snd ua)) (hreal_mul (snd u) (fst ua))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3427
  by (import hollight DEF_treal_mul)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3428
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3429
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3430
  treal_le :: "hreal * hreal => hreal * hreal => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3431
  "treal_le ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3432
%(u::hreal * hreal) ua::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3433
   hreal_le (hreal_add (fst u) (snd ua)) (hreal_add (fst ua) (snd u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3434
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3435
lemma DEF_treal_le: "treal_le =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3436
(%(u::hreal * hreal) ua::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3437
    hreal_le (hreal_add (fst u) (snd ua)) (hreal_add (fst ua) (snd u)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3438
  by (import hollight DEF_treal_le)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3439
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3440
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3441
  treal_inv :: "hreal * hreal => hreal * hreal" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3442
  "treal_inv ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3443
%u::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3444
   COND (fst u = snd u) (hreal_of_num (0::nat), hreal_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3445
    (COND (hreal_le (snd u) (fst u))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3446
      (hreal_inv (SOME d::hreal. fst u = hreal_add (snd u) d),
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3447
       hreal_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3448
      (hreal_of_num (0::nat),
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3449
       hreal_inv (SOME d::hreal. snd u = hreal_add (fst u) d)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3450
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3451
lemma DEF_treal_inv: "treal_inv =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3452
(%u::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3453
    COND (fst u = snd u) (hreal_of_num (0::nat), hreal_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3454
     (COND (hreal_le (snd u) (fst u))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3455
       (hreal_inv (SOME d::hreal. fst u = hreal_add (snd u) d),
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3456
        hreal_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3457
       (hreal_of_num (0::nat),
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3458
        hreal_inv (SOME d::hreal. snd u = hreal_add (fst u) d))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3459
  by (import hollight DEF_treal_inv)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3460
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3461
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3462
  treal_eq :: "hreal * hreal => hreal * hreal => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3463
  "treal_eq ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3464
%(u::hreal * hreal) ua::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3465
   hreal_add (fst u) (snd ua) = hreal_add (fst ua) (snd u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3466
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3467
lemma DEF_treal_eq: "treal_eq =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3468
(%(u::hreal * hreal) ua::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3469
    hreal_add (fst u) (snd ua) = hreal_add (fst ua) (snd u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3470
  by (import hollight DEF_treal_eq)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3471
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3472
lemma TREAL_EQ_REFL: "ALL x::hreal * hreal. treal_eq x x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3473
  by (import hollight TREAL_EQ_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3474
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3475
lemma TREAL_EQ_SYM: "ALL (x::hreal * hreal) y::hreal * hreal. treal_eq x y = treal_eq y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3476
  by (import hollight TREAL_EQ_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3477
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3478
lemma TREAL_EQ_TRANS: "ALL (x::hreal * hreal) (y::hreal * hreal) z::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3479
   treal_eq x y & treal_eq y z --> treal_eq x z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3480
  by (import hollight TREAL_EQ_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3481
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3482
lemma TREAL_EQ_AP: "ALL (x::hreal * hreal) y::hreal * hreal. x = y --> treal_eq x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3483
  by (import hollight TREAL_EQ_AP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3484
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3485
lemma TREAL_OF_NUM_EQ: "ALL (x::nat) xa::nat. treal_eq (treal_of_num x) (treal_of_num xa) = (x = xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3486
  by (import hollight TREAL_OF_NUM_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3487
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3488
lemma TREAL_OF_NUM_LE: "ALL (x::nat) xa::nat. treal_le (treal_of_num x) (treal_of_num xa) = <= x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3489
  by (import hollight TREAL_OF_NUM_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3490
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3491
lemma TREAL_OF_NUM_ADD: "ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3492
   treal_eq (treal_add (treal_of_num x) (treal_of_num xa))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3493
    (treal_of_num (x + xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3494
  by (import hollight TREAL_OF_NUM_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3495
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3496
lemma TREAL_OF_NUM_MUL: "ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3497
   treal_eq (treal_mul (treal_of_num x) (treal_of_num xa))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3498
    (treal_of_num (x * xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3499
  by (import hollight TREAL_OF_NUM_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3500
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3501
lemma TREAL_ADD_SYM_EQ: "ALL (x::hreal * hreal) y::hreal * hreal. treal_add x y = treal_add y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3502
  by (import hollight TREAL_ADD_SYM_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3503
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3504
lemma TREAL_MUL_SYM_EQ: "ALL (x::hreal * hreal) y::hreal * hreal. treal_mul x y = treal_mul y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3505
  by (import hollight TREAL_MUL_SYM_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3506
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3507
lemma TREAL_ADD_SYM: "ALL (x::hreal * hreal) y::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3508
   treal_eq (treal_add x y) (treal_add y x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3509
  by (import hollight TREAL_ADD_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3510
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3511
lemma TREAL_ADD_ASSOC: "ALL (x::hreal * hreal) (y::hreal * hreal) z::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3512
   treal_eq (treal_add x (treal_add y z)) (treal_add (treal_add x y) z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3513
  by (import hollight TREAL_ADD_ASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3514
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3515
lemma TREAL_ADD_LID: "ALL x::hreal * hreal. treal_eq (treal_add (treal_of_num (0::nat)) x) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3516
  by (import hollight TREAL_ADD_LID)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3517
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3518
lemma TREAL_ADD_LINV: "ALL x::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3519
   treal_eq (treal_add (treal_neg x) x) (treal_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3520
  by (import hollight TREAL_ADD_LINV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3521
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3522
lemma TREAL_MUL_SYM: "ALL (x::hreal * hreal) y::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3523
   treal_eq (treal_mul x y) (treal_mul y x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3524
  by (import hollight TREAL_MUL_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3525
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3526
lemma TREAL_MUL_ASSOC: "ALL (x::hreal * hreal) (y::hreal * hreal) z::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3527
   treal_eq (treal_mul x (treal_mul y z)) (treal_mul (treal_mul x y) z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3528
  by (import hollight TREAL_MUL_ASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3529
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3530
lemma TREAL_MUL_LID: "ALL x::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3531
   treal_eq (treal_mul (treal_of_num (NUMERAL_BIT1 (0::nat))) x) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3532
  by (import hollight TREAL_MUL_LID)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3533
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3534
lemma TREAL_ADD_LDISTRIB: "ALL (x::hreal * hreal) (y::hreal * hreal) z::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3535
   treal_eq (treal_mul x (treal_add y z))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3536
    (treal_add (treal_mul x y) (treal_mul x z))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3537
  by (import hollight TREAL_ADD_LDISTRIB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3538
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3539
lemma TREAL_LE_REFL: "ALL x::hreal * hreal. treal_le x x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3540
  by (import hollight TREAL_LE_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3541
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3542
lemma TREAL_LE_ANTISYM: "ALL (x::hreal * hreal) y::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3543
   (treal_le x y & treal_le y x) = treal_eq x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3544
  by (import hollight TREAL_LE_ANTISYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3545
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3546
lemma TREAL_LE_TRANS: "ALL (x::hreal * hreal) (y::hreal * hreal) z::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3547
   treal_le x y & treal_le y z --> treal_le x z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3548
  by (import hollight TREAL_LE_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3549
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3550
lemma TREAL_LE_TOTAL: "ALL (x::hreal * hreal) y::hreal * hreal. treal_le x y | treal_le y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3551
  by (import hollight TREAL_LE_TOTAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3552
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3553
lemma TREAL_LE_LADD_IMP: "ALL (x::hreal * hreal) (y::hreal * hreal) z::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3554
   treal_le y z --> treal_le (treal_add x y) (treal_add x z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3555
  by (import hollight TREAL_LE_LADD_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3556
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3557
lemma TREAL_LE_MUL: "ALL (x::hreal * hreal) y::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3558
   treal_le (treal_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3559
   treal_le (treal_of_num (0::nat)) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3560
   treal_le (treal_of_num (0::nat)) (treal_mul x y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3561
  by (import hollight TREAL_LE_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3562
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3563
lemma TREAL_INV_0: "treal_eq (treal_inv (treal_of_num (0::nat))) (treal_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3564
  by (import hollight TREAL_INV_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3565
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3566
lemma TREAL_MUL_LINV: "ALL x::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3567
   ~ treal_eq x (treal_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3568
   treal_eq (treal_mul (treal_inv x) x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3569
    (treal_of_num (NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3570
  by (import hollight TREAL_MUL_LINV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3571
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3572
lemma TREAL_OF_NUM_WELLDEF: "ALL (m::nat) n::nat. m = n --> treal_eq (treal_of_num m) (treal_of_num n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3573
  by (import hollight TREAL_OF_NUM_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3574
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3575
lemma TREAL_NEG_WELLDEF: "ALL (x1::hreal * hreal) x2::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3576
   treal_eq x1 x2 --> treal_eq (treal_neg x1) (treal_neg x2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3577
  by (import hollight TREAL_NEG_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3578
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3579
lemma TREAL_ADD_WELLDEFR: "ALL (x1::hreal * hreal) (x2::hreal * hreal) y::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3580
   treal_eq x1 x2 --> treal_eq (treal_add x1 y) (treal_add x2 y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3581
  by (import hollight TREAL_ADD_WELLDEFR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3582
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3583
lemma TREAL_ADD_WELLDEF: "ALL (x1::hreal * hreal) (x2::hreal * hreal) (y1::hreal * hreal)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3584
   y2::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3585
   treal_eq x1 x2 & treal_eq y1 y2 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3586
   treal_eq (treal_add x1 y1) (treal_add x2 y2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3587
  by (import hollight TREAL_ADD_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3588
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3589
lemma TREAL_MUL_WELLDEFR: "ALL (x1::hreal * hreal) (x2::hreal * hreal) y::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3590
   treal_eq x1 x2 --> treal_eq (treal_mul x1 y) (treal_mul x2 y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3591
  by (import hollight TREAL_MUL_WELLDEFR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3592
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3593
lemma TREAL_MUL_WELLDEF: "ALL (x1::hreal * hreal) (x2::hreal * hreal) (y1::hreal * hreal)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3594
   y2::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3595
   treal_eq x1 x2 & treal_eq y1 y2 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3596
   treal_eq (treal_mul x1 y1) (treal_mul x2 y2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3597
  by (import hollight TREAL_MUL_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3598
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3599
lemma TREAL_EQ_IMP_LE: "ALL (x::hreal * hreal) y::hreal * hreal. treal_eq x y --> treal_le x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3600
  by (import hollight TREAL_EQ_IMP_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3601
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3602
lemma TREAL_LE_WELLDEF: "ALL (x1::hreal * hreal) (x2::hreal * hreal) (y1::hreal * hreal)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3603
   y2::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3604
   treal_eq x1 x2 & treal_eq y1 y2 --> treal_le x1 y1 = treal_le x2 y2"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3605
  by (import hollight TREAL_LE_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3606
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3607
lemma TREAL_INV_WELLDEF: "ALL (x::hreal * hreal) y::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3608
   treal_eq x y --> treal_eq (treal_inv x) (treal_inv y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3609
  by (import hollight TREAL_INV_WELLDEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3610
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3611
typedef (open) real = "{s::hreal * hreal => bool. EX x::hreal * hreal. s = treal_eq x}"  morphisms "dest_real" "mk_real"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3612
  apply (rule light_ex_imp_nonempty[where t="treal_eq (x::hreal * hreal)"])
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3613
  by (import hollight TYDEF_real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3614
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3615
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3616
  dest_real :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3617
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3618
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3619
  mk_real :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3620
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3621
lemmas "TYDEF_real_@intern" = typedef_hol2hollight 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3622
  [where a="a :: hollight.real" and r=r ,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3623
   OF type_definition_real]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3624
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3625
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3626
  real_of_num :: "nat => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3627
  "real_of_num == %m::nat. mk_real (treal_eq (treal_of_num m))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3628
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3629
lemma DEF_real_of_num: "real_of_num = (%m::nat. mk_real (treal_eq (treal_of_num m)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3630
  by (import hollight DEF_real_of_num)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3631
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3632
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3633
  real_neg :: "hollight.real => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3634
  "real_neg ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3635
%x1::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3636
   mk_real
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3637
    (%u::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3638
        EX x1a::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3639
           treal_eq (treal_neg x1a) u & dest_real x1 x1a)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3640
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3641
lemma DEF_real_neg: "real_neg =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3642
(%x1::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3643
    mk_real
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3644
     (%u::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3645
         EX x1a::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3646
            treal_eq (treal_neg x1a) u & dest_real x1 x1a))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3647
  by (import hollight DEF_real_neg)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3648
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3649
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3650
  real_add :: "hollight.real => hollight.real => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3651
  "real_add ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3652
%(x1::hollight.real) y1::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3653
   mk_real
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3654
    (%u::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3655
        EX (x1a::hreal * hreal) y1a::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3656
           treal_eq (treal_add x1a y1a) u &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3657
           dest_real x1 x1a & dest_real y1 y1a)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3658
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3659
lemma DEF_real_add: "real_add =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3660
(%(x1::hollight.real) y1::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3661
    mk_real
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3662
     (%u::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3663
         EX (x1a::hreal * hreal) y1a::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3664
            treal_eq (treal_add x1a y1a) u &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3665
            dest_real x1 x1a & dest_real y1 y1a))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3666
  by (import hollight DEF_real_add)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3667
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3668
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3669
  real_mul :: "hollight.real => hollight.real => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3670
  "real_mul ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3671
%(x1::hollight.real) y1::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3672
   mk_real
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3673
    (%u::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3674
        EX (x1a::hreal * hreal) y1a::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3675
           treal_eq (treal_mul x1a y1a) u &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3676
           dest_real x1 x1a & dest_real y1 y1a)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3677
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3678
lemma DEF_real_mul: "real_mul =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3679
(%(x1::hollight.real) y1::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3680
    mk_real
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3681
     (%u::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3682
         EX (x1a::hreal * hreal) y1a::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3683
            treal_eq (treal_mul x1a y1a) u &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3684
            dest_real x1 x1a & dest_real y1 y1a))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3685
  by (import hollight DEF_real_mul)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3686
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3687
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3688
  real_le :: "hollight.real => hollight.real => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3689
  "real_le ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3690
%(x1::hollight.real) y1::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3691
   SOME u::bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3692
      EX (x1a::hreal * hreal) y1a::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3693
         treal_le x1a y1a = u & dest_real x1 x1a & dest_real y1 y1a"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3694
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3695
lemma DEF_real_le: "real_le =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3696
(%(x1::hollight.real) y1::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3697
    SOME u::bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3698
       EX (x1a::hreal * hreal) y1a::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3699
          treal_le x1a y1a = u & dest_real x1 x1a & dest_real y1 y1a)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3700
  by (import hollight DEF_real_le)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3701
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3702
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3703
  real_inv :: "hollight.real => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3704
  "real_inv ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3705
%x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3706
   mk_real
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3707
    (%u::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3708
        EX xa::hreal * hreal. treal_eq (treal_inv xa) u & dest_real x xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3709
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3710
lemma DEF_real_inv: "real_inv =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3711
(%x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3712
    mk_real
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3713
     (%u::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3714
         EX xa::hreal * hreal. treal_eq (treal_inv xa) u & dest_real x xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3715
  by (import hollight DEF_real_inv)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3716
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3717
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3718
  real_sub :: "hollight.real => hollight.real => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3719
  "real_sub == %(u::hollight.real) ua::hollight.real. real_add u (real_neg ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3720
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3721
lemma DEF_real_sub: "real_sub = (%(u::hollight.real) ua::hollight.real. real_add u (real_neg ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3722
  by (import hollight DEF_real_sub)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3723
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3724
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3725
  real_lt :: "hollight.real => hollight.real => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3726
  "real_lt == %(u::hollight.real) ua::hollight.real. ~ real_le ua u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3727
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3728
lemma DEF_real_lt: "real_lt = (%(u::hollight.real) ua::hollight.real. ~ real_le ua u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3729
  by (import hollight DEF_real_lt)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3730
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3731
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3732
  real_ge :: "hollight.real => hollight.real => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3733
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3734
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3735
  real_ge_def: "hollight.real_ge == %(u::hollight.real) ua::hollight.real. real_le ua u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3736
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3737
lemma DEF_real_ge: "hollight.real_ge = (%(u::hollight.real) ua::hollight.real. real_le ua u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3738
  by (import hollight DEF_real_ge)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3739
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3740
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3741
  real_gt :: "hollight.real => hollight.real => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3742
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3743
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3744
  real_gt_def: "hollight.real_gt == %(u::hollight.real) ua::hollight.real. real_lt ua u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3745
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3746
lemma DEF_real_gt: "hollight.real_gt = (%(u::hollight.real) ua::hollight.real. real_lt ua u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3747
  by (import hollight DEF_real_gt)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3748
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3749
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3750
  real_abs :: "hollight.real => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3751
  "real_abs ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3752
%u::hollight.real. COND (real_le (real_of_num (0::nat)) u) u (real_neg u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3753
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3754
lemma DEF_real_abs: "real_abs =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3755
(%u::hollight.real. COND (real_le (real_of_num (0::nat)) u) u (real_neg u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3756
  by (import hollight DEF_real_abs)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3757
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3758
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3759
  real_pow :: "hollight.real => nat => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3760
  "real_pow ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3761
SOME real_pow::hollight.real => nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3762
   (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3763
       real_pow x (0::nat) = real_of_num (NUMERAL_BIT1 (0::nat))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3764
   (ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3765
       real_pow x (Suc n) = real_mul x (real_pow x n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3766
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3767
lemma DEF_real_pow: "real_pow =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3768
(SOME real_pow::hollight.real => nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3769
    (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3770
        real_pow x (0::nat) = real_of_num (NUMERAL_BIT1 (0::nat))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3771
    (ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3772
        real_pow x (Suc n) = real_mul x (real_pow x n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3773
  by (import hollight DEF_real_pow)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3774
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3775
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3776
  real_div :: "hollight.real => hollight.real => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3777
  "real_div == %(u::hollight.real) ua::hollight.real. real_mul u (real_inv ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3778
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3779
lemma DEF_real_div: "real_div = (%(u::hollight.real) ua::hollight.real. real_mul u (real_inv ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3780
  by (import hollight DEF_real_div)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3781
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3782
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3783
  real_max :: "hollight.real => hollight.real => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3784
  "real_max == %(u::hollight.real) ua::hollight.real. COND (real_le u ua) ua u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3785
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3786
lemma DEF_real_max: "real_max = (%(u::hollight.real) ua::hollight.real. COND (real_le u ua) ua u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3787
  by (import hollight DEF_real_max)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3788
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3789
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3790
  real_min :: "hollight.real => hollight.real => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3791
  "real_min == %(u::hollight.real) ua::hollight.real. COND (real_le u ua) u ua"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3792
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3793
lemma DEF_real_min: "real_min = (%(u::hollight.real) ua::hollight.real. COND (real_le u ua) u ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3794
  by (import hollight DEF_real_min)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3795
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3796
lemma REAL_HREAL_LEMMA1: "EX x::hreal => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3797
   (ALL xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3798
       real_le (real_of_num (0::nat)) xa = (EX y::hreal. xa = x y)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3799
   (ALL (y::hreal) z::hreal. hreal_le y z = real_le (x y) (x z))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3800
  by (import hollight REAL_HREAL_LEMMA1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3801
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3802
lemma REAL_HREAL_LEMMA2: "EX (x::hollight.real => hreal) r::hreal => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3803
   (ALL xa::hreal. x (r xa) = xa) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3804
   (ALL xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3805
       real_le (real_of_num (0::nat)) xa --> r (x xa) = xa) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3806
   (ALL x::hreal. real_le (real_of_num (0::nat)) (r x)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3807
   (ALL (x::hreal) y::hreal. hreal_le x y = real_le (r x) (r y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3808
  by (import hollight REAL_HREAL_LEMMA2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3809
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3810
lemma REAL_COMPLETE_SOMEPOS: "ALL P::hollight.real => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3811
   (EX x::hollight.real. P x & real_le (real_of_num (0::nat)) x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3812
   (EX M::hollight.real. ALL x::hollight.real. P x --> real_le x M) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3813
   (EX M::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3814
       (ALL x::hollight.real. P x --> real_le x M) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3815
       (ALL M'::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3816
           (ALL x::hollight.real. P x --> real_le x M') --> real_le M M'))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3817
  by (import hollight REAL_COMPLETE_SOMEPOS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3818
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3819
lemma REAL_COMPLETE: "ALL P::hollight.real => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3820
   Ex P &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3821
   (EX M::hollight.real. ALL x::hollight.real. P x --> real_le x M) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3822
   (EX M::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3823
       (ALL x::hollight.real. P x --> real_le x M) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3824
       (ALL M'::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3825
           (ALL x::hollight.real. P x --> real_le x M') --> real_le M M'))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3826
  by (import hollight REAL_COMPLETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3827
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3828
lemma REAL_ADD_AC: "real_add (m::hollight.real) (n::hollight.real) = real_add n m &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3829
real_add (real_add m n) (p::hollight.real) = real_add m (real_add n p) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3830
real_add m (real_add n p) = real_add n (real_add m p)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3831
  by (import hollight REAL_ADD_AC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3832
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3833
lemma REAL_ADD_RINV: "ALL x::hollight.real. real_add x (real_neg x) = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3834
  by (import hollight REAL_ADD_RINV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3835
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3836
lemma REAL_EQ_ADD_LCANCEL: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3837
   (real_add x y = real_add x z) = (y = z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3838
  by (import hollight REAL_EQ_ADD_LCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3839
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3840
lemma REAL_EQ_ADD_RCANCEL: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3841
   (real_add x z = real_add y z) = (x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3842
  by (import hollight REAL_EQ_ADD_RCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3843
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3844
lemma REAL_NEG_NEG: "ALL x::hollight.real. real_neg (real_neg x) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3845
  by (import hollight REAL_NEG_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3846
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3847
lemma REAL_MUL_RNEG: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3848
   real_mul x (real_neg y) = real_neg (real_mul x y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3849
  by (import hollight REAL_MUL_RNEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3850
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3851
lemma REAL_MUL_LNEG: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3852
   real_mul (real_neg x) y = real_neg (real_mul x y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3853
  by (import hollight REAL_MUL_LNEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3854
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3855
lemma REAL_ADD_RID: "ALL x::hollight.real. real_add x (real_of_num (0::nat)) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3856
  by (import hollight REAL_ADD_RID)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3857
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3858
lemma REAL_LE_LNEG: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3859
   real_le (real_neg x) y = real_le (real_of_num (0::nat)) (real_add x y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3860
  by (import hollight REAL_LE_LNEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3861
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3862
lemma REAL_LE_NEG2: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3863
   real_le (real_neg x) (real_neg y) = real_le y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3864
  by (import hollight REAL_LE_NEG2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3865
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3866
lemma REAL_LE_RNEG: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3867
   real_le x (real_neg y) = real_le (real_add x y) (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3868
  by (import hollight REAL_LE_RNEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3869
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3870
lemma REAL_OF_NUM_POW: "ALL (x::nat) n::nat. real_pow (real_of_num x) n = real_of_num (EXP x n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3871
  by (import hollight REAL_OF_NUM_POW)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3872
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3873
lemma REAL_POW_NEG: "ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3874
   real_pow (real_neg x) n =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3875
   COND (EVEN n) (real_pow x n) (real_neg (real_pow x n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3876
  by (import hollight REAL_POW_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3877
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3878
lemma REAL_ABS_NUM: "ALL x::nat. real_abs (real_of_num x) = real_of_num x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3879
  by (import hollight REAL_ABS_NUM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3880
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3881
lemma REAL_ABS_NEG: "ALL x::hollight.real. real_abs (real_neg x) = real_abs x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3882
  by (import hollight REAL_ABS_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3883
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3884
lemma REAL_LTE_TOTAL: "ALL (x::hollight.real) xa::hollight.real. real_lt x xa | real_le xa x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3885
  by (import hollight REAL_LTE_TOTAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3886
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3887
lemma REAL_LET_TOTAL: "ALL (x::hollight.real) xa::hollight.real. real_le x xa | real_lt xa x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3888
  by (import hollight REAL_LET_TOTAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3889
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3890
lemma REAL_LET_TRANS: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3891
   real_le x y & real_lt y z --> real_lt x z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3892
  by (import hollight REAL_LET_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3893
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3894
lemma REAL_LT_TRANS: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3895
   real_lt x y & real_lt y z --> real_lt x z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3896
  by (import hollight REAL_LT_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3897
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3898
lemma REAL_LE_ADD: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3899
   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3900
   real_le (real_of_num (0::nat)) (real_add x y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3901
  by (import hollight REAL_LE_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3902
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3903
lemma REAL_LTE_ANTISYM: "ALL (x::hollight.real) y::hollight.real. ~ (real_lt x y & real_le y x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3904
  by (import hollight REAL_LTE_ANTISYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3905
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3906
lemma REAL_LT_REFL: "ALL x::hollight.real. ~ real_lt x x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3907
  by (import hollight REAL_LT_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3908
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3909
lemma REAL_LET_ADD: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3910
   real_le (real_of_num (0::nat)) x & real_lt (real_of_num (0::nat)) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3911
   real_lt (real_of_num (0::nat)) (real_add x y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3912
  by (import hollight REAL_LET_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3913
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3914
lemma REAL_ENTIRE: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3915
   (real_mul x y = real_of_num (0::nat)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3916
   (x = real_of_num (0::nat) | y = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3917
  by (import hollight REAL_ENTIRE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3918
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3919
lemma REAL_POW_2: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3920
   real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = real_mul x x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3921
  by (import hollight REAL_POW_2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3922
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3923
lemma REAL_POLY_CLAUSES: "(ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3924
    real_add x (real_add y z) = real_add (real_add x y) z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3925
(ALL (x::hollight.real) y::hollight.real. real_add x y = real_add y x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3926
(ALL x::hollight.real. real_add (real_of_num (0::nat)) x = x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3927
(ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3928
    real_mul x (real_mul y z) = real_mul (real_mul x y) z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3929
(ALL (x::hollight.real) y::hollight.real. real_mul x y = real_mul y x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3930
(ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3931
    real_mul (real_of_num (NUMERAL_BIT1 (0::nat))) x = x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3932
(ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3933
    real_mul (real_of_num (0::nat)) x = real_of_num (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3934
(ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3935
    real_mul x (real_add xa xb) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3936
    real_add (real_mul x xa) (real_mul x xb)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3937
(ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3938
    real_pow x (0::nat) = real_of_num (NUMERAL_BIT1 (0::nat))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3939
(ALL (x::hollight.real) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3940
    real_pow x (Suc xa) = real_mul x (real_pow x xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3941
  by (import hollight REAL_POLY_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3942
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3943
lemma REAL_POLY_NEG_CLAUSES: "(ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3944
    real_neg x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3945
    real_mul (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3946
(ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3947
    real_sub x xa =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3948
    real_add x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3949
     (real_mul (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3950
  by (import hollight REAL_POLY_NEG_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3951
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3952
lemma REAL_OF_NUM_LT: "ALL (x::nat) xa::nat. real_lt (real_of_num x) (real_of_num xa) = < x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3953
  by (import hollight REAL_OF_NUM_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3954
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3955
lemma REAL_OF_NUM_GE: "ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3956
   hollight.real_ge (real_of_num x) (real_of_num xa) = >= x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3957
  by (import hollight REAL_OF_NUM_GE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3958
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3959
lemma REAL_OF_NUM_GT: "ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3960
   hollight.real_gt (real_of_num x) (real_of_num xa) = > x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3961
  by (import hollight REAL_OF_NUM_GT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3962
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3963
lemma REAL_OF_NUM_SUC: "ALL x::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3964
   real_add (real_of_num x) (real_of_num (NUMERAL_BIT1 (0::nat))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3965
   real_of_num (Suc x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3966
  by (import hollight REAL_OF_NUM_SUC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3967
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3968
lemma REAL_OF_NUM_SUB: "ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3969
   <= m n --> real_sub (real_of_num n) (real_of_num m) = real_of_num (n - m)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3970
  by (import hollight REAL_OF_NUM_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3971
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3972
lemma REAL_MUL_AC: "real_mul (m::hollight.real) (n::hollight.real) = real_mul n m &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3973
real_mul (real_mul m n) (p::hollight.real) = real_mul m (real_mul n p) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3974
real_mul m (real_mul n p) = real_mul n (real_mul m p)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3975
  by (import hollight REAL_MUL_AC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3976
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3977
lemma REAL_ADD_RDISTRIB: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3978
   real_mul (real_add x y) z = real_add (real_mul x z) (real_mul y z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3979
  by (import hollight REAL_ADD_RDISTRIB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3980
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3981
lemma REAL_LT_LADD_IMP: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3982
   real_lt y z --> real_lt (real_add x y) (real_add x z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3983
  by (import hollight REAL_LT_LADD_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3984
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3985
lemma REAL_LT_MUL: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3986
   real_lt (real_of_num (0::nat)) x & real_lt (real_of_num (0::nat)) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3987
   real_lt (real_of_num (0::nat)) (real_mul x y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3988
  by (import hollight REAL_LT_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3989
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3990
lemma REAL_EQ_ADD_LCANCEL_0: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3991
   (real_add x y = x) = (y = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3992
  by (import hollight REAL_EQ_ADD_LCANCEL_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3993
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3994
lemma REAL_EQ_ADD_RCANCEL_0: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3995
   (real_add x y = y) = (x = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3996
  by (import hollight REAL_EQ_ADD_RCANCEL_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3997
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3998
lemma REAL_NOT_EQ: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  3999
   (x ~= y) = (real_lt x y | real_lt y x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4000
  by (import hollight REAL_NOT_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4001
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4002
lemma REAL_LE_ANTISYM: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4003
   (real_le x y & real_le y x) = (x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4004
  by (import hollight REAL_LE_ANTISYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4005
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4006
lemma REAL_LET_ANTISYM: "ALL (x::hollight.real) y::hollight.real. ~ (real_le x y & real_lt y x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4007
  by (import hollight REAL_LET_ANTISYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4008
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4009
lemma REAL_LT_TOTAL: "ALL (x::hollight.real) y::hollight.real. x = y | real_lt x y | real_lt y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4010
  by (import hollight REAL_LT_TOTAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4011
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4012
lemma REAL_LE_01: "real_le (real_of_num (0::nat)) (real_of_num (NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4013
  by (import hollight REAL_LE_01)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4014
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4015
lemma REAL_LE_ADD2: "ALL (w::hollight.real) (x::hollight.real) (y::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4016
   z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4017
   real_le w x & real_le y z --> real_le (real_add w y) (real_add x z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4018
  by (import hollight REAL_LE_ADD2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4019
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4020
lemma REAL_LT_LNEG: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4021
   real_lt (real_neg x) xa = real_lt (real_of_num (0::nat)) (real_add x xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4022
  by (import hollight REAL_LT_LNEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4023
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4024
lemma REAL_LT_RNEG: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4025
   real_lt x (real_neg xa) = real_lt (real_add x xa) (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4026
  by (import hollight REAL_LT_RNEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4027
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4028
lemma REAL_NEG_EQ_0: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4029
   (real_neg x = real_of_num (0::nat)) = (x = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4030
  by (import hollight REAL_NEG_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4031
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4032
lemma REAL_ADD_SUB: "ALL (x::hollight.real) y::hollight.real. real_sub (real_add x y) x = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4033
  by (import hollight REAL_ADD_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4034
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4035
lemma REAL_LE_ADDR: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4036
   real_le x (real_add x y) = real_le (real_of_num (0::nat)) y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4037
  by (import hollight REAL_LE_ADDR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4038
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4039
lemma REAL_LE_ADDL: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4040
   real_le y (real_add x y) = real_le (real_of_num (0::nat)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4041
  by (import hollight REAL_LE_ADDL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4042
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4043
lemma REAL_LT_ADDR: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4044
   real_lt x (real_add x y) = real_lt (real_of_num (0::nat)) y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4045
  by (import hollight REAL_LT_ADDR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4046
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4047
lemma REAL_LT_ADDL: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4048
   real_lt y (real_add x y) = real_lt (real_of_num (0::nat)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4049
  by (import hollight REAL_LT_ADDL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4050
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4051
lemma REAL_ADD2_SUB2: "ALL (a::hollight.real) (b::hollight.real) (c::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4052
   d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4053
   real_sub (real_add a b) (real_add c d) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4054
   real_add (real_sub a c) (real_sub b d)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4055
  by (import hollight REAL_ADD2_SUB2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4056
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4057
lemma REAL_LET_ADD2: "ALL (w::hollight.real) (x::hollight.real) (y::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4058
   z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4059
   real_le w x & real_lt y z --> real_lt (real_add w y) (real_add x z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4060
  by (import hollight REAL_LET_ADD2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4061
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4062
lemma REAL_EQ_SUB_LADD: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4063
   (x = real_sub y z) = (real_add x z = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4064
  by (import hollight REAL_EQ_SUB_LADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4065
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4066
lemma REAL_EQ_SUB_RADD: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4067
   (real_sub x y = z) = (x = real_add z y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4068
  by (import hollight REAL_EQ_SUB_RADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4069
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4070
lemma REAL_ADD_SUB2: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4071
   real_sub x (real_add x y) = real_neg y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4072
  by (import hollight REAL_ADD_SUB2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4073
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4074
lemma REAL_EQ_IMP_LE: "ALL (x::hollight.real) y::hollight.real. x = y --> real_le x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4075
  by (import hollight REAL_EQ_IMP_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4076
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4077
lemma REAL_DIFFSQ: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4078
   real_mul (real_add x y) (real_sub x y) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4079
   real_sub (real_mul x x) (real_mul y y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4080
  by (import hollight REAL_DIFFSQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4081
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4082
lemma REAL_EQ_NEG2: "ALL (x::hollight.real) y::hollight.real. (real_neg x = real_neg y) = (x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4083
  by (import hollight REAL_EQ_NEG2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4084
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4085
lemma REAL_LT_NEG2: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4086
   real_lt (real_neg x) (real_neg y) = real_lt y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4087
  by (import hollight REAL_LT_NEG2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4088
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4089
lemma REAL_ABS_ZERO: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4090
   (real_abs x = real_of_num (0::nat)) = (x = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4091
  by (import hollight REAL_ABS_ZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4092
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4093
lemma REAL_ABS_0: "real_abs (real_of_num (0::nat)) = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4094
  by (import hollight REAL_ABS_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4095
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4096
lemma REAL_ABS_1: "real_abs (real_of_num (NUMERAL_BIT1 (0::nat))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4097
real_of_num (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4098
  by (import hollight REAL_ABS_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4099
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4100
lemma REAL_ABS_TRIANGLE: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4101
   real_le (real_abs (real_add x y)) (real_add (real_abs x) (real_abs y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4102
  by (import hollight REAL_ABS_TRIANGLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4103
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4104
lemma REAL_ABS_TRIANGLE_LE: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4105
   real_le (real_add (real_abs x) (real_abs (real_sub y x))) z -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4106
   real_le (real_abs y) z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4107
  by (import hollight REAL_ABS_TRIANGLE_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4108
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4109
lemma REAL_ABS_TRIANGLE_LT: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4110
   real_lt (real_add (real_abs x) (real_abs (real_sub y x))) z -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4111
   real_lt (real_abs y) z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4112
  by (import hollight REAL_ABS_TRIANGLE_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4113
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4114
lemma REAL_ABS_POS: "ALL x::hollight.real. real_le (real_of_num (0::nat)) (real_abs x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4115
  by (import hollight REAL_ABS_POS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4116
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4117
lemma REAL_ABS_SUB: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4118
   real_abs (real_sub x y) = real_abs (real_sub y x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4119
  by (import hollight REAL_ABS_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4120
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4121
lemma REAL_ABS_NZ: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4122
   (x ~= real_of_num (0::nat)) = real_lt (real_of_num (0::nat)) (real_abs x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4123
  by (import hollight REAL_ABS_NZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4124
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4125
lemma REAL_ABS_ABS: "ALL x::hollight.real. real_abs (real_abs x) = real_abs x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4126
  by (import hollight REAL_ABS_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4127
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4128
lemma REAL_ABS_LE: "ALL x::hollight.real. real_le x (real_abs x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4129
  by (import hollight REAL_ABS_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4130
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4131
lemma REAL_ABS_REFL: "ALL x::hollight.real. (real_abs x = x) = real_le (real_of_num (0::nat)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4132
  by (import hollight REAL_ABS_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4133
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4134
lemma REAL_ABS_BETWEEN: "ALL (x::hollight.real) (y::hollight.real) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4135
   (real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4136
    real_lt (real_sub x d) y & real_lt y (real_add x d)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4137
   real_lt (real_abs (real_sub y x)) d"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4138
  by (import hollight REAL_ABS_BETWEEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4139
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4140
lemma REAL_ABS_BOUND: "ALL (x::hollight.real) (y::hollight.real) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4141
   real_lt (real_abs (real_sub x y)) d --> real_lt y (real_add x d)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4142
  by (import hollight REAL_ABS_BOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4143
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4144
lemma REAL_ABS_STILLNZ: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4145
   real_lt (real_abs (real_sub x y)) (real_abs y) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4146
   x ~= real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4147
  by (import hollight REAL_ABS_STILLNZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4148
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4149
lemma REAL_ABS_CASES: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4150
   x = real_of_num (0::nat) | real_lt (real_of_num (0::nat)) (real_abs x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4151
  by (import hollight REAL_ABS_CASES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4152
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4153
lemma REAL_ABS_BETWEEN1: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4154
   real_lt x z & real_lt (real_abs (real_sub y x)) (real_sub z x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4155
   real_lt y z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4156
  by (import hollight REAL_ABS_BETWEEN1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4157
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4158
lemma REAL_ABS_SIGN: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4159
   real_lt (real_abs (real_sub x y)) y --> real_lt (real_of_num (0::nat)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4160
  by (import hollight REAL_ABS_SIGN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4161
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4162
lemma REAL_ABS_SIGN2: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4163
   real_lt (real_abs (real_sub x y)) (real_neg y) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4164
   real_lt x (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4165
  by (import hollight REAL_ABS_SIGN2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4166
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4167
lemma REAL_ABS_CIRCLE: "ALL (x::hollight.real) (y::hollight.real) h::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4168
   real_lt (real_abs h) (real_sub (real_abs y) (real_abs x)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4169
   real_lt (real_abs (real_add x h)) (real_abs y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4170
  by (import hollight REAL_ABS_CIRCLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4171
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4172
lemma REAL_ABS_SUB_ABS: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4173
   real_le (real_abs (real_sub (real_abs x) (real_abs y)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4174
    (real_abs (real_sub x y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4175
  by (import hollight REAL_ABS_SUB_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4176
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4177
lemma REAL_ABS_BETWEEN2: "ALL (x0::hollight.real) (x::hollight.real) (y0::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4178
   y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4179
   real_lt x0 y0 &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4180
   real_lt
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4181
    (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4182
      (real_abs (real_sub x x0)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4183
    (real_sub y0 x0) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4184
   real_lt
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4185
    (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4186
      (real_abs (real_sub y y0)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4187
    (real_sub y0 x0) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4188
   real_lt x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4189
  by (import hollight REAL_ABS_BETWEEN2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4190
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4191
lemma REAL_ABS_BOUNDS: "ALL (x::hollight.real) k::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4192
   real_le (real_abs x) k = (real_le (real_neg k) x & real_le x k)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4193
  by (import hollight REAL_ABS_BOUNDS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4194
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4195
lemma REAL_MIN_MAX: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4196
   real_min x y = real_neg (real_max (real_neg x) (real_neg y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4197
  by (import hollight REAL_MIN_MAX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4198
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4199
lemma REAL_MAX_MIN: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4200
   real_max x y = real_neg (real_min (real_neg x) (real_neg y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4201
  by (import hollight REAL_MAX_MIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4202
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4203
lemma REAL_MAX_MAX: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4204
   real_le x (real_max x y) & real_le y (real_max x y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4205
  by (import hollight REAL_MAX_MAX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4206
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4207
lemma REAL_MIN_MIN: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4208
   real_le (real_min x y) x & real_le (real_min x y) y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4209
  by (import hollight REAL_MIN_MIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4210
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4211
lemma REAL_MAX_SYM: "ALL (x::hollight.real) y::hollight.real. real_max x y = real_max y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4212
  by (import hollight REAL_MAX_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4213
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4214
lemma REAL_MIN_SYM: "ALL (x::hollight.real) y::hollight.real. real_min x y = real_min y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4215
  by (import hollight REAL_MIN_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4216
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4217
lemma REAL_LE_MAX: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4218
   real_le z (real_max x y) = (real_le z x | real_le z y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4219
  by (import hollight REAL_LE_MAX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4220
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4221
lemma REAL_LE_MIN: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4222
   real_le z (real_min x y) = (real_le z x & real_le z y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4223
  by (import hollight REAL_LE_MIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4224
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4225
lemma REAL_LT_MAX: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4226
   real_lt z (real_max x y) = (real_lt z x | real_lt z y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4227
  by (import hollight REAL_LT_MAX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4228
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4229
lemma REAL_LT_MIN: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4230
   real_lt z (real_min x y) = (real_lt z x & real_lt z y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4231
  by (import hollight REAL_LT_MIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4232
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4233
lemma REAL_MAX_LE: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4234
   real_le (real_max x y) z = (real_le x z & real_le y z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4235
  by (import hollight REAL_MAX_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4236
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4237
lemma REAL_MIN_LE: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4238
   real_le (real_min x y) z = (real_le x z | real_le y z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4239
  by (import hollight REAL_MIN_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4240
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4241
lemma REAL_MAX_LT: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4242
   real_lt (real_max x y) z = (real_lt x z & real_lt y z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4243
  by (import hollight REAL_MAX_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4244
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4245
lemma REAL_MIN_LT: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4246
   real_lt (real_min x y) z = (real_lt x z | real_lt y z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4247
  by (import hollight REAL_MIN_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4248
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4249
lemma REAL_MAX_ASSOC: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4250
   real_max x (real_max y z) = real_max (real_max x y) z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4251
  by (import hollight REAL_MAX_ASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4252
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4253
lemma REAL_MIN_ASSOC: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4254
   real_min x (real_min y z) = real_min (real_min x y) z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4255
  by (import hollight REAL_MIN_ASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4256
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4257
lemma REAL_MAX_ACI: "real_max (x::hollight.real) (y::hollight.real) = real_max y x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4258
real_max (real_max x y) (z::hollight.real) = real_max x (real_max y z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4259
real_max x (real_max y z) = real_max y (real_max x z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4260
real_max x x = x & real_max x (real_max x y) = real_max x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4261
  by (import hollight REAL_MAX_ACI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4262
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4263
lemma REAL_MIN_ACI: "real_min (x::hollight.real) (y::hollight.real) = real_min y x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4264
real_min (real_min x y) (z::hollight.real) = real_min x (real_min y z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4265
real_min x (real_min y z) = real_min y (real_min x z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4266
real_min x x = x & real_min x (real_min x y) = real_min x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4267
  by (import hollight REAL_MIN_ACI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4268
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4269
lemma REAL_ABS_MUL: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4270
   real_abs (real_mul x y) = real_mul (real_abs x) (real_abs y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4271
  by (import hollight REAL_ABS_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4272
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4273
lemma REAL_POW_LE: "ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4274
   real_le (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4275
   real_le (real_of_num (0::nat)) (real_pow x n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4276
  by (import hollight REAL_POW_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4277
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4278
lemma REAL_POW_LT: "ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4279
   real_lt (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4280
   real_lt (real_of_num (0::nat)) (real_pow x n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4281
  by (import hollight REAL_POW_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4282
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4283
lemma REAL_ABS_POW: "ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4284
   real_abs (real_pow x n) = real_pow (real_abs x) n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4285
  by (import hollight REAL_ABS_POW)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4286
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4287
lemma REAL_LE_LMUL: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4288
   real_le (real_of_num (0::nat)) x & real_le xa xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4289
   real_le (real_mul x xa) (real_mul x xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4290
  by (import hollight REAL_LE_LMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4291
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4292
lemma REAL_LE_RMUL: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4293
   real_le x y & real_le (real_of_num (0::nat)) z -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4294
   real_le (real_mul x z) (real_mul y z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4295
  by (import hollight REAL_LE_RMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4296
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4297
lemma REAL_LT_LMUL: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4298
   real_lt (real_of_num (0::nat)) x & real_lt xa xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4299
   real_lt (real_mul x xa) (real_mul x xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4300
  by (import hollight REAL_LT_LMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4301
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4302
lemma REAL_LT_RMUL: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4303
   real_lt x y & real_lt (real_of_num (0::nat)) z -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4304
   real_lt (real_mul x z) (real_mul y z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4305
  by (import hollight REAL_LT_RMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4306
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4307
lemma REAL_EQ_MUL_LCANCEL: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4308
   (real_mul x y = real_mul x z) = (x = real_of_num (0::nat) | y = z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4309
  by (import hollight REAL_EQ_MUL_LCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4310
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4311
lemma REAL_EQ_MUL_RCANCEL: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4312
   (real_mul x xb = real_mul xa xb) = (x = xa | xb = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4313
  by (import hollight REAL_EQ_MUL_RCANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4314
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4315
lemma REAL_MUL_LINV_UNIQ: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4316
   real_mul x y = real_of_num (NUMERAL_BIT1 (0::nat)) --> real_inv y = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4317
  by (import hollight REAL_MUL_LINV_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4318
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4319
lemma REAL_MUL_RINV_UNIQ: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4320
   real_mul x xa = real_of_num (NUMERAL_BIT1 (0::nat)) --> real_inv x = xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4321
  by (import hollight REAL_MUL_RINV_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4322
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4323
lemma REAL_INV_INV: "ALL x::hollight.real. real_inv (real_inv x) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4324
  by (import hollight REAL_INV_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4325
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4326
lemma REAL_INV_EQ_0: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4327
   (real_inv x = real_of_num (0::nat)) = (x = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4328
  by (import hollight REAL_INV_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4329
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4330
lemma REAL_LT_INV: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4331
   real_lt (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4332
   real_lt (real_of_num (0::nat)) (real_inv x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4333
  by (import hollight REAL_LT_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4334
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4335
lemma REAL_LT_INV_EQ: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4336
   real_lt (real_of_num (0::nat)) (real_inv x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4337
   real_lt (real_of_num (0::nat)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4338
  by (import hollight REAL_LT_INV_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4339
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4340
lemma REAL_INV_NEG: "ALL x::hollight.real. real_inv (real_neg x) = real_neg (real_inv x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4341
  by (import hollight REAL_INV_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4342
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4343
lemma REAL_LE_INV_EQ: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4344
   real_le (real_of_num (0::nat)) (real_inv x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4345
   real_le (real_of_num (0::nat)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4346
  by (import hollight REAL_LE_INV_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4347
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4348
lemma REAL_LE_INV: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4349
   real_le (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4350
   real_le (real_of_num (0::nat)) (real_inv x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4351
  by (import hollight REAL_LE_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4352
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4353
lemma REAL_INV_1: "real_inv (real_of_num (NUMERAL_BIT1 (0::nat))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4354
real_of_num (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4355
  by (import hollight REAL_INV_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4356
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4357
lemma REAL_DIV_1: "ALL x::hollight.real. real_div x (real_of_num (NUMERAL_BIT1 (0::nat))) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4358
  by (import hollight REAL_DIV_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4359
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4360
lemma REAL_DIV_REFL: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4361
   x ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4362
   real_div x x = real_of_num (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4363
  by (import hollight REAL_DIV_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4364
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4365
lemma REAL_DIV_RMUL: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4366
   xa ~= real_of_num (0::nat) --> real_mul (real_div x xa) xa = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4367
  by (import hollight REAL_DIV_RMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4368
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4369
lemma REAL_DIV_LMUL: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4370
   xa ~= real_of_num (0::nat) --> real_mul xa (real_div x xa) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4371
  by (import hollight REAL_DIV_LMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4372
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4373
lemma REAL_ABS_INV: "ALL x::hollight.real. real_abs (real_inv x) = real_inv (real_abs x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4374
  by (import hollight REAL_ABS_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4375
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4376
lemma REAL_ABS_DIV: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4377
   real_abs (real_div x xa) = real_div (real_abs x) (real_abs xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4378
  by (import hollight REAL_ABS_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4379
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4380
lemma REAL_INV_MUL: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4381
   real_inv (real_mul x y) = real_mul (real_inv x) (real_inv y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4382
  by (import hollight REAL_INV_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4383
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4384
lemma REAL_INV_DIV: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4385
   real_inv (real_div x xa) = real_div xa x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4386
  by (import hollight REAL_INV_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4387
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4388
lemma REAL_POW_MUL: "ALL (x::hollight.real) (y::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4389
   real_pow (real_mul x y) n = real_mul (real_pow x n) (real_pow y n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4390
  by (import hollight REAL_POW_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4391
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4392
lemma REAL_POW_INV: "ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4393
   real_pow (real_inv x) n = real_inv (real_pow x n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4394
  by (import hollight REAL_POW_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4395
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4396
lemma REAL_POW_DIV: "ALL (x::hollight.real) (xa::hollight.real) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4397
   real_pow (real_div x xa) xb = real_div (real_pow x xb) (real_pow xa xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4398
  by (import hollight REAL_POW_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4399
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4400
lemma REAL_POW_ADD: "ALL (x::hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4401
   real_pow x (m + n) = real_mul (real_pow x m) (real_pow x n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4402
  by (import hollight REAL_POW_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4403
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4404
lemma REAL_POW_NZ: "ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4405
   x ~= real_of_num (0::nat) --> real_pow x n ~= real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4406
  by (import hollight REAL_POW_NZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4407
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4408
lemma REAL_POW_SUB: "ALL (x::hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4409
   x ~= real_of_num (0::nat) & <= m n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4410
   real_pow x (n - m) = real_div (real_pow x n) (real_pow x m)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4411
  by (import hollight REAL_POW_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4412
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4413
lemma REAL_LT_IMP_NZ: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4414
   real_lt (real_of_num (0::nat)) x --> x ~= real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4415
  by (import hollight REAL_LT_IMP_NZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4416
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4417
lemma REAL_LT_LCANCEL_IMP: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4418
   real_lt (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4419
   real_lt (real_mul x y) (real_mul x z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4420
   real_lt y z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4421
  by (import hollight REAL_LT_LCANCEL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4422
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4423
lemma REAL_LT_RCANCEL_IMP: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4424
   real_lt (real_of_num (0::nat)) xb &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4425
   real_lt (real_mul x xb) (real_mul xa xb) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4426
   real_lt x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4427
  by (import hollight REAL_LT_RCANCEL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4428
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4429
lemma REAL_LE_LCANCEL_IMP: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4430
   real_lt (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4431
   real_le (real_mul x y) (real_mul x z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4432
   real_le y z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4433
  by (import hollight REAL_LE_LCANCEL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4434
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4435
lemma REAL_LE_RCANCEL_IMP: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4436
   real_lt (real_of_num (0::nat)) xb &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4437
   real_le (real_mul x xb) (real_mul xa xb) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4438
   real_le x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4439
  by (import hollight REAL_LE_RCANCEL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4440
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4441
lemma REAL_LE_LMUL_EQ: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4442
   real_lt (real_of_num (0::nat)) z -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4443
   real_le (real_mul z x) (real_mul z y) = real_le x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4444
  by (import hollight REAL_LE_LMUL_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4445
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4446
lemma REAL_LE_RDIV_EQ: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4447
   real_lt (real_of_num (0::nat)) z -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4448
   real_le x (real_div y z) = real_le (real_mul x z) y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4449
  by (import hollight REAL_LE_RDIV_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4450
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4451
lemma REAL_LE_LDIV_EQ: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4452
   real_lt (real_of_num (0::nat)) z -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4453
   real_le (real_div x z) y = real_le x (real_mul y z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4454
  by (import hollight REAL_LE_LDIV_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4455
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4456
lemma REAL_LT_RDIV_EQ: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4457
   real_lt (real_of_num (0::nat)) xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4458
   real_lt x (real_div xa xb) = real_lt (real_mul x xb) xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4459
  by (import hollight REAL_LT_RDIV_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4460
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4461
lemma REAL_LT_LDIV_EQ: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4462
   real_lt (real_of_num (0::nat)) xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4463
   real_lt (real_div x xb) xa = real_lt x (real_mul xa xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4464
  by (import hollight REAL_LT_LDIV_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4465
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4466
lemma REAL_EQ_RDIV_EQ: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4467
   real_lt (real_of_num (0::nat)) xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4468
   (x = real_div xa xb) = (real_mul x xb = xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4469
  by (import hollight REAL_EQ_RDIV_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4470
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4471
lemma REAL_EQ_LDIV_EQ: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4472
   real_lt (real_of_num (0::nat)) xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4473
   (real_div x xb = xa) = (x = real_mul xa xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4474
  by (import hollight REAL_EQ_LDIV_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4475
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4476
lemma REAL_LT_DIV2_EQ: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4477
   real_lt (real_of_num (0::nat)) xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4478
   real_lt (real_div x xb) (real_div xa xb) = real_lt x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4479
  by (import hollight REAL_LT_DIV2_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4480
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4481
lemma REAL_LE_DIV2_EQ: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4482
   real_lt (real_of_num (0::nat)) xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4483
   real_le (real_div x xb) (real_div xa xb) = real_le x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4484
  by (import hollight REAL_LE_DIV2_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4485
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4486
lemma REAL_MUL_2: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4487
   real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4488
   real_add x x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4489
  by (import hollight REAL_MUL_2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4490
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4491
lemma REAL_POW_EQ_0: "ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4492
   (real_pow x n = real_of_num (0::nat)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4493
   (x = real_of_num (0::nat) & n ~= (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4494
  by (import hollight REAL_POW_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4495
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4496
lemma REAL_LE_MUL2: "ALL (w::hollight.real) (x::hollight.real) (y::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4497
   z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4498
   real_le (real_of_num (0::nat)) w &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4499
   real_le w x & real_le (real_of_num (0::nat)) y & real_le y z -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4500
   real_le (real_mul w y) (real_mul x z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4501
  by (import hollight REAL_LE_MUL2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4502
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4503
lemma REAL_LT_MUL2: "ALL (w::hollight.real) (x::hollight.real) (y::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4504
   z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4505
   real_le (real_of_num (0::nat)) w &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4506
   real_lt w x & real_le (real_of_num (0::nat)) y & real_lt y z -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4507
   real_lt (real_mul w y) (real_mul x z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4508
  by (import hollight REAL_LT_MUL2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4509
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4510
lemma REAL_LT_SQUARE: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4511
   real_lt (real_of_num (0::nat)) (real_mul x x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4512
   (x ~= real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4513
  by (import hollight REAL_LT_SQUARE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4514
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4515
lemma REAL_INV_LE_1: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4516
   real_le (real_of_num (NUMERAL_BIT1 (0::nat))) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4517
   real_le (real_inv x) (real_of_num (NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4518
  by (import hollight REAL_INV_LE_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4519
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4520
lemma REAL_POW_LE_1: "ALL (n::nat) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4521
   real_le (real_of_num (NUMERAL_BIT1 (0::nat))) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4522
   real_le (real_of_num (NUMERAL_BIT1 (0::nat))) (real_pow x n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4523
  by (import hollight REAL_POW_LE_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4524
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4525
lemma REAL_POW_1_LE: "ALL (n::nat) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4526
   real_le (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4527
   real_le x (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4528
   real_le (real_pow x n) (real_of_num (NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4529
  by (import hollight REAL_POW_1_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4530
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4531
lemma REAL_POW_1: "ALL x::hollight.real. real_pow x (NUMERAL_BIT1 (0::nat)) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4532
  by (import hollight REAL_POW_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4533
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4534
lemma REAL_POW_ONE: "ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4535
   real_pow (real_of_num (NUMERAL_BIT1 (0::nat))) n =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4536
   real_of_num (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4537
  by (import hollight REAL_POW_ONE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4538
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4539
lemma REAL_LT_INV2: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4540
   real_lt (real_of_num (0::nat)) x & real_lt x y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4541
   real_lt (real_inv y) (real_inv x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4542
  by (import hollight REAL_LT_INV2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4543
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4544
lemma REAL_LE_INV2: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4545
   real_lt (real_of_num (0::nat)) x & real_le x y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4546
   real_le (real_inv y) (real_inv x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4547
  by (import hollight REAL_LE_INV2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4548
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4549
lemma REAL_INV_1_LE: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4550
   real_lt (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4551
   real_le x (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4552
   real_le (real_of_num (NUMERAL_BIT1 (0::nat))) (real_inv x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4553
  by (import hollight REAL_INV_1_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4554
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4555
lemma REAL_SUB_INV: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4556
   x ~= real_of_num (0::nat) & xa ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4557
   real_sub (real_inv x) (real_inv xa) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4558
   real_div (real_sub xa x) (real_mul x xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4559
  by (import hollight REAL_SUB_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4560
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4561
lemma REAL_DOWN: "ALL d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4562
   real_lt (real_of_num (0::nat)) d -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4563
   (EX x::hollight.real. real_lt (real_of_num (0::nat)) x & real_lt x d)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4564
  by (import hollight REAL_DOWN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4565
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4566
lemma REAL_DOWN2: "ALL (d1::hollight.real) d2::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4567
   real_lt (real_of_num (0::nat)) d1 & real_lt (real_of_num (0::nat)) d2 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4568
   (EX e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4569
       real_lt (real_of_num (0::nat)) e & real_lt e d1 & real_lt e d2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4570
  by (import hollight REAL_DOWN2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4571
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4572
lemma REAL_POW_LE2: "ALL (n::nat) (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4573
   real_le (real_of_num (0::nat)) x & real_le x y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4574
   real_le (real_pow x n) (real_pow y n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4575
  by (import hollight REAL_POW_LE2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4576
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4577
lemma REAL_POW_MONO: "ALL (m::nat) (n::nat) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4578
   real_le (real_of_num (NUMERAL_BIT1 (0::nat))) x & <= m n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4579
   real_le (real_pow x m) (real_pow x n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4580
  by (import hollight REAL_POW_MONO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4581
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4582
lemma REAL_POW_LT2: "ALL (n::nat) (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4583
   n ~= (0::nat) & real_le (real_of_num (0::nat)) x & real_lt x y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4584
   real_lt (real_pow x n) (real_pow y n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4585
  by (import hollight REAL_POW_LT2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4586
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4587
lemma REAL_POW_MONO_LT: "ALL (m::nat) (n::nat) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4588
   real_lt (real_of_num (NUMERAL_BIT1 (0::nat))) x & < m n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4589
   real_lt (real_pow x m) (real_pow x n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4590
  by (import hollight REAL_POW_MONO_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4591
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4592
lemma REAL_POW_POW: "ALL (x::hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4593
   real_pow (real_pow x m) n = real_pow x (m * n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4594
  by (import hollight REAL_POW_POW)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4595
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4596
lemma REAL_EQ_RCANCEL_IMP: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4597
   z ~= real_of_num (0::nat) & real_mul x z = real_mul y z --> x = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4598
  by (import hollight REAL_EQ_RCANCEL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4599
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4600
lemma REAL_EQ_LCANCEL_IMP: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4601
   xb ~= real_of_num (0::nat) & real_mul xb x = real_mul xb xa --> x = xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4602
  by (import hollight REAL_EQ_LCANCEL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4603
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4604
lemma REAL_LT_DIV: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4605
   real_lt (real_of_num (0::nat)) x & real_lt (real_of_num (0::nat)) xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4606
   real_lt (real_of_num (0::nat)) (real_div x xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4607
  by (import hollight REAL_LT_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4608
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4609
lemma REAL_LE_DIV: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4610
   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4611
   real_le (real_of_num (0::nat)) (real_div x xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4612
  by (import hollight REAL_LE_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4613
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4614
lemma REAL_DIV_POW2: "ALL (x::hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4615
   x ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4616
   real_div (real_pow x m) (real_pow x n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4617
   COND (<= n m) (real_pow x (m - n)) (real_inv (real_pow x (n - m)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4618
  by (import hollight REAL_DIV_POW2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4619
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4620
lemma REAL_DIV_POW2_ALT: "ALL (x::hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4621
   x ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4622
   real_div (real_pow x m) (real_pow x n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4623
   COND (< n m) (real_pow x (m - n)) (real_inv (real_pow x (n - m)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4624
  by (import hollight REAL_DIV_POW2_ALT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4625
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4626
lemma REAL_LT_POW2: "ALL x::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4627
   real_lt (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4628
    (real_pow (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4629
  by (import hollight REAL_LT_POW2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4630
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4631
lemma REAL_LE_POW2: "ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4632
   real_le (real_of_num (NUMERAL_BIT1 (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4633
    (real_pow (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4634
  by (import hollight REAL_LE_POW2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4635
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4636
lemma REAL_POW2_ABS: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4637
   real_pow (real_abs x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4638
   real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4639
  by (import hollight REAL_POW2_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4640
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4641
lemma REAL_LE_SQUARE_ABS: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4642
   real_le (real_abs x) (real_abs y) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4643
   real_le (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4644
    (real_pow y (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4645
  by (import hollight REAL_LE_SQUARE_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4646
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4647
lemma REAL_WLOG_LE: "(ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4648
    (P::hollight.real => hollight.real => bool) x y = P y x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4649
(ALL (x::hollight.real) y::hollight.real. real_le x y --> P x y) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4650
(ALL x::hollight.real. All (P x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4651
  by (import hollight REAL_WLOG_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4652
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4653
lemma REAL_WLOG_LT: "(ALL x::hollight.real. (P::hollight.real => hollight.real => bool) x x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4654
(ALL (x::hollight.real) y::hollight.real. P x y = P y x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4655
(ALL (x::hollight.real) y::hollight.real. real_lt x y --> P x y) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4656
(ALL x::hollight.real. All (P x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4657
  by (import hollight REAL_WLOG_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4658
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4659
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4660
  mod_real :: "hollight.real => hollight.real => hollight.real => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4661
  "mod_real ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4662
%(u::hollight.real) (ua::hollight.real) ub::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4663
   EX q::hollight.real. real_sub ua ub = real_mul q u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4664
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4665
lemma DEF_mod_real: "mod_real =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4666
(%(u::hollight.real) (ua::hollight.real) ub::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4667
    EX q::hollight.real. real_sub ua ub = real_mul q u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4668
  by (import hollight DEF_mod_real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4669
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4670
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4671
  DECIMAL :: "nat => nat => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4672
  "DECIMAL == %(u::nat) ua::nat. real_div (real_of_num u) (real_of_num ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4673
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4674
lemma DEF_DECIMAL: "DECIMAL = (%(u::nat) ua::nat. real_div (real_of_num u) (real_of_num ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4675
  by (import hollight DEF_DECIMAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4676
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4677
lemma RAT_LEMMA1: "(y1::hollight.real) ~= real_of_num (0::nat) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4678
(y2::hollight.real) ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4679
real_add (real_div (x1::hollight.real) y1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4680
 (real_div (x2::hollight.real) y2) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4681
real_mul (real_add (real_mul x1 y2) (real_mul x2 y1))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4682
 (real_mul (real_inv y1) (real_inv y2))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4683
  by (import hollight RAT_LEMMA1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4684
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4685
lemma RAT_LEMMA2: "real_lt (real_of_num (0::nat)) (y1::hollight.real) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4686
real_lt (real_of_num (0::nat)) (y2::hollight.real) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4687
real_add (real_div (x1::hollight.real) y1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4688
 (real_div (x2::hollight.real) y2) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4689
real_mul (real_add (real_mul x1 y2) (real_mul x2 y1))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4690
 (real_mul (real_inv y1) (real_inv y2))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4691
  by (import hollight RAT_LEMMA2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4692
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4693
lemma RAT_LEMMA3: "real_lt (real_of_num (0::nat)) (y1::hollight.real) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4694
real_lt (real_of_num (0::nat)) (y2::hollight.real) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4695
real_sub (real_div (x1::hollight.real) y1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4696
 (real_div (x2::hollight.real) y2) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4697
real_mul (real_sub (real_mul x1 y2) (real_mul x2 y1))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4698
 (real_mul (real_inv y1) (real_inv y2))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4699
  by (import hollight RAT_LEMMA3)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4700
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4701
lemma RAT_LEMMA4: "real_lt (real_of_num (0::nat)) (y1::hollight.real) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4702
real_lt (real_of_num (0::nat)) (y2::hollight.real) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4703
real_le (real_div (x1::hollight.real) y1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4704
 (real_div (x2::hollight.real) y2) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4705
real_le (real_mul x1 y2) (real_mul x2 y1)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4706
  by (import hollight RAT_LEMMA4)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4707
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4708
lemma RAT_LEMMA5: "real_lt (real_of_num (0::nat)) (y1::hollight.real) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4709
real_lt (real_of_num (0::nat)) (y2::hollight.real) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4710
(real_div (x1::hollight.real) y1 = real_div (x2::hollight.real) y2) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4711
(real_mul x1 y2 = real_mul x2 y1)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4712
  by (import hollight RAT_LEMMA5)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4713
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4714
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4715
  is_int :: "hollight.real => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4716
  "is_int ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4717
%u::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4718
   EX n::nat. u = real_of_num n | u = real_neg (real_of_num n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4719
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4720
lemma DEF_is_int: "is_int =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4721
(%u::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4722
    EX n::nat. u = real_of_num n | u = real_neg (real_of_num n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4723
  by (import hollight DEF_is_int)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4724
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4725
typedef (open) int = "Collect is_int"  morphisms "dest_int" "mk_int"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4726
  apply (rule light_ex_imp_nonempty[where t="real_of_num (NUMERAL (0::nat))"])
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4727
  by (import hollight TYDEF_int)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4728
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4729
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4730
  dest_int :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4731
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4732
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4733
  mk_int :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4734
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4735
lemmas "TYDEF_int_@intern" = typedef_hol2hollight 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4736
  [where a="a :: hollight.int" and r=r ,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4737
   OF type_definition_int]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4738
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4739
lemma dest_int_rep: "ALL x::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4740
   EX n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4741
      dest_int x = real_of_num n | dest_int x = real_neg (real_of_num n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4742
  by (import hollight dest_int_rep)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4743
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4744
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4745
  int_le :: "hollight.int => hollight.int => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4746
  "int_le ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4747
%(u::hollight.int) ua::hollight.int. real_le (dest_int u) (dest_int ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4748
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4749
lemma DEF_int_le: "int_le =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4750
(%(u::hollight.int) ua::hollight.int. real_le (dest_int u) (dest_int ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4751
  by (import hollight DEF_int_le)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4752
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4753
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4754
  int_lt :: "hollight.int => hollight.int => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4755
  "int_lt ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4756
%(u::hollight.int) ua::hollight.int. real_lt (dest_int u) (dest_int ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4757
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4758
lemma DEF_int_lt: "int_lt =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4759
(%(u::hollight.int) ua::hollight.int. real_lt (dest_int u) (dest_int ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4760
  by (import hollight DEF_int_lt)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4761
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4762
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4763
  int_ge :: "hollight.int => hollight.int => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4764
  "int_ge ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4765
%(u::hollight.int) ua::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4766
   hollight.real_ge (dest_int u) (dest_int ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4767
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4768
lemma DEF_int_ge: "int_ge =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4769
(%(u::hollight.int) ua::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4770
    hollight.real_ge (dest_int u) (dest_int ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4771
  by (import hollight DEF_int_ge)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4772
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4773
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4774
  int_gt :: "hollight.int => hollight.int => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4775
  "int_gt ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4776
%(u::hollight.int) ua::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4777
   hollight.real_gt (dest_int u) (dest_int ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4778
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4779
lemma DEF_int_gt: "int_gt =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4780
(%(u::hollight.int) ua::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4781
    hollight.real_gt (dest_int u) (dest_int ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4782
  by (import hollight DEF_int_gt)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4783
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4784
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4785
  int_of_num :: "nat => hollight.int" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4786
  "int_of_num == %u::nat. mk_int (real_of_num u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4787
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4788
lemma DEF_int_of_num: "int_of_num = (%u::nat. mk_int (real_of_num u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4789
  by (import hollight DEF_int_of_num)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4790
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4791
lemma int_of_num_th: "ALL x::nat. dest_int (int_of_num x) = real_of_num x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4792
  by (import hollight int_of_num_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4793
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4794
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4795
  int_neg :: "hollight.int => hollight.int" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4796
  "int_neg == %u::hollight.int. mk_int (real_neg (dest_int u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4797
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4798
lemma DEF_int_neg: "int_neg = (%u::hollight.int. mk_int (real_neg (dest_int u)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4799
  by (import hollight DEF_int_neg)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4800
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4801
lemma int_neg_th: "ALL x::hollight.int. dest_int (int_neg x) = real_neg (dest_int x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4802
  by (import hollight int_neg_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4803
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4804
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4805
  int_add :: "hollight.int => hollight.int => hollight.int" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4806
  "int_add ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4807
%(u::hollight.int) ua::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4808
   mk_int (real_add (dest_int u) (dest_int ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4809
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4810
lemma DEF_int_add: "int_add =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4811
(%(u::hollight.int) ua::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4812
    mk_int (real_add (dest_int u) (dest_int ua)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4813
  by (import hollight DEF_int_add)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4814
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4815
lemma int_add_th: "ALL (x::hollight.int) xa::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4816
   dest_int (int_add x xa) = real_add (dest_int x) (dest_int xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4817
  by (import hollight int_add_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4818
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4819
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4820
  int_sub :: "hollight.int => hollight.int => hollight.int" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4821
  "int_sub ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4822
%(u::hollight.int) ua::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4823
   mk_int (real_sub (dest_int u) (dest_int ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4824
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4825
lemma DEF_int_sub: "int_sub =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4826
(%(u::hollight.int) ua::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4827
    mk_int (real_sub (dest_int u) (dest_int ua)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4828
  by (import hollight DEF_int_sub)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4829
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4830
lemma int_sub_th: "ALL (x::hollight.int) xa::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4831
   dest_int (int_sub x xa) = real_sub (dest_int x) (dest_int xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4832
  by (import hollight int_sub_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4833
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4834
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4835
  int_mul :: "hollight.int => hollight.int => hollight.int" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4836
  "int_mul ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4837
%(u::hollight.int) ua::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4838
   mk_int (real_mul (dest_int u) (dest_int ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4839
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4840
lemma DEF_int_mul: "int_mul =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4841
(%(u::hollight.int) ua::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4842
    mk_int (real_mul (dest_int u) (dest_int ua)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4843
  by (import hollight DEF_int_mul)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4844
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4845
lemma int_mul_th: "ALL (x::hollight.int) y::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4846
   dest_int (int_mul x y) = real_mul (dest_int x) (dest_int y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4847
  by (import hollight int_mul_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4848
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4849
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4850
  int_abs :: "hollight.int => hollight.int" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4851
  "int_abs == %u::hollight.int. mk_int (real_abs (dest_int u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4852
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4853
lemma DEF_int_abs: "int_abs = (%u::hollight.int. mk_int (real_abs (dest_int u)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4854
  by (import hollight DEF_int_abs)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4855
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4856
lemma int_abs_th: "ALL x::hollight.int. dest_int (int_abs x) = real_abs (dest_int x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4857
  by (import hollight int_abs_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4858
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4859
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4860
  int_max :: "hollight.int => hollight.int => hollight.int" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4861
  "int_max ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4862
%(u::hollight.int) ua::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4863
   mk_int (real_max (dest_int u) (dest_int ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4864
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4865
lemma DEF_int_max: "int_max =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4866
(%(u::hollight.int) ua::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4867
    mk_int (real_max (dest_int u) (dest_int ua)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4868
  by (import hollight DEF_int_max)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4869
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4870
lemma int_max_th: "ALL (x::hollight.int) y::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4871
   dest_int (int_max x y) = real_max (dest_int x) (dest_int y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4872
  by (import hollight int_max_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4873
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4874
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4875
  int_min :: "hollight.int => hollight.int => hollight.int" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4876
  "int_min ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4877
%(u::hollight.int) ua::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4878
   mk_int (real_min (dest_int u) (dest_int ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4879
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4880
lemma DEF_int_min: "int_min =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4881
(%(u::hollight.int) ua::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4882
    mk_int (real_min (dest_int u) (dest_int ua)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4883
  by (import hollight DEF_int_min)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4884
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4885
lemma int_min_th: "ALL (x::hollight.int) y::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4886
   dest_int (int_min x y) = real_min (dest_int x) (dest_int y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4887
  by (import hollight int_min_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4888
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4889
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4890
  int_pow :: "hollight.int => nat => hollight.int" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4891
  "int_pow == %(u::hollight.int) ua::nat. mk_int (real_pow (dest_int u) ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4892
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4893
lemma DEF_int_pow: "int_pow = (%(u::hollight.int) ua::nat. mk_int (real_pow (dest_int u) ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4894
  by (import hollight DEF_int_pow)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4895
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4896
lemma int_pow_th: "ALL (x::hollight.int) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4897
   dest_int (int_pow x xa) = real_pow (dest_int x) xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4898
  by (import hollight int_pow_th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4899
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4900
lemma INT_IMAGE: "ALL x::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4901
   (EX n::nat. x = int_of_num n) | (EX n::nat. x = int_neg (int_of_num n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4902
  by (import hollight INT_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4903
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4904
lemma INT_LT_DISCRETE: "ALL (x::hollight.int) y::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4905
   int_lt x y = int_le (int_add x (int_of_num (NUMERAL_BIT1 (0::nat)))) y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4906
  by (import hollight INT_LT_DISCRETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4907
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4908
lemma INT_GT_DISCRETE: "ALL (x::hollight.int) xa::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4909
   int_gt x xa = int_ge x (int_add xa (int_of_num (NUMERAL_BIT1 (0::nat))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4910
  by (import hollight INT_GT_DISCRETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4911
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4912
lemma INT_FORALL_POS: "(ALL n::nat. (P::hollight.int => bool) (int_of_num n)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4913
(ALL i::hollight.int. int_le (int_of_num (0::nat)) i --> P i)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4914
  by (import hollight INT_FORALL_POS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4915
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4916
lemma INT_ABS_MUL_1: "ALL (x::hollight.int) y::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4917
   (int_abs (int_mul x y) = int_of_num (NUMERAL_BIT1 (0::nat))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4918
   (int_abs x = int_of_num (NUMERAL_BIT1 (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4919
    int_abs y = int_of_num (NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4920
  by (import hollight INT_ABS_MUL_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4921
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4922
lemma INT_POW: "int_pow (x::hollight.int) (0::nat) = int_of_num (NUMERAL_BIT1 (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4923
(ALL xa::nat. int_pow x (Suc xa) = int_mul x (int_pow x xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4924
  by (import hollight INT_POW)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4925
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4926
lemma INT_ABS: "ALL x::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4927
   int_abs x = COND (int_le (int_of_num (0::nat)) x) x (int_neg x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4928
  by (import hollight INT_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4929
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4930
lemma INT_GE: "ALL (x::hollight.int) xa::hollight.int. int_ge x xa = int_le xa x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4931
  by (import hollight INT_GE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4932
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4933
lemma INT_GT: "ALL (x::hollight.int) xa::hollight.int. int_gt x xa = int_lt xa x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4934
  by (import hollight INT_GT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4935
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4936
lemma INT_LT: "ALL (x::hollight.int) xa::hollight.int. int_lt x xa = (~ int_le xa x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4937
  by (import hollight INT_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4938
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4939
lemma INT_ARCH: "ALL (x::hollight.int) d::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4940
   d ~= int_of_num (0::nat) --> (EX c::hollight.int. int_lt x (int_mul c d))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4941
  by (import hollight INT_ARCH)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4942
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4943
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4944
  mod_int :: "hollight.int => hollight.int => hollight.int => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4945
  "mod_int ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4946
%(u::hollight.int) (ua::hollight.int) ub::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4947
   EX q::hollight.int. int_sub ua ub = int_mul q u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4948
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4949
lemma DEF_mod_int: "mod_int =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4950
(%(u::hollight.int) (ua::hollight.int) ub::hollight.int.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4951
    EX q::hollight.int. int_sub ua ub = int_mul q u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4952
  by (import hollight DEF_mod_int)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4953
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4954
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4955
  IN :: "'A::type => ('A::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4956
  "IN == %(u::'A::type) ua::'A::type => bool. ua u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4957
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4958
lemma DEF_IN: "IN = (%(u::'A::type) ua::'A::type => bool. ua u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4959
  by (import hollight DEF_IN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4960
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4961
lemma EXTENSION: "ALL (x::'A::type => bool) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4962
   (x = xa) = (ALL xb::'A::type. IN xb x = IN xb xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4963
  by (import hollight EXTENSION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4964
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4965
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4966
  GSPEC :: "('A::type => bool) => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4967
  "GSPEC == %u::'A::type => bool. u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4968
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4969
lemma DEF_GSPEC: "GSPEC = (%u::'A::type => bool. u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4970
  by (import hollight DEF_GSPEC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4971
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4972
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4973
  SETSPEC :: "'q_36941::type => bool => 'q_36941::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4974
  "SETSPEC == %(u::'q_36941::type) (ua::bool) ub::'q_36941::type. ua & u = ub"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4975
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4976
lemma DEF_SETSPEC: "SETSPEC = (%(u::'q_36941::type) (ua::bool) ub::'q_36941::type. ua & u = ub)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4977
  by (import hollight DEF_SETSPEC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4978
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4979
lemma IN_ELIM_THM: "(ALL (P::(bool => 'q_36974::type => bool) => bool) x::'q_36974::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4980
    IN x (GSPEC (%v::'q_36974::type. P (SETSPEC v))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4981
    P (%(p::bool) t::'q_36974::type. p & x = t)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4982
(ALL (p::'q_37005::type => bool) x::'q_37005::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4983
    IN x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4984
     (GSPEC (%v::'q_37005::type. EX y::'q_37005::type. SETSPEC v (p y) y)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4985
    p x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4986
(ALL (P::(bool => 'q_37033::type => bool) => bool) x::'q_37033::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4987
    GSPEC (%v::'q_37033::type. P (SETSPEC v)) x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4988
    P (%(p::bool) t::'q_37033::type. p & x = t)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4989
(ALL (p::'q_37062::type => bool) x::'q_37062::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4990
    GSPEC (%v::'q_37062::type. EX y::'q_37062::type. SETSPEC v (p y) y) x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4991
    p x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4992
(ALL (p::'q_37079::type => bool) x::'q_37079::type. IN x p = p x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4993
  by (import hollight IN_ELIM_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4994
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4995
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4996
  EMPTY :: "'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4997
  "EMPTY == %x::'A::type. False"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4998
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  4999
lemma DEF_EMPTY: "EMPTY = (%x::'A::type. False)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5000
  by (import hollight DEF_EMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5001
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5002
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5003
  INSERT :: "'A::type => ('A::type => bool) => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5004
  "INSERT == %(u::'A::type) (ua::'A::type => bool) y::'A::type. IN y ua | y = u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5005
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5006
lemma DEF_INSERT: "INSERT =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5007
(%(u::'A::type) (ua::'A::type => bool) y::'A::type. IN y ua | y = u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5008
  by (import hollight DEF_INSERT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5009
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5010
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5011
  UNIV :: "'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5012
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5013
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5014
  UNIV_def: "hollight.UNIV == %x::'A::type. True"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5015
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5016
lemma DEF_UNIV: "hollight.UNIV = (%x::'A::type. True)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5017
  by (import hollight DEF_UNIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5018
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5019
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5020
  UNION :: "('A::type => bool) => ('A::type => bool) => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5021
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5022
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5023
  UNION_def: "hollight.UNION ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5024
%(u::'A::type => bool) ua::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5025
   GSPEC (%ub::'A::type. EX x::'A::type. SETSPEC ub (IN x u | IN x ua) x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5026
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5027
lemma DEF_UNION: "hollight.UNION =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5028
(%(u::'A::type => bool) ua::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5029
    GSPEC (%ub::'A::type. EX x::'A::type. SETSPEC ub (IN x u | IN x ua) x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5030
  by (import hollight DEF_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5031
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5032
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5033
  UNIONS :: "(('A::type => bool) => bool) => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5034
  "UNIONS ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5035
%u::('A::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5036
   GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5037
    (%ua::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5038
        EX x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5039
           SETSPEC ua (EX ua::'A::type => bool. IN ua u & IN x ua) x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5040
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5041
lemma DEF_UNIONS: "UNIONS =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5042
(%u::('A::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5043
    GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5044
     (%ua::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5045
         EX x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5046
            SETSPEC ua (EX ua::'A::type => bool. IN ua u & IN x ua) x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5047
  by (import hollight DEF_UNIONS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5048
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5049
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5050
  INTER :: "('A::type => bool) => ('A::type => bool) => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5051
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5052
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5053
  INTER_def: "hollight.INTER ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5054
%(u::'A::type => bool) ua::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5055
   GSPEC (%ub::'A::type. EX x::'A::type. SETSPEC ub (IN x u & IN x ua) x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5056
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5057
lemma DEF_INTER: "hollight.INTER =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5058
(%(u::'A::type => bool) ua::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5059
    GSPEC (%ub::'A::type. EX x::'A::type. SETSPEC ub (IN x u & IN x ua) x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5060
  by (import hollight DEF_INTER)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5061
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5062
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5063
  INTERS :: "(('A::type => bool) => bool) => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5064
  "INTERS ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5065
%u::('A::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5066
   GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5067
    (%ua::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5068
        EX x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5069
           SETSPEC ua (ALL ua::'A::type => bool. IN ua u --> IN x ua) x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5070
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5071
lemma DEF_INTERS: "INTERS =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5072
(%u::('A::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5073
    GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5074
     (%ua::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5075
         EX x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5076
            SETSPEC ua (ALL ua::'A::type => bool. IN ua u --> IN x ua) x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5077
  by (import hollight DEF_INTERS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5078
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5079
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5080
  DIFF :: "('A::type => bool) => ('A::type => bool) => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5081
  "DIFF ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5082
%(u::'A::type => bool) ua::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5083
   GSPEC (%ub::'A::type. EX x::'A::type. SETSPEC ub (IN x u & ~ IN x ua) x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5084
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5085
lemma DEF_DIFF: "DIFF =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5086
(%(u::'A::type => bool) ua::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5087
    GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5088
     (%ub::'A::type. EX x::'A::type. SETSPEC ub (IN x u & ~ IN x ua) x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5089
  by (import hollight DEF_DIFF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5090
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5091
lemma INSERT: "INSERT (x::'A::type) (s::'A::type => bool) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5092
GSPEC (%u::'A::type. EX y::'A::type. SETSPEC u (IN y s | y = x) y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5093
  by (import hollight INSERT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5094
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5095
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5096
  DELETE :: "('A::type => bool) => 'A::type => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5097
  "DELETE ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5098
%(u::'A::type => bool) ua::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5099
   GSPEC (%ub::'A::type. EX y::'A::type. SETSPEC ub (IN y u & y ~= ua) y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5100
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5101
lemma DEF_DELETE: "DELETE =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5102
(%(u::'A::type => bool) ua::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5103
    GSPEC (%ub::'A::type. EX y::'A::type. SETSPEC ub (IN y u & y ~= ua) y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5104
  by (import hollight DEF_DELETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5105
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5106
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5107
  SUBSET :: "('A::type => bool) => ('A::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5108
  "SUBSET ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5109
%(u::'A::type => bool) ua::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5110
   ALL x::'A::type. IN x u --> IN x ua"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5111
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5112
lemma DEF_SUBSET: "SUBSET =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5113
(%(u::'A::type => bool) ua::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5114
    ALL x::'A::type. IN x u --> IN x ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5115
  by (import hollight DEF_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5116
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5117
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5118
  PSUBSET :: "('A::type => bool) => ('A::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5119
  "PSUBSET ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5120
%(u::'A::type => bool) ua::'A::type => bool. SUBSET u ua & u ~= ua"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5121
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5122
lemma DEF_PSUBSET: "PSUBSET =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5123
(%(u::'A::type => bool) ua::'A::type => bool. SUBSET u ua & u ~= ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5124
  by (import hollight DEF_PSUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5125
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5126
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5127
  DISJOINT :: "('A::type => bool) => ('A::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5128
  "DISJOINT ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5129
%(u::'A::type => bool) ua::'A::type => bool. hollight.INTER u ua = EMPTY"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5130
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5131
lemma DEF_DISJOINT: "DISJOINT =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5132
(%(u::'A::type => bool) ua::'A::type => bool. hollight.INTER u ua = EMPTY)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5133
  by (import hollight DEF_DISJOINT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5134
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5135
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5136
  SING :: "('A::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5137
  "SING == %u::'A::type => bool. EX x::'A::type. u = INSERT x EMPTY"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5138
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5139
lemma DEF_SING: "SING = (%u::'A::type => bool. EX x::'A::type. u = INSERT x EMPTY)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5140
  by (import hollight DEF_SING)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5141
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5142
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5143
  FINITE :: "('A::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5144
  "FINITE ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5145
%a::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5146
   ALL FINITE'::('A::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5147
      (ALL a::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5148
          a = EMPTY |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5149
          (EX (x::'A::type) s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5150
              a = INSERT x s & FINITE' s) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5151
          FINITE' a) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5152
      FINITE' a"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5153
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5154
lemma DEF_FINITE: "FINITE =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5155
(%a::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5156
    ALL FINITE'::('A::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5157
       (ALL a::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5158
           a = EMPTY |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5159
           (EX (x::'A::type) s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5160
               a = INSERT x s & FINITE' s) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5161
           FINITE' a) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5162
       FINITE' a)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5163
  by (import hollight DEF_FINITE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5164
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5165
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5166
  INFINITE :: "('A::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5167
  "INFINITE == %u::'A::type => bool. ~ FINITE u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5168
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5169
lemma DEF_INFINITE: "INFINITE = (%u::'A::type => bool. ~ FINITE u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5170
  by (import hollight DEF_INFINITE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5171
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5172
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5173
  IMAGE :: "('A::type => 'B::type) => ('A::type => bool) => 'B::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5174
  "IMAGE ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5175
%(u::'A::type => 'B::type) ua::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5176
   GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5177
    (%ub::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5178
        EX y::'B::type. SETSPEC ub (EX x::'A::type. IN x ua & y = u x) y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5179
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5180
lemma DEF_IMAGE: "IMAGE =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5181
(%(u::'A::type => 'B::type) ua::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5182
    GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5183
     (%ub::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5184
         EX y::'B::type. SETSPEC ub (EX x::'A::type. IN x ua & y = u x) y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5185
  by (import hollight DEF_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5186
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5187
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5188
  INJ :: "('A::type => 'B::type) => ('A::type => bool) => ('B::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5189
  "INJ ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5190
%(u::'A::type => 'B::type) (ua::'A::type => bool) ub::'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5191
   (ALL x::'A::type. IN x ua --> IN (u x) ub) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5192
   (ALL (x::'A::type) y::'A::type. IN x ua & IN y ua & u x = u y --> x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5193
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5194
lemma DEF_INJ: "INJ =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5195
(%(u::'A::type => 'B::type) (ua::'A::type => bool) ub::'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5196
    (ALL x::'A::type. IN x ua --> IN (u x) ub) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5197
    (ALL (x::'A::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5198
        IN x ua & IN y ua & u x = u y --> x = y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5199
  by (import hollight DEF_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5200
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5201
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5202
  SURJ :: "('A::type => 'B::type) => ('A::type => bool) => ('B::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5203
  "SURJ ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5204
%(u::'A::type => 'B::type) (ua::'A::type => bool) ub::'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5205
   (ALL x::'A::type. IN x ua --> IN (u x) ub) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5206
   (ALL x::'B::type. IN x ub --> (EX y::'A::type. IN y ua & u y = x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5207
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5208
lemma DEF_SURJ: "SURJ =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5209
(%(u::'A::type => 'B::type) (ua::'A::type => bool) ub::'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5210
    (ALL x::'A::type. IN x ua --> IN (u x) ub) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5211
    (ALL x::'B::type. IN x ub --> (EX y::'A::type. IN y ua & u y = x)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5212
  by (import hollight DEF_SURJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5213
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5214
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5215
  BIJ :: "('A::type => 'B::type) => ('A::type => bool) => ('B::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5216
  "BIJ ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5217
%(u::'A::type => 'B::type) (ua::'A::type => bool) ub::'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5218
   INJ u ua ub & SURJ u ua ub"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5219
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5220
lemma DEF_BIJ: "BIJ =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5221
(%(u::'A::type => 'B::type) (ua::'A::type => bool) ub::'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5222
    INJ u ua ub & SURJ u ua ub)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5223
  by (import hollight DEF_BIJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5224
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5225
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5226
  CHOICE :: "('A::type => bool) => 'A::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5227
  "CHOICE == %u::'A::type => bool. SOME x::'A::type. IN x u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5228
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5229
lemma DEF_CHOICE: "CHOICE = (%u::'A::type => bool. SOME x::'A::type. IN x u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5230
  by (import hollight DEF_CHOICE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5231
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5232
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5233
  REST :: "('A::type => bool) => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5234
  "REST == %u::'A::type => bool. DELETE u (CHOICE u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5235
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5236
lemma DEF_REST: "REST = (%u::'A::type => bool. DELETE u (CHOICE u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5237
  by (import hollight DEF_REST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5238
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5239
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5240
  CARD_GE :: "('q_37578::type => bool) => ('q_37575::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5241
  "CARD_GE ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5242
%(u::'q_37578::type => bool) ua::'q_37575::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5243
   EX f::'q_37578::type => 'q_37575::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5244
      ALL y::'q_37575::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5245
         IN y ua --> (EX x::'q_37578::type. IN x u & y = f x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5246
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5247
lemma DEF_CARD_GE: "CARD_GE =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5248
(%(u::'q_37578::type => bool) ua::'q_37575::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5249
    EX f::'q_37578::type => 'q_37575::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5250
       ALL y::'q_37575::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5251
          IN y ua --> (EX x::'q_37578::type. IN x u & y = f x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5252
  by (import hollight DEF_CARD_GE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5253
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5254
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5255
  CARD_LE :: "('q_37587::type => bool) => ('q_37586::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5256
  "CARD_LE ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5257
%(u::'q_37587::type => bool) ua::'q_37586::type => bool. CARD_GE ua u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5258
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5259
lemma DEF_CARD_LE: "CARD_LE =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5260
(%(u::'q_37587::type => bool) ua::'q_37586::type => bool. CARD_GE ua u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5261
  by (import hollight DEF_CARD_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5262
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5263
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5264
  CARD_EQ :: "('q_37597::type => bool) => ('q_37598::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5265
  "CARD_EQ ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5266
%(u::'q_37597::type => bool) ua::'q_37598::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5267
   CARD_LE u ua & CARD_LE ua u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5268
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5269
lemma DEF_CARD_EQ: "CARD_EQ =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5270
(%(u::'q_37597::type => bool) ua::'q_37598::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5271
    CARD_LE u ua & CARD_LE ua u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5272
  by (import hollight DEF_CARD_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5273
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5274
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5275
  CARD_GT :: "('q_37612::type => bool) => ('q_37613::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5276
  "CARD_GT ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5277
%(u::'q_37612::type => bool) ua::'q_37613::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5278
   CARD_GE u ua & ~ CARD_GE ua u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5279
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5280
lemma DEF_CARD_GT: "CARD_GT =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5281
(%(u::'q_37612::type => bool) ua::'q_37613::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5282
    CARD_GE u ua & ~ CARD_GE ua u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5283
  by (import hollight DEF_CARD_GT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5284
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5285
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5286
  CARD_LT :: "('q_37628::type => bool) => ('q_37629::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5287
  "CARD_LT ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5288
%(u::'q_37628::type => bool) ua::'q_37629::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5289
   CARD_LE u ua & ~ CARD_LE ua u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5290
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5291
lemma DEF_CARD_LT: "CARD_LT =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5292
(%(u::'q_37628::type => bool) ua::'q_37629::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5293
    CARD_LE u ua & ~ CARD_LE ua u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5294
  by (import hollight DEF_CARD_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5295
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5296
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5297
  COUNTABLE :: "('q_37642::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5298
  "(op ==::(('q_37642::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5299
        => (('q_37642::type => bool) => bool) => prop)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5300
 (COUNTABLE::('q_37642::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5301
 ((CARD_GE::(nat => bool) => ('q_37642::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5302
   (hollight.UNIV::nat => bool))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5303
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5304
lemma DEF_COUNTABLE: "(op =::(('q_37642::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5305
       => (('q_37642::type => bool) => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5306
 (COUNTABLE::('q_37642::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5307
 ((CARD_GE::(nat => bool) => ('q_37642::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5308
   (hollight.UNIV::nat => bool))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5309
  by (import hollight DEF_COUNTABLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5310
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5311
lemma NOT_IN_EMPTY: "ALL x::'A::type. ~ IN x EMPTY"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5312
  by (import hollight NOT_IN_EMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5313
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5314
lemma IN_UNIV: "ALL x::'A::type. IN x hollight.UNIV"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5315
  by (import hollight IN_UNIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5316
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5317
lemma IN_UNION: "ALL (x::'A::type => bool) (xa::'A::type => bool) xb::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5318
   IN xb (hollight.UNION x xa) = (IN xb x | IN xb xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5319
  by (import hollight IN_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5320
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5321
lemma IN_UNIONS: "ALL (x::('A::type => bool) => bool) xa::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5322
   IN xa (UNIONS x) = (EX t::'A::type => bool. IN t x & IN xa t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5323
  by (import hollight IN_UNIONS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5324
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5325
lemma IN_INTER: "ALL (x::'A::type => bool) (xa::'A::type => bool) xb::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5326
   IN xb (hollight.INTER x xa) = (IN xb x & IN xb xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5327
  by (import hollight IN_INTER)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5328
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5329
lemma IN_INTERS: "ALL (x::('A::type => bool) => bool) xa::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5330
   IN xa (INTERS x) = (ALL t::'A::type => bool. IN t x --> IN xa t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5331
  by (import hollight IN_INTERS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5332
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5333
lemma IN_DIFF: "ALL (x::'A::type => bool) (xa::'A::type => bool) xb::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5334
   IN xb (DIFF x xa) = (IN xb x & ~ IN xb xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5335
  by (import hollight IN_DIFF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5336
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5337
lemma IN_INSERT: "ALL (x::'A::type) (xa::'A::type) xb::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5338
   IN x (INSERT xa xb) = (x = xa | IN x xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5339
  by (import hollight IN_INSERT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5340
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5341
lemma IN_DELETE: "ALL (x::'A::type => bool) (xa::'A::type) xb::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5342
   IN xa (DELETE x xb) = (IN xa x & xa ~= xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5343
  by (import hollight IN_DELETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5344
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5345
lemma IN_SING: "ALL (x::'A::type) xa::'A::type. IN x (INSERT xa EMPTY) = (x = xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5346
  by (import hollight IN_SING)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5347
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5348
lemma IN_IMAGE: "ALL (x::'B::type) (xa::'A::type => bool) xb::'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5349
   IN x (IMAGE xb xa) = (EX xc::'A::type. x = xb xc & IN xc xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5350
  by (import hollight IN_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5351
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5352
lemma IN_REST: "ALL (x::'A::type) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5353
   IN x (REST xa) = (IN x xa & x ~= CHOICE xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5354
  by (import hollight IN_REST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5355
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5356
lemma CHOICE_DEF: "ALL x::'A::type => bool. x ~= EMPTY --> IN (CHOICE x) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5357
  by (import hollight CHOICE_DEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5358
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5359
lemma NOT_EQUAL_SETS: "ALL (x::'A::type => bool) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5360
   (x ~= xa) = (EX xb::'A::type. IN xb xa = (~ IN xb x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5361
  by (import hollight NOT_EQUAL_SETS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5362
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5363
lemma MEMBER_NOT_EMPTY: "ALL x::'A::type => bool. (EX xa::'A::type. IN xa x) = (x ~= EMPTY)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5364
  by (import hollight MEMBER_NOT_EMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5365
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5366
lemma UNIV_NOT_EMPTY: "(Not::bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5367
 ((op =::('A::type => bool) => ('A::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5368
   (hollight.UNIV::'A::type => bool) (EMPTY::'A::type => bool))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5369
  by (import hollight UNIV_NOT_EMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5370
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5371
lemma EMPTY_NOT_UNIV: "(Not::bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5372
 ((op =::('A::type => bool) => ('A::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5373
   (EMPTY::'A::type => bool) (hollight.UNIV::'A::type => bool))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5374
  by (import hollight EMPTY_NOT_UNIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5375
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5376
lemma EQ_UNIV: "(ALL x::'A::type. IN x (s::'A::type => bool)) = (s = hollight.UNIV)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5377
  by (import hollight EQ_UNIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5378
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5379
lemma SUBSET_TRANS: "ALL (x::'A::type => bool) (xa::'A::type => bool) xb::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5380
   SUBSET x xa & SUBSET xa xb --> SUBSET x xb"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5381
  by (import hollight SUBSET_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5382
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5383
lemma SUBSET_REFL: "ALL x::'A::type => bool. SUBSET x x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5384
  by (import hollight SUBSET_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5385
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5386
lemma SUBSET_ANTISYM: "ALL (x::'A::type => bool) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5387
   SUBSET x xa & SUBSET xa x --> x = xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5388
  by (import hollight SUBSET_ANTISYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5389
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5390
lemma EMPTY_SUBSET: "(All::(('A::type => bool) => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5391
 ((SUBSET::('A::type => bool) => ('A::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5392
   (EMPTY::'A::type => bool))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5393
  by (import hollight EMPTY_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5394
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5395
lemma SUBSET_EMPTY: "ALL x::'A::type => bool. SUBSET x EMPTY = (x = EMPTY)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5396
  by (import hollight SUBSET_EMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5397
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5398
lemma SUBSET_UNIV: "ALL x::'A::type => bool. SUBSET x hollight.UNIV"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5399
  by (import hollight SUBSET_UNIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5400
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5401
lemma UNIV_SUBSET: "ALL x::'A::type => bool. SUBSET hollight.UNIV x = (x = hollight.UNIV)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5402
  by (import hollight UNIV_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5403
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5404
lemma PSUBSET_TRANS: "ALL (x::'A::type => bool) (xa::'A::type => bool) xb::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5405
   PSUBSET x xa & PSUBSET xa xb --> PSUBSET x xb"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5406
  by (import hollight PSUBSET_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5407
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5408
lemma PSUBSET_SUBSET_TRANS: "ALL (x::'A::type => bool) (xa::'A::type => bool) xb::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5409
   PSUBSET x xa & SUBSET xa xb --> PSUBSET x xb"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5410
  by (import hollight PSUBSET_SUBSET_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5411
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5412
lemma SUBSET_PSUBSET_TRANS: "ALL (x::'A::type => bool) (xa::'A::type => bool) xb::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5413
   SUBSET x xa & PSUBSET xa xb --> PSUBSET x xb"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5414
  by (import hollight SUBSET_PSUBSET_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5415
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5416
lemma PSUBSET_IRREFL: "ALL x::'A::type => bool. ~ PSUBSET x x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5417
  by (import hollight PSUBSET_IRREFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5418
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5419
lemma NOT_PSUBSET_EMPTY: "ALL x::'A::type => bool. ~ PSUBSET x EMPTY"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5420
  by (import hollight NOT_PSUBSET_EMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5421
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5422
lemma NOT_UNIV_PSUBSET: "ALL x::'A::type => bool. ~ PSUBSET hollight.UNIV x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5423
  by (import hollight NOT_UNIV_PSUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5424
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5425
lemma PSUBSET_UNIV: "ALL x::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5426
   PSUBSET x hollight.UNIV = (EX xa::'A::type. ~ IN xa x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5427
  by (import hollight PSUBSET_UNIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5428
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5429
lemma UNION_ASSOC: "ALL (x::'A::type => bool) (xa::'A::type => bool) xb::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5430
   hollight.UNION (hollight.UNION x xa) xb =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5431
   hollight.UNION x (hollight.UNION xa xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5432
  by (import hollight UNION_ASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5433
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5434
lemma UNION_IDEMPOT: "ALL x::'A::type => bool. hollight.UNION x x = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5435
  by (import hollight UNION_IDEMPOT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5436
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5437
lemma UNION_COMM: "ALL (x::'A::type => bool) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5438
   hollight.UNION x xa = hollight.UNION xa x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5439
  by (import hollight UNION_COMM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5440
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5441
lemma SUBSET_UNION: "(ALL (x::'A::type => bool) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5442
    SUBSET x (hollight.UNION x xa)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5443
(ALL (x::'A::type => bool) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5444
    SUBSET x (hollight.UNION xa x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5445
  by (import hollight SUBSET_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5446
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5447
lemma SUBSET_UNION_ABSORPTION: "ALL (x::'A::type => bool) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5448
   SUBSET x xa = (hollight.UNION x xa = xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5449
  by (import hollight SUBSET_UNION_ABSORPTION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5450
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5451
lemma UNION_EMPTY: "(ALL x::'A::type => bool. hollight.UNION EMPTY x = x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5452
(ALL x::'A::type => bool. hollight.UNION x EMPTY = x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5453
  by (import hollight UNION_EMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5454
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5455
lemma UNION_UNIV: "(ALL x::'A::type => bool. hollight.UNION hollight.UNIV x = hollight.UNIV) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5456
(ALL x::'A::type => bool. hollight.UNION x hollight.UNIV = hollight.UNIV)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5457
  by (import hollight UNION_UNIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5458
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5459
lemma EMPTY_UNION: "ALL (x::'A::type => bool) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5460
   (hollight.UNION x xa = EMPTY) = (x = EMPTY & xa = EMPTY)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5461
  by (import hollight EMPTY_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5462
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5463
lemma UNION_SUBSET: "ALL (x::'q_38479::type => bool) (xa::'q_38479::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5464
   xb::'q_38479::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5465
   SUBSET (hollight.UNION x xa) xb = (SUBSET x xb & SUBSET xa xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5466
  by (import hollight UNION_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5467
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5468
lemma INTER_ASSOC: "ALL (x::'A::type => bool) (xa::'A::type => bool) xb::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5469
   hollight.INTER (hollight.INTER x xa) xb =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5470
   hollight.INTER x (hollight.INTER xa xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5471
  by (import hollight INTER_ASSOC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5472
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5473
lemma INTER_IDEMPOT: "ALL x::'A::type => bool. hollight.INTER x x = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5474
  by (import hollight INTER_IDEMPOT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5475
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5476
lemma INTER_COMM: "ALL (x::'A::type => bool) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5477
   hollight.INTER x xa = hollight.INTER xa x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5478
  by (import hollight INTER_COMM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5479
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5480
lemma INTER_SUBSET: "(ALL (x::'A::type => bool) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5481
    SUBSET (hollight.INTER x xa) x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5482
(ALL (x::'A::type => bool) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5483
    SUBSET (hollight.INTER xa x) x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5484
  by (import hollight INTER_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5485
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5486
lemma SUBSET_INTER_ABSORPTION: "ALL (x::'A::type => bool) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5487
   SUBSET x xa = (hollight.INTER x xa = x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5488
  by (import hollight SUBSET_INTER_ABSORPTION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5489
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5490
lemma INTER_EMPTY: "(ALL x::'A::type => bool. hollight.INTER EMPTY x = EMPTY) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5491
(ALL x::'A::type => bool. hollight.INTER x EMPTY = EMPTY)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5492
  by (import hollight INTER_EMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5493
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5494
lemma INTER_UNIV: "(ALL x::'A::type => bool. hollight.INTER hollight.UNIV x = x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5495
(ALL x::'A::type => bool. hollight.INTER x hollight.UNIV = x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5496
  by (import hollight INTER_UNIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5497
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5498
lemma UNION_OVER_INTER: "ALL (x::'A::type => bool) (xa::'A::type => bool) xb::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5499
   hollight.INTER x (hollight.UNION xa xb) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5500
   hollight.UNION (hollight.INTER x xa) (hollight.INTER x xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5501
  by (import hollight UNION_OVER_INTER)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5502
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5503
lemma INTER_OVER_UNION: "ALL (x::'A::type => bool) (xa::'A::type => bool) xb::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5504
   hollight.UNION x (hollight.INTER xa xb) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5505
   hollight.INTER (hollight.UNION x xa) (hollight.UNION x xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5506
  by (import hollight INTER_OVER_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5507
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5508
lemma IN_DISJOINT: "ALL (x::'A::type => bool) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5509
   DISJOINT x xa = (~ (EX xb::'A::type. IN xb x & IN xb xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5510
  by (import hollight IN_DISJOINT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5511
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5512
lemma DISJOINT_SYM: "ALL (x::'A::type => bool) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5513
   DISJOINT x xa = DISJOINT xa x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5514
  by (import hollight DISJOINT_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5515
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5516
lemma DISJOINT_EMPTY: "ALL x::'A::type => bool. DISJOINT EMPTY x & DISJOINT x EMPTY"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5517
  by (import hollight DISJOINT_EMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5518
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5519
lemma DISJOINT_EMPTY_REFL: "ALL x::'A::type => bool. (x = EMPTY) = DISJOINT x x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5520
  by (import hollight DISJOINT_EMPTY_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5521
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5522
lemma DISJOINT_UNION: "ALL (x::'A::type => bool) (xa::'A::type => bool) xb::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5523
   DISJOINT (hollight.UNION x xa) xb = (DISJOINT x xb & DISJOINT xa xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5524
  by (import hollight DISJOINT_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5525
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5526
lemma DIFF_EMPTY: "ALL x::'A::type => bool. DIFF x EMPTY = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5527
  by (import hollight DIFF_EMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5528
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5529
lemma EMPTY_DIFF: "ALL x::'A::type => bool. DIFF EMPTY x = EMPTY"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5530
  by (import hollight EMPTY_DIFF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5531
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5532
lemma DIFF_UNIV: "ALL x::'A::type => bool. DIFF x hollight.UNIV = EMPTY"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5533
  by (import hollight DIFF_UNIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5534
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5535
lemma DIFF_DIFF: "ALL (x::'A::type => bool) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5536
   DIFF (DIFF x xa) xa = DIFF x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5537
  by (import hollight DIFF_DIFF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5538
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5539
lemma DIFF_EQ_EMPTY: "ALL x::'A::type => bool. DIFF x x = EMPTY"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5540
  by (import hollight DIFF_EQ_EMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5541
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5542
lemma SUBSET_DIFF: "ALL (x::'q_38897::type => bool) xa::'q_38897::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5543
   SUBSET (DIFF x xa) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5544
  by (import hollight SUBSET_DIFF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5545
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5546
lemma COMPONENT: "ALL (x::'A::type) s::'A::type => bool. IN x (INSERT x s)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5547
  by (import hollight COMPONENT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5548
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5549
lemma DECOMPOSITION: "ALL (s::'A::type => bool) x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5550
   IN x s = (EX t::'A::type => bool. s = INSERT x t & ~ IN x t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5551
  by (import hollight DECOMPOSITION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5552
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5553
lemma SET_CASES: "ALL s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5554
   s = EMPTY |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5555
   (EX (x::'A::type) t::'A::type => bool. s = INSERT x t & ~ IN x t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5556
  by (import hollight SET_CASES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5557
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5558
lemma ABSORPTION: "ALL (x::'A::type) xa::'A::type => bool. IN x xa = (INSERT x xa = xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5559
  by (import hollight ABSORPTION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5560
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5561
lemma INSERT_INSERT: "ALL (x::'A::type) xa::'A::type => bool. INSERT x (INSERT x xa) = INSERT x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5562
  by (import hollight INSERT_INSERT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5563
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5564
lemma INSERT_COMM: "ALL (x::'A::type) (xa::'A::type) xb::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5565
   INSERT x (INSERT xa xb) = INSERT xa (INSERT x xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5566
  by (import hollight INSERT_COMM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5567
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5568
lemma INSERT_UNIV: "ALL x::'A::type. INSERT x hollight.UNIV = hollight.UNIV"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5569
  by (import hollight INSERT_UNIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5570
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5571
lemma NOT_INSERT_EMPTY: "ALL (x::'A::type) xa::'A::type => bool. INSERT x xa ~= EMPTY"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5572
  by (import hollight NOT_INSERT_EMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5573
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5574
lemma NOT_EMPTY_INSERT: "ALL (x::'A::type) xa::'A::type => bool. EMPTY ~= INSERT x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5575
  by (import hollight NOT_EMPTY_INSERT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5576
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5577
lemma INSERT_UNION: "ALL (x::'A::type) (s::'A::type => bool) t::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5578
   hollight.UNION (INSERT x s) t =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5579
   COND (IN x t) (hollight.UNION s t) (INSERT x (hollight.UNION s t))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5580
  by (import hollight INSERT_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5581
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5582
lemma INSERT_UNION_EQ: "ALL (x::'A::type) (xa::'A::type => bool) xb::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5583
   hollight.UNION (INSERT x xa) xb = INSERT x (hollight.UNION xa xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5584
  by (import hollight INSERT_UNION_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5585
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5586
lemma INSERT_INTER: "ALL (x::'A::type) (s::'A::type => bool) t::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5587
   hollight.INTER (INSERT x s) t =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5588
   COND (IN x t) (INSERT x (hollight.INTER s t)) (hollight.INTER s t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5589
  by (import hollight INSERT_INTER)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5590
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5591
lemma DISJOINT_INSERT: "ALL (x::'A::type) (xa::'A::type => bool) xb::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5592
   DISJOINT (INSERT x xa) xb = (DISJOINT xa xb & ~ IN x xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5593
  by (import hollight DISJOINT_INSERT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5594
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5595
lemma INSERT_SUBSET: "ALL (x::'A::type) (xa::'A::type => bool) xb::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5596
   SUBSET (INSERT x xa) xb = (IN x xb & SUBSET xa xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5597
  by (import hollight INSERT_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5598
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5599
lemma SUBSET_INSERT: "ALL (x::'A::type) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5600
   ~ IN x xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5601
   (ALL xb::'A::type => bool. SUBSET xa (INSERT x xb) = SUBSET xa xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5602
  by (import hollight SUBSET_INSERT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5603
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5604
lemma INSERT_DIFF: "ALL (s::'A::type => bool) (t::'A::type => bool) x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5605
   DIFF (INSERT x s) t = COND (IN x t) (DIFF s t) (INSERT x (DIFF s t))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5606
  by (import hollight INSERT_DIFF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5607
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5608
lemma INSERT_AC: "INSERT (x::'q_39353::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5609
 (INSERT (y::'q_39353::type) (s::'q_39353::type => bool)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5610
INSERT y (INSERT x s) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5611
INSERT x (INSERT x s) = INSERT x s"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5612
  by (import hollight INSERT_AC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5613
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5614
lemma INTER_ACI: "hollight.INTER (p::'q_39420::type => bool) (q::'q_39420::type => bool) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5615
hollight.INTER q p &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5616
hollight.INTER (hollight.INTER p q) (r::'q_39420::type => bool) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5617
hollight.INTER p (hollight.INTER q r) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5618
hollight.INTER p (hollight.INTER q r) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5619
hollight.INTER q (hollight.INTER p r) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5620
hollight.INTER p p = p &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5621
hollight.INTER p (hollight.INTER p q) = hollight.INTER p q"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5622
  by (import hollight INTER_ACI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5623
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5624
lemma UNION_ACI: "hollight.UNION (p::'q_39486::type => bool) (q::'q_39486::type => bool) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5625
hollight.UNION q p &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5626
hollight.UNION (hollight.UNION p q) (r::'q_39486::type => bool) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5627
hollight.UNION p (hollight.UNION q r) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5628
hollight.UNION p (hollight.UNION q r) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5629
hollight.UNION q (hollight.UNION p r) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5630
hollight.UNION p p = p &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5631
hollight.UNION p (hollight.UNION p q) = hollight.UNION p q"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5632
  by (import hollight UNION_ACI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5633
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5634
lemma DELETE_NON_ELEMENT: "ALL (x::'A::type) xa::'A::type => bool. (~ IN x xa) = (DELETE xa x = xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5635
  by (import hollight DELETE_NON_ELEMENT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5636
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5637
lemma IN_DELETE_EQ: "ALL (s::'A::type => bool) (x::'A::type) x'::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5638
   (IN x s = IN x' s) = (IN x (DELETE s x') = IN x' (DELETE s x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5639
  by (import hollight IN_DELETE_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5640
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5641
lemma EMPTY_DELETE: "ALL x::'A::type. DELETE EMPTY x = EMPTY"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5642
  by (import hollight EMPTY_DELETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5643
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5644
lemma DELETE_DELETE: "ALL (x::'A::type) xa::'A::type => bool. DELETE (DELETE xa x) x = DELETE xa x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5645
  by (import hollight DELETE_DELETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5646
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5647
lemma DELETE_COMM: "ALL (x::'A::type) (xa::'A::type) xb::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5648
   DELETE (DELETE xb x) xa = DELETE (DELETE xb xa) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5649
  by (import hollight DELETE_COMM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5650
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5651
lemma DELETE_SUBSET: "ALL (x::'A::type) xa::'A::type => bool. SUBSET (DELETE xa x) xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5652
  by (import hollight DELETE_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5653
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5654
lemma SUBSET_DELETE: "ALL (x::'A::type) (xa::'A::type => bool) xb::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5655
   SUBSET xa (DELETE xb x) = (~ IN x xa & SUBSET xa xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5656
  by (import hollight SUBSET_DELETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5657
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5658
lemma SUBSET_INSERT_DELETE: "ALL (x::'A::type) (xa::'A::type => bool) xb::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5659
   SUBSET xa (INSERT x xb) = SUBSET (DELETE xa x) xb"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5660
  by (import hollight SUBSET_INSERT_DELETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5661
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5662
lemma DIFF_INSERT: "ALL (x::'A::type => bool) (xa::'A::type => bool) xb::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5663
   DIFF x (INSERT xb xa) = DIFF (DELETE x xb) xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5664
  by (import hollight DIFF_INSERT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5665
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5666
lemma PSUBSET_INSERT_SUBSET: "ALL (x::'A::type => bool) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5667
   PSUBSET x xa = (EX xb::'A::type. ~ IN xb x & SUBSET (INSERT xb x) xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5668
  by (import hollight PSUBSET_INSERT_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5669
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5670
lemma PSUBSET_MEMBER: "ALL (x::'A::type => bool) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5671
   PSUBSET x xa = (SUBSET x xa & (EX y::'A::type. IN y xa & ~ IN y x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5672
  by (import hollight PSUBSET_MEMBER)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5673
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5674
lemma DELETE_INSERT: "ALL (x::'A::type) (y::'A::type) s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5675
   DELETE (INSERT x s) y = COND (x = y) (DELETE s y) (INSERT x (DELETE s y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5676
  by (import hollight DELETE_INSERT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5677
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5678
lemma INSERT_DELETE: "ALL (x::'A::type) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5679
   IN x xa --> INSERT x (DELETE xa x) = xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5680
  by (import hollight INSERT_DELETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5681
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5682
lemma DELETE_INTER: "ALL (x::'A::type => bool) (xa::'A::type => bool) xb::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5683
   hollight.INTER (DELETE x xb) xa = DELETE (hollight.INTER x xa) xb"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5684
  by (import hollight DELETE_INTER)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5685
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5686
lemma DISJOINT_DELETE_SYM: "ALL (x::'A::type => bool) (xa::'A::type => bool) xb::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5687
   DISJOINT (DELETE x xb) xa = DISJOINT (DELETE xa xb) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5688
  by (import hollight DISJOINT_DELETE_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5689
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5690
lemma UNIONS_0: "(op =::('q_39893::type => bool) => ('q_39893::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5691
 ((UNIONS::(('q_39893::type => bool) => bool) => 'q_39893::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5692
   (EMPTY::('q_39893::type => bool) => bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5693
 (EMPTY::'q_39893::type => bool)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5694
  by (import hollight UNIONS_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5695
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5696
lemma UNIONS_1: "UNIONS (INSERT (s::'q_39899::type => bool) EMPTY) = s"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5697
  by (import hollight UNIONS_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5698
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5699
lemma UNIONS_2: "UNIONS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5700
 (INSERT (s::'q_39919::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5701
   (INSERT (t::'q_39919::type => bool) EMPTY)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5702
hollight.UNION s t"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5703
  by (import hollight UNIONS_2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5704
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5705
lemma UNIONS_INSERT: "UNIONS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5706
 (INSERT (s::'q_39933::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5707
   (u::('q_39933::type => bool) => bool)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5708
hollight.UNION s (UNIONS u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5709
  by (import hollight UNIONS_INSERT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5710
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5711
lemma FORALL_IN_UNIONS: "ALL (x::'q_39975::type => bool) xa::('q_39975::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5712
   (ALL xb::'q_39975::type. IN xb (UNIONS xa) --> x xb) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5713
   (ALL (t::'q_39975::type => bool) xb::'q_39975::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5714
       IN t xa & IN xb t --> x xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5715
  by (import hollight FORALL_IN_UNIONS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5716
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5717
lemma EMPTY_UNIONS: "ALL x::('q_40001::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5718
   (UNIONS x = EMPTY) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5719
   (ALL xa::'q_40001::type => bool. IN xa x --> xa = EMPTY)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5720
  by (import hollight EMPTY_UNIONS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5721
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5722
lemma IMAGE_CLAUSES: "IMAGE (f::'q_40027::type => 'q_40031::type) EMPTY = EMPTY &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5723
IMAGE f (INSERT (x::'q_40027::type) (s::'q_40027::type => bool)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5724
INSERT (f x) (IMAGE f s)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5725
  by (import hollight IMAGE_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5726
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5727
lemma IMAGE_UNION: "ALL (x::'q_40054::type => 'q_40065::type) (xa::'q_40054::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5728
   xb::'q_40054::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5729
   IMAGE x (hollight.UNION xa xb) = hollight.UNION (IMAGE x xa) (IMAGE x xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5730
  by (import hollight IMAGE_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5731
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5732
lemma IMAGE_o: "ALL (x::'q_40098::type => 'q_40094::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5733
   (xa::'q_40089::type => 'q_40098::type) xb::'q_40089::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5734
   IMAGE (x o xa) xb = IMAGE x (IMAGE xa xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5735
  by (import hollight IMAGE_o)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5736
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5737
lemma IMAGE_SUBSET: "ALL (x::'q_40116::type => 'q_40127::type) (xa::'q_40116::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5738
   xb::'q_40116::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5739
   SUBSET xa xb --> SUBSET (IMAGE x xa) (IMAGE x xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5740
  by (import hollight IMAGE_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5741
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5742
lemma IMAGE_DIFF_INJ: "(ALL (x::'q_40158::type) y::'q_40158::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5743
    (f::'q_40158::type => 'q_40169::type) x = f y --> x = y) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5744
IMAGE f (DIFF (s::'q_40158::type => bool) (t::'q_40158::type => bool)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5745
DIFF (IMAGE f s) (IMAGE f t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5746
  by (import hollight IMAGE_DIFF_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5747
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5748
lemma IMAGE_DELETE_INJ: "(ALL x::'q_40204::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5749
    (f::'q_40204::type => 'q_40203::type) x = f (a::'q_40204::type) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5750
    x = a) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5751
IMAGE f (DELETE (s::'q_40204::type => bool) a) = DELETE (IMAGE f s) (f a)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5752
  by (import hollight IMAGE_DELETE_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5753
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5754
lemma IMAGE_EQ_EMPTY: "ALL (x::'q_40227::type => 'q_40223::type) xa::'q_40227::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5755
   (IMAGE x xa = EMPTY) = (xa = EMPTY)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5756
  by (import hollight IMAGE_EQ_EMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5757
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5758
lemma FORALL_IN_IMAGE: "ALL (x::'q_40263::type => 'q_40262::type) xa::'q_40263::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5759
   (ALL xb::'q_40262::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5760
       IN xb (IMAGE x xa) --> (P::'q_40262::type => bool) xb) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5761
   (ALL xb::'q_40263::type. IN xb xa --> P (x xb))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5762
  by (import hollight FORALL_IN_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5763
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5764
lemma EXISTS_IN_IMAGE: "ALL (x::'q_40299::type => 'q_40298::type) xa::'q_40299::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5765
   (EX xb::'q_40298::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5766
       IN xb (IMAGE x xa) & (P::'q_40298::type => bool) xb) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5767
   (EX xb::'q_40299::type. IN xb xa & P (x xb))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5768
  by (import hollight EXISTS_IN_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5769
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5770
lemma SUBSET_IMAGE: "ALL (f::'A::type => 'B::type) (s::'B::type => bool) t::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5771
   SUBSET s (IMAGE f t) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5772
   (EX x::'A::type => bool. SUBSET x t & s = IMAGE f x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5773
  by (import hollight SUBSET_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5774
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5775
lemma IMAGE_CONST: "ALL (s::'q_40385::type => bool) c::'q_40390::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5776
   IMAGE (%x::'q_40385::type. c) s = COND (s = EMPTY) EMPTY (INSERT c EMPTY)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5777
  by (import hollight IMAGE_CONST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5778
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5779
lemma SIMPLE_IMAGE: "ALL (x::'q_40418::type => 'q_40422::type) xa::'q_40418::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5780
   GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5781
    (%u::'q_40422::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5782
        EX xb::'q_40418::type. SETSPEC u (IN xb xa) (x xb)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5783
   IMAGE x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5784
  by (import hollight SIMPLE_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5785
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5786
lemma EMPTY_GSPEC: "GSPEC (%u::'q_40439::type. Ex (SETSPEC u False)) = EMPTY"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5787
  by (import hollight EMPTY_GSPEC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5788
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5789
lemma FINITE_INDUCT_STRONG: "ALL P::('A::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5790
   P EMPTY &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5791
   (ALL (x::'A::type) s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5792
       P s & ~ IN x s & FINITE s --> P (INSERT x s)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5793
   (ALL s::'A::type => bool. FINITE s --> P s)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5794
  by (import hollight FINITE_INDUCT_STRONG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5795
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5796
lemma FINITE_SUBSET: "ALL (x::'A::type => bool) t::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5797
   FINITE t & SUBSET x t --> FINITE x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5798
  by (import hollight FINITE_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5799
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5800
lemma FINITE_UNION_IMP: "ALL (x::'A::type => bool) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5801
   FINITE x & FINITE xa --> FINITE (hollight.UNION x xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5802
  by (import hollight FINITE_UNION_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5803
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5804
lemma FINITE_UNION: "ALL (s::'A::type => bool) t::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5805
   FINITE (hollight.UNION s t) = (FINITE s & FINITE t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5806
  by (import hollight FINITE_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5807
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5808
lemma FINITE_INTER: "ALL (s::'A::type => bool) t::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5809
   FINITE s | FINITE t --> FINITE (hollight.INTER s t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5810
  by (import hollight FINITE_INTER)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5811
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5812
lemma FINITE_INSERT: "ALL (s::'A::type => bool) x::'A::type. FINITE (INSERT x s) = FINITE s"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5813
  by (import hollight FINITE_INSERT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5814
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5815
lemma FINITE_DELETE_IMP: "ALL (s::'A::type => bool) x::'A::type. FINITE s --> FINITE (DELETE s x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5816
  by (import hollight FINITE_DELETE_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5817
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5818
lemma FINITE_DELETE: "ALL (s::'A::type => bool) x::'A::type. FINITE (DELETE s x) = FINITE s"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5819
  by (import hollight FINITE_DELETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5820
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5821
lemma FINITE_UNIONS: "ALL s::('q_40774::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5822
   FINITE s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5823
   FINITE (UNIONS s) = (ALL t::'q_40774::type => bool. IN t s --> FINITE t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5824
  by (import hollight FINITE_UNIONS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5825
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5826
lemma FINITE_IMAGE_EXPAND: "ALL (f::'A::type => 'B::type) s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5827
   FINITE s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5828
   FINITE
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5829
    (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5830
      (%u::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5831
          EX y::'B::type. SETSPEC u (EX x::'A::type. IN x s & y = f x) y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5832
  by (import hollight FINITE_IMAGE_EXPAND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5833
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5834
lemma FINITE_IMAGE: "ALL (x::'A::type => 'B::type) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5835
   FINITE xa --> FINITE (IMAGE x xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5836
  by (import hollight FINITE_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5837
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5838
lemma FINITE_IMAGE_INJ_GENERAL: "ALL (f::'A::type => 'B::type) (x::'B::type => bool) s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5839
   (ALL (x::'A::type) y::'A::type. IN x s & IN y s & f x = f y --> x = y) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5840
   FINITE x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5841
   FINITE
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5842
    (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5843
      (%u::'A::type. EX xa::'A::type. SETSPEC u (IN xa s & IN (f xa) x) xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5844
  by (import hollight FINITE_IMAGE_INJ_GENERAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5845
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5846
lemma FINITE_IMAGE_INJ: "ALL (f::'A::type => 'B::type) A::'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5847
   (ALL (x::'A::type) y::'A::type. f x = f y --> x = y) & FINITE A -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5848
   FINITE (GSPEC (%u::'A::type. EX x::'A::type. SETSPEC u (IN (f x) A) x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5849
  by (import hollight FINITE_IMAGE_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5850
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5851
lemma INFINITE_IMAGE_INJ: "ALL f::'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5852
   (ALL (x::'A::type) y::'A::type. f x = f y --> x = y) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5853
   (ALL s::'A::type => bool. INFINITE s --> INFINITE (IMAGE f s))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5854
  by (import hollight INFINITE_IMAGE_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5855
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5856
lemma INFINITE_NONEMPTY: "ALL s::'q_41257::type => bool. INFINITE s --> s ~= EMPTY"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5857
  by (import hollight INFINITE_NONEMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5858
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5859
lemma INFINITE_DIFF_FINITE: "ALL (s::'A::type => bool) t::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5860
   INFINITE s & FINITE t --> INFINITE (DIFF s t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5861
  by (import hollight INFINITE_DIFF_FINITE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5862
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5863
lemma FINITE_SUBSET_IMAGE: "ALL (f::'A::type => 'B::type) (s::'A::type => bool) t::'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5864
   (FINITE t & SUBSET t (IMAGE f s)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5865
   (EX x::'A::type => bool. FINITE x & SUBSET x s & t = IMAGE f x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5866
  by (import hollight FINITE_SUBSET_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5867
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5868
lemma FINITE_SUBSET_IMAGE_IMP: "ALL (f::'A::type => 'B::type) (s::'A::type => bool) t::'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5869
   FINITE t & SUBSET t (IMAGE f s) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5870
   (EX s'::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5871
       FINITE s' & SUBSET s' s & SUBSET t (IMAGE f s'))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5872
  by (import hollight FINITE_SUBSET_IMAGE_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5873
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5874
lemma FINITE_SUBSETS: "ALL s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5875
   FINITE s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5876
   FINITE
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5877
    (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5878
      (%u::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5879
          EX t::'A::type => bool. SETSPEC u (SUBSET t s) t))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5880
  by (import hollight FINITE_SUBSETS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5881
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5882
lemma FINITE_DIFF: "ALL (s::'q_41555::type => bool) t::'q_41555::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5883
   FINITE s --> FINITE (DIFF s t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5884
  by (import hollight FINITE_DIFF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5885
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5886
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5887
  FINREC :: "('q_41615::type => 'q_41614::type => 'q_41614::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5888
=> 'q_41614::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5889
   => ('q_41615::type => bool) => 'q_41614::type => nat => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5890
  "FINREC ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5891
SOME FINREC::('q_41615::type => 'q_41614::type => 'q_41614::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5892
             => 'q_41614::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5893
                => ('q_41615::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5894
                   => 'q_41614::type => nat => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5895
   (ALL (f::'q_41615::type => 'q_41614::type => 'q_41614::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5896
       (s::'q_41615::type => bool) (a::'q_41614::type) b::'q_41614::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5897
       FINREC f b s a (0::nat) = (s = EMPTY & a = b)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5898
   (ALL (b::'q_41614::type) (s::'q_41615::type => bool) (n::nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5899
       (a::'q_41614::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5900
       f::'q_41615::type => 'q_41614::type => 'q_41614::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5901
       FINREC f b s a (Suc n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5902
       (EX (x::'q_41615::type) c::'q_41614::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5903
           IN x s & FINREC f b (DELETE s x) c n & a = f x c))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5904
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5905
lemma DEF_FINREC: "FINREC =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5906
(SOME FINREC::('q_41615::type => 'q_41614::type => 'q_41614::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5907
              => 'q_41614::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5908
                 => ('q_41615::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5909
                    => 'q_41614::type => nat => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5910
    (ALL (f::'q_41615::type => 'q_41614::type => 'q_41614::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5911
        (s::'q_41615::type => bool) (a::'q_41614::type) b::'q_41614::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5912
        FINREC f b s a (0::nat) = (s = EMPTY & a = b)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5913
    (ALL (b::'q_41614::type) (s::'q_41615::type => bool) (n::nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5914
        (a::'q_41614::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5915
        f::'q_41615::type => 'q_41614::type => 'q_41614::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5916
        FINREC f b s a (Suc n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5917
        (EX (x::'q_41615::type) c::'q_41614::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5918
            IN x s & FINREC f b (DELETE s x) c n & a = f x c)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5919
  by (import hollight DEF_FINREC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5920
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5921
lemma FINREC_1_LEMMA: "ALL (x::'q_41660::type => 'q_41659::type => 'q_41659::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5922
   (xa::'q_41659::type) (xb::'q_41660::type => bool) xc::'q_41659::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5923
   FINREC x xa xb xc (Suc (0::nat)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5924
   (EX xd::'q_41660::type. xb = INSERT xd EMPTY & xc = x xd xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5925
  by (import hollight FINREC_1_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5926
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5927
lemma FINREC_SUC_LEMMA: "ALL (f::'A::type => 'B::type => 'B::type) b::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5928
   (ALL (x::'A::type) (y::'A::type) s::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5929
       x ~= y --> f x (f y s) = f y (f x s)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5930
   (ALL (n::nat) (s::'A::type => bool) z::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5931
       FINREC f b s z (Suc n) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5932
       (ALL x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5933
           IN x s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5934
           (EX w::'B::type. FINREC f b (DELETE s x) w n & z = f x w)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5935
  by (import hollight FINREC_SUC_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5936
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5937
lemma FINREC_UNIQUE_LEMMA: "ALL (f::'A::type => 'B::type => 'B::type) b::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5938
   (ALL (x::'A::type) (y::'A::type) s::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5939
       x ~= y --> f x (f y s) = f y (f x s)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5940
   (ALL (n1::nat) (n2::nat) (s::'A::type => bool) (a1::'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5941
       a2::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5942
       FINREC f b s a1 n1 & FINREC f b s a2 n2 --> a1 = a2 & n1 = n2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5943
  by (import hollight FINREC_UNIQUE_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5944
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5945
lemma FINREC_EXISTS_LEMMA: "ALL (f::'A::type => 'B::type => 'B::type) (b::'B::type) s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5946
   FINITE s --> (EX a::'B::type. Ex (FINREC f b s a))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5947
  by (import hollight FINREC_EXISTS_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5948
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5949
lemma FINREC_FUN_LEMMA: "ALL (P::'A::type => bool) R::'A::type => 'B::type => 'C::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5950
   (ALL s::'A::type. P s --> (EX a::'B::type. Ex (R s a))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5951
   (ALL (n1::'C::type) (n2::'C::type) (s::'A::type) (a1::'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5952
       a2::'B::type. R s a1 n1 & R s a2 n2 --> a1 = a2 & n1 = n2) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5953
   (EX x::'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5954
       ALL (s::'A::type) a::'B::type. P s --> Ex (R s a) = (x s = a))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5955
  by (import hollight FINREC_FUN_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5956
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5957
lemma FINREC_FUN: "ALL (f::'A::type => 'B::type => 'B::type) b::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5958
   (ALL (x::'A::type) (y::'A::type) s::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5959
       x ~= y --> f x (f y s) = f y (f x s)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5960
   (EX g::('A::type => bool) => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5961
       g EMPTY = b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5962
       (ALL (s::'A::type => bool) x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5963
           FINITE s & IN x s --> g s = f x (g (DELETE s x))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5964
  by (import hollight FINREC_FUN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5965
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5966
lemma SET_RECURSION_LEMMA: "ALL (f::'A::type => 'B::type => 'B::type) b::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5967
   (ALL (x::'A::type) (y::'A::type) s::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5968
       x ~= y --> f x (f y s) = f y (f x s)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5969
   (EX g::('A::type => bool) => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5970
       g EMPTY = b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5971
       (ALL (x::'A::type) s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5972
           FINITE s --> g (INSERT x s) = COND (IN x s) (g s) (f x (g s))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5973
  by (import hollight SET_RECURSION_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5974
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5975
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5976
  ITSET :: "('q_42316::type => 'q_42315::type => 'q_42315::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5977
=> ('q_42316::type => bool) => 'q_42315::type => 'q_42315::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5978
  "ITSET ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5979
%(u::'q_42316::type => 'q_42315::type => 'q_42315::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5980
   (ua::'q_42316::type => bool) ub::'q_42315::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5981
   (SOME g::('q_42316::type => bool) => 'q_42315::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5982
       g EMPTY = ub &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5983
       (ALL (x::'q_42316::type) s::'q_42316::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5984
           FINITE s --> g (INSERT x s) = COND (IN x s) (g s) (u x (g s))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5985
    ua"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5986
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5987
lemma DEF_ITSET: "ITSET =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5988
(%(u::'q_42316::type => 'q_42315::type => 'q_42315::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5989
    (ua::'q_42316::type => bool) ub::'q_42315::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5990
    (SOME g::('q_42316::type => bool) => 'q_42315::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5991
        g EMPTY = ub &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5992
        (ALL (x::'q_42316::type) s::'q_42316::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5993
            FINITE s --> g (INSERT x s) = COND (IN x s) (g s) (u x (g s))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5994
     ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5995
  by (import hollight DEF_ITSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5996
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5997
lemma FINITE_RECURSION: "ALL (f::'A::type => 'B::type => 'B::type) b::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5998
   (ALL (x::'A::type) (y::'A::type) s::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  5999
       x ~= y --> f x (f y s) = f y (f x s)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6000
   ITSET f EMPTY b = b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6001
   (ALL (x::'A::type) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6002
       FINITE xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6003
       ITSET f (INSERT x xa) b =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6004
       COND (IN x xa) (ITSET f xa b) (f x (ITSET f xa b)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6005
  by (import hollight FINITE_RECURSION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6006
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6007
lemma FINITE_RECURSION_DELETE: "ALL (f::'A::type => 'B::type => 'B::type) b::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6008
   (ALL (x::'A::type) (y::'A::type) s::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6009
       x ~= y --> f x (f y s) = f y (f x s)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6010
   ITSET f EMPTY b = b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6011
   (ALL (x::'A::type) s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6012
       FINITE s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6013
       ITSET f s b =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6014
       COND (IN x s) (f x (ITSET f (DELETE s x) b))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6015
        (ITSET f (DELETE s x) b))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6016
  by (import hollight FINITE_RECURSION_DELETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6017
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6018
lemma ITSET_EQ: "ALL (x::'q_42621::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6019
   (xa::'q_42621::type => 'q_42622::type => 'q_42622::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6020
   (xb::'q_42621::type => 'q_42622::type => 'q_42622::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6021
   xc::'q_42622::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6022
   FINITE x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6023
   (ALL xc::'q_42621::type. IN xc x --> xa xc = xb xc) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6024
   (ALL (x::'q_42621::type) (y::'q_42621::type) s::'q_42622::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6025
       x ~= y --> xa x (xa y s) = xa y (xa x s)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6026
   (ALL (x::'q_42621::type) (y::'q_42621::type) s::'q_42622::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6027
       x ~= y --> xb x (xb y s) = xb y (xb x s)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6028
   ITSET xa x xc = ITSET xb x xc"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6029
  by (import hollight ITSET_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6030
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6031
lemma SUBSET_RESTRICT: "ALL (x::'q_42655::type => bool) xa::'q_42655::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6032
   SUBSET
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6033
    (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6034
      (%u::'q_42655::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6035
          EX xb::'q_42655::type. SETSPEC u (IN xb x & xa xb) xb))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6036
    x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6037
  by (import hollight SUBSET_RESTRICT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6038
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6039
lemma FINITE_RESTRICT: "ALL (s::'A::type => bool) p::'q_42673::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6040
   FINITE s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6041
   FINITE
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6042
    (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6043
      (%u::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6044
          EX x::'A::type. SETSPEC u (IN x s & (P::'A::type => bool) x) x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6045
  by (import hollight FINITE_RESTRICT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6046
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6047
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6048
  CARD :: "('q_42709::type => bool) => nat" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6049
  "CARD ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6050
%u::'q_42709::type => bool. ITSET (%x::'q_42709::type. Suc) u (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6051
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6052
lemma DEF_CARD: "CARD =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6053
(%u::'q_42709::type => bool. ITSET (%x::'q_42709::type. Suc) u (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6054
  by (import hollight DEF_CARD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6055
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6056
lemma CARD_CLAUSES: "(op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6057
 ((op =::nat => nat => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6058
   ((CARD::('A::type => bool) => nat) (EMPTY::'A::type => bool)) (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6059
 ((All::('A::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6060
   (%x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6061
       (All::(('A::type => bool) => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6062
        (%s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6063
            (op -->::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6064
             ((FINITE::('A::type => bool) => bool) s)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6065
             ((op =::nat => nat => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6066
               ((CARD::('A::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6067
                 ((INSERT::'A::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6068
                           => ('A::type => bool) => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6069
                   x s))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6070
               ((COND::bool => nat => nat => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6071
                 ((IN::'A::type => ('A::type => bool) => bool) x s)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6072
                 ((CARD::('A::type => bool) => nat) s)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6073
                 ((Suc::nat => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6074
                   ((CARD::('A::type => bool) => nat) s)))))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6075
  by (import hollight CARD_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6076
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6077
lemma CARD_UNION: "ALL (x::'A::type => bool) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6078
   FINITE x & FINITE xa & hollight.INTER x xa = EMPTY -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6079
   CARD (hollight.UNION x xa) = CARD x + CARD xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6080
  by (import hollight CARD_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6081
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6082
lemma CARD_DELETE: "ALL (x::'A::type) s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6083
   FINITE s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6084
   CARD (DELETE s x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6085
   COND (IN x s) (CARD s - NUMERAL_BIT1 (0::nat)) (CARD s)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6086
  by (import hollight CARD_DELETE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6087
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6088
lemma CARD_UNION_EQ: "ALL (s::'q_42954::type => bool) (t::'q_42954::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6089
   u::'q_42954::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6090
   FINITE u & hollight.INTER s t = EMPTY & hollight.UNION s t = u -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6091
   CARD s + CARD t = CARD u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6092
  by (import hollight CARD_UNION_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6093
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6094
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6095
  HAS_SIZE :: "('q_42990::type => bool) => nat => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6096
  "HAS_SIZE == %(u::'q_42990::type => bool) ua::nat. FINITE u & CARD u = ua"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6097
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6098
lemma DEF_HAS_SIZE: "HAS_SIZE = (%(u::'q_42990::type => bool) ua::nat. FINITE u & CARD u = ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6099
  by (import hollight DEF_HAS_SIZE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6100
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6101
lemma HAS_SIZE_CARD: "ALL (x::'q_43009::type => bool) xa::nat. HAS_SIZE x xa --> CARD x = xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6102
  by (import hollight HAS_SIZE_CARD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6103
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6104
lemma HAS_SIZE_0: "ALL (s::'A::type => bool) n::'q_43025::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6105
   HAS_SIZE s (0::nat) = (s = EMPTY)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6106
  by (import hollight HAS_SIZE_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6107
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6108
lemma HAS_SIZE_SUC: "ALL (s::'A::type => bool) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6109
   HAS_SIZE s (Suc n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6110
   (s ~= EMPTY & (ALL x::'A::type. IN x s --> HAS_SIZE (DELETE s x) n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6111
  by (import hollight HAS_SIZE_SUC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6112
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6113
lemma HAS_SIZE_UNION: "ALL (x::'q_43147::type => bool) (xa::'q_43147::type => bool) (xb::nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6114
   xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6115
   HAS_SIZE x xb & HAS_SIZE xa xc & DISJOINT x xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6116
   HAS_SIZE (hollight.UNION x xa) (xb + xc)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6117
  by (import hollight HAS_SIZE_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6118
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6119
lemma HAS_SIZE_UNIONS: "ALL (x::'A::type => bool) (xa::'A::type => 'B::type => bool) (xb::nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6120
   xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6121
   HAS_SIZE x xb &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6122
   (ALL xb::'A::type. IN xb x --> HAS_SIZE (xa xb) xc) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6123
   (ALL (xb::'A::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6124
       IN xb x & IN y x & xb ~= y --> DISJOINT (xa xb) (xa y)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6125
   HAS_SIZE
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6126
    (UNIONS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6127
      (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6128
        (%u::'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6129
            EX xb::'A::type. SETSPEC u (IN xb x) (xa xb))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6130
    (xb * xc)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6131
  by (import hollight HAS_SIZE_UNIONS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6132
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6133
lemma HAS_SIZE_CLAUSES: "HAS_SIZE (s::'q_43395::type => bool) (0::nat) = (s = EMPTY) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6134
HAS_SIZE s (Suc (n::nat)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6135
(EX (a::'q_43395::type) t::'q_43395::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6136
    HAS_SIZE t n & ~ IN a t & s = INSERT a t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6137
  by (import hollight HAS_SIZE_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6138
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6139
lemma CARD_SUBSET_EQ: "ALL (a::'A::type => bool) b::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6140
   FINITE b & SUBSET a b & CARD a = CARD b --> a = b"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6141
  by (import hollight CARD_SUBSET_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6142
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6143
lemma CARD_SUBSET: "ALL (a::'A::type => bool) b::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6144
   SUBSET a b & FINITE b --> <= (CARD a) (CARD b)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6145
  by (import hollight CARD_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6146
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6147
lemma CARD_SUBSET_LE: "ALL (a::'A::type => bool) b::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6148
   FINITE b & SUBSET a b & <= (CARD b) (CARD a) --> a = b"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6149
  by (import hollight CARD_SUBSET_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6150
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6151
lemma CARD_EQ_0: "ALL s::'q_43711::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6152
   FINITE s --> (CARD s = (0::nat)) = (s = EMPTY)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6153
  by (import hollight CARD_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6154
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6155
lemma CARD_PSUBSET: "ALL (a::'A::type => bool) b::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6156
   PSUBSET a b & FINITE b --> < (CARD a) (CARD b)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6157
  by (import hollight CARD_PSUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6158
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6159
lemma CARD_UNION_LE: "ALL (s::'A::type => bool) t::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6160
   FINITE s & FINITE t --> <= (CARD (hollight.UNION s t)) (CARD s + CARD t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6161
  by (import hollight CARD_UNION_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6162
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6163
lemma CARD_UNIONS_LE: "ALL (x::'A::type => bool) (xa::'A::type => 'B::type => bool) (xb::nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6164
   xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6165
   HAS_SIZE x xb &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6166
   (ALL xb::'A::type. IN xb x --> FINITE (xa xb) & <= (CARD (xa xb)) xc) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6167
   <= (CARD
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6168
        (UNIONS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6169
          (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6170
            (%u::'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6171
                EX xb::'A::type. SETSPEC u (IN xb x) (xa xb)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6172
    (xb * xc)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6173
  by (import hollight CARD_UNIONS_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6174
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6175
lemma CARD_IMAGE_INJ: "ALL (f::'A::type => 'B::type) x::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6176
   (ALL (xa::'A::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6177
       IN xa x & IN y x & f xa = f y --> xa = y) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6178
   FINITE x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6179
   CARD (IMAGE f x) = CARD x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6180
  by (import hollight CARD_IMAGE_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6181
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6182
lemma HAS_SIZE_IMAGE_INJ: "ALL (x::'A::type => 'B::type) (xa::'A::type => bool) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6183
   (ALL (xb::'A::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6184
       IN xb xa & IN y xa & x xb = x y --> xb = y) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6185
   HAS_SIZE xa xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6186
   HAS_SIZE (IMAGE x xa) xb"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6187
  by (import hollight HAS_SIZE_IMAGE_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6188
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6189
lemma CARD_IMAGE_LE: "ALL (f::'A::type => 'B::type) s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6190
   FINITE s --> <= (CARD (IMAGE f s)) (CARD s)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6191
  by (import hollight CARD_IMAGE_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6192
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6193
lemma CHOOSE_SUBSET: "ALL s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6194
   FINITE s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6195
   (ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6196
       <= n (CARD s) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6197
       (EX t::'A::type => bool. SUBSET t s & HAS_SIZE t n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6198
  by (import hollight CHOOSE_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6199
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6200
lemma HAS_SIZE_PRODUCT_DEPENDENT: "ALL (x::'A::type => bool) (xa::nat) (xb::'A::type => 'B::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6201
   xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6202
   HAS_SIZE x xa & (ALL xa::'A::type. IN xa x --> HAS_SIZE (xb xa) xc) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6203
   HAS_SIZE
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6204
    (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6205
      (%u::'A::type * 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6206
          EX (xa::'A::type) y::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6207
             SETSPEC u (IN xa x & IN y (xb xa)) (xa, y)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6208
    (xa * xc)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6209
  by (import hollight HAS_SIZE_PRODUCT_DEPENDENT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6210
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6211
lemma FINITE_PRODUCT_DEPENDENT: "ALL (x::'A::type => bool) xa::'A::type => 'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6212
   FINITE x & (ALL xb::'A::type. IN xb x --> FINITE (xa xb)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6213
   FINITE
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6214
    (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6215
      (%u::'A::type * 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6216
          EX (xb::'A::type) y::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6217
             SETSPEC u (IN xb x & IN y (xa xb)) (xb, y)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6218
  by (import hollight FINITE_PRODUCT_DEPENDENT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6219
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6220
lemma FINITE_PRODUCT: "ALL (x::'A::type => bool) xa::'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6221
   FINITE x & FINITE xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6222
   FINITE
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6223
    (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6224
      (%u::'A::type * 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6225
          EX (xb::'A::type) y::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6226
             SETSPEC u (IN xb x & IN y xa) (xb, y)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6227
  by (import hollight FINITE_PRODUCT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6228
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6229
lemma CARD_PRODUCT: "ALL (s::'A::type => bool) t::'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6230
   FINITE s & FINITE t -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6231
   CARD
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6232
    (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6233
      (%u::'A::type * 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6234
          EX (x::'A::type) y::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6235
             SETSPEC u (IN x s & IN y t) (x, y))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6236
   CARD s * CARD t"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6237
  by (import hollight CARD_PRODUCT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6238
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6239
lemma HAS_SIZE_PRODUCT: "ALL (x::'A::type => bool) (xa::nat) (xb::'B::type => bool) xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6240
   HAS_SIZE x xa & HAS_SIZE xb xc -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6241
   HAS_SIZE
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6242
    (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6243
      (%u::'A::type * 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6244
          EX (xa::'A::type) y::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6245
             SETSPEC u (IN xa x & IN y xb) (xa, y)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6246
    (xa * xc)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6247
  by (import hollight HAS_SIZE_PRODUCT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6248
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6249
lemma HAS_SIZE_FUNSPACE: "ALL (d::'B::type) (n::nat) (t::'B::type => bool) (m::nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6250
   s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6251
   HAS_SIZE s m & HAS_SIZE t n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6252
   HAS_SIZE
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6253
    (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6254
      (%u::'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6255
          EX f::'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6256
             SETSPEC u
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6257
              ((ALL x::'A::type. IN x s --> IN (f x) t) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6258
               (ALL x::'A::type. ~ IN x s --> f x = d))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6259
              f))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6260
    (EXP n m)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6261
  by (import hollight HAS_SIZE_FUNSPACE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6262
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6263
lemma CARD_FUNSPACE: "ALL (s::'q_45066::type => bool) t::'q_45063::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6264
   FINITE s & FINITE t -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6265
   CARD
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6266
    (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6267
      (%u::'q_45066::type => 'q_45063::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6268
          EX f::'q_45066::type => 'q_45063::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6269
             SETSPEC u
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6270
              ((ALL x::'q_45066::type. IN x s --> IN (f x) t) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6271
               (ALL x::'q_45066::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6272
                   ~ IN x s --> f x = (d::'q_45063::type)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6273
              f)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6274
   EXP (CARD t) (CARD s)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6275
  by (import hollight CARD_FUNSPACE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6276
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6277
lemma FINITE_FUNSPACE: "ALL (s::'q_45132::type => bool) t::'q_45129::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6278
   FINITE s & FINITE t -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6279
   FINITE
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6280
    (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6281
      (%u::'q_45132::type => 'q_45129::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6282
          EX f::'q_45132::type => 'q_45129::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6283
             SETSPEC u
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6284
              ((ALL x::'q_45132::type. IN x s --> IN (f x) t) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6285
               (ALL x::'q_45132::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6286
                   ~ IN x s --> f x = (d::'q_45129::type)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6287
              f))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6288
  by (import hollight FINITE_FUNSPACE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6289
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6290
lemma HAS_SIZE_POWERSET: "ALL (s::'A::type => bool) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6291
   HAS_SIZE s n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6292
   HAS_SIZE
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6293
    (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6294
      (%u::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6295
          EX t::'A::type => bool. SETSPEC u (SUBSET t s) t))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6296
    (EXP (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6297
  by (import hollight HAS_SIZE_POWERSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6298
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6299
lemma CARD_POWERSET: "ALL s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6300
   FINITE s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6301
   CARD
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6302
    (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6303
      (%u::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6304
          EX t::'A::type => bool. SETSPEC u (SUBSET t s) t)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6305
   EXP (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) (CARD s)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6306
  by (import hollight CARD_POWERSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6307
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6308
lemma FINITE_POWERSET: "ALL s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6309
   FINITE s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6310
   FINITE
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6311
    (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6312
      (%u::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6313
          EX t::'A::type => bool. SETSPEC u (SUBSET t s) t))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6314
  by (import hollight FINITE_POWERSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6315
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6316
lemma CARD_GE_REFL: "ALL s::'A::type => bool. CARD_GE s s"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6317
  by (import hollight CARD_GE_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6318
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6319
lemma CARD_GE_TRANS: "ALL (s::'A::type => bool) (t::'B::type => bool) u::'C::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6320
   CARD_GE s t & CARD_GE t u --> CARD_GE s u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6321
  by (import hollight CARD_GE_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6322
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6323
lemma FINITE_HAS_SIZE_LEMMA: "ALL s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6324
   FINITE s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6325
   (EX n::nat. CARD_GE (GSPEC (%u::nat. EX x::nat. SETSPEC u (< x n) x)) s)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6326
  by (import hollight FINITE_HAS_SIZE_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6327
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6328
lemma HAS_SIZE_NUMSEG_LT: "ALL n::nat. HAS_SIZE (GSPEC (%u::nat. EX m::nat. SETSPEC u (< m n) m)) n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6329
  by (import hollight HAS_SIZE_NUMSEG_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6330
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6331
lemma CARD_NUMSEG_LT: "ALL x::nat. CARD (GSPEC (%u::nat. EX m::nat. SETSPEC u (< m x) m)) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6332
  by (import hollight CARD_NUMSEG_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6333
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6334
lemma FINITE_NUMSEG_LT: "ALL x::nat. FINITE (GSPEC (%u::nat. EX m::nat. SETSPEC u (< m x) m))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6335
  by (import hollight FINITE_NUMSEG_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6336
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6337
lemma HAS_SIZE_NUMSEG_LE: "ALL x::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6338
   HAS_SIZE (GSPEC (%xa::nat. EX xb::nat. SETSPEC xa (<= xb x) xb))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6339
    (x + NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6340
  by (import hollight HAS_SIZE_NUMSEG_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6341
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6342
lemma FINITE_NUMSEG_LE: "ALL x::nat. FINITE (GSPEC (%u::nat. EX m::nat. SETSPEC u (<= m x) m))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6343
  by (import hollight FINITE_NUMSEG_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6344
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6345
lemma CARD_NUMSEG_LE: "ALL x::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6346
   CARD (GSPEC (%u::nat. EX m::nat. SETSPEC u (<= m x) m)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6347
   x + NUMERAL_BIT1 (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6348
  by (import hollight CARD_NUMSEG_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6349
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6350
lemma num_FINITE: "ALL s::nat => bool. FINITE s = (EX a::nat. ALL x::nat. IN x s --> <= x a)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6351
  by (import hollight num_FINITE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6352
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6353
lemma num_FINITE_AVOID: "ALL s::nat => bool. FINITE s --> (EX a::nat. ~ IN a s)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6354
  by (import hollight num_FINITE_AVOID)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6355
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6356
lemma num_INFINITE: "(INFINITE::(nat => bool) => bool) (hollight.UNIV::nat => bool)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6357
  by (import hollight num_INFINITE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6358
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6359
lemma HAS_SIZE_INDEX: "ALL (x::'A::type => bool) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6360
   HAS_SIZE x n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6361
   (EX f::nat => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6362
       (ALL m::nat. < m n --> IN (f m) x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6363
       (ALL xa::'A::type. IN xa x --> (EX! m::nat. < m n & f m = xa)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6364
  by (import hollight HAS_SIZE_INDEX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6365
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6366
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6367
  set_of_list :: "'q_45759::type hollight.list => 'q_45759::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6368
  "set_of_list ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6369
SOME set_of_list::'q_45759::type hollight.list => 'q_45759::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6370
   set_of_list NIL = EMPTY &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6371
   (ALL (h::'q_45759::type) t::'q_45759::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6372
       set_of_list (CONS h t) = INSERT h (set_of_list t))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6373
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6374
lemma DEF_set_of_list: "set_of_list =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6375
(SOME set_of_list::'q_45759::type hollight.list => 'q_45759::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6376
    set_of_list NIL = EMPTY &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6377
    (ALL (h::'q_45759::type) t::'q_45759::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6378
        set_of_list (CONS h t) = INSERT h (set_of_list t)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6379
  by (import hollight DEF_set_of_list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6380
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6381
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6382
  list_of_set :: "('q_45777::type => bool) => 'q_45777::type hollight.list" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6383
  "list_of_set ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6384
%u::'q_45777::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6385
   SOME l::'q_45777::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6386
      set_of_list l = u & LENGTH l = CARD u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6387
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6388
lemma DEF_list_of_set: "list_of_set =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6389
(%u::'q_45777::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6390
    SOME l::'q_45777::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6391
       set_of_list l = u & LENGTH l = CARD u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6392
  by (import hollight DEF_list_of_set)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6393
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6394
lemma LIST_OF_SET_PROPERTIES: "ALL x::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6395
   FINITE x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6396
   set_of_list (list_of_set x) = x & LENGTH (list_of_set x) = CARD x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6397
  by (import hollight LIST_OF_SET_PROPERTIES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6398
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6399
lemma SET_OF_LIST_OF_SET: "ALL s::'q_45826::type => bool. FINITE s --> set_of_list (list_of_set s) = s"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6400
  by (import hollight SET_OF_LIST_OF_SET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6401
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6402
lemma LENGTH_LIST_OF_SET: "ALL s::'q_45842::type => bool. FINITE s --> LENGTH (list_of_set s) = CARD s"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6403
  by (import hollight LENGTH_LIST_OF_SET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6404
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6405
lemma MEM_LIST_OF_SET: "ALL s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6406
   FINITE s --> (ALL x::'A::type. MEM x (list_of_set s) = IN x s)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6407
  by (import hollight MEM_LIST_OF_SET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6408
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6409
lemma FINITE_SET_OF_LIST: "ALL l::'q_45887::type hollight.list. FINITE (set_of_list l)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6410
  by (import hollight FINITE_SET_OF_LIST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6411
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6412
lemma IN_SET_OF_LIST: "ALL (x::'q_45905::type) l::'q_45905::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6413
   IN x (set_of_list l) = MEM x l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6414
  by (import hollight IN_SET_OF_LIST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6415
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6416
lemma SET_OF_LIST_APPEND: "ALL (x::'q_45930::type hollight.list) xa::'q_45930::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6417
   set_of_list (APPEND x xa) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6418
   hollight.UNION (set_of_list x) (set_of_list xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6419
  by (import hollight SET_OF_LIST_APPEND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6420
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6421
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6422
  pairwise :: "('q_45989::type => 'q_45989::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6423
=> ('q_45989::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6424
  "pairwise ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6425
%(u::'q_45989::type => 'q_45989::type => bool) ua::'q_45989::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6426
   ALL (x::'q_45989::type) y::'q_45989::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6427
      IN x ua & IN y ua & x ~= y --> u x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6428
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6429
lemma DEF_pairwise: "pairwise =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6430
(%(u::'q_45989::type => 'q_45989::type => bool) ua::'q_45989::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6431
    ALL (x::'q_45989::type) y::'q_45989::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6432
       IN x ua & IN y ua & x ~= y --> u x y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6433
  by (import hollight DEF_pairwise)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6434
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6435
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6436
  PAIRWISE :: "('q_46011::type => 'q_46011::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6437
=> 'q_46011::type hollight.list => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6438
  "PAIRWISE ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6439
SOME PAIRWISE::('q_46011::type => 'q_46011::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6440
               => 'q_46011::type hollight.list => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6441
   (ALL r::'q_46011::type => 'q_46011::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6442
       PAIRWISE r NIL = True) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6443
   (ALL (h::'q_46011::type) (r::'q_46011::type => 'q_46011::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6444
       t::'q_46011::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6445
       PAIRWISE r (CONS h t) = (ALL_list (r h) t & PAIRWISE r t))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6446
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6447
lemma DEF_PAIRWISE: "PAIRWISE =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6448
(SOME PAIRWISE::('q_46011::type => 'q_46011::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6449
                => 'q_46011::type hollight.list => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6450
    (ALL r::'q_46011::type => 'q_46011::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6451
        PAIRWISE r NIL = True) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6452
    (ALL (h::'q_46011::type) (r::'q_46011::type => 'q_46011::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6453
        t::'q_46011::type hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6454
        PAIRWISE r (CONS h t) = (ALL_list (r h) t & PAIRWISE r t)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6455
  by (import hollight DEF_PAIRWISE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6456
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6457
typedef (open) ('A) finite_image = "(Collect::('A::type => bool) => 'A::type set)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6458
 (%x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6459
     (op |::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6460
      ((op =::'A::type => 'A::type => bool) x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6461
        ((Eps::('A::type => bool) => 'A::type) (%z::'A::type. True::bool)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6462
      ((FINITE::('A::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6463
        (hollight.UNIV::'A::type => bool)))"  morphisms "dest_finite_image" "mk_finite_image"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6464
  apply (rule light_ex_imp_nonempty[where t="(Eps::('A::type => bool) => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6465
 (%x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6466
     (op |::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6467
      ((op =::'A::type => 'A::type => bool) x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6468
        ((Eps::('A::type => bool) => 'A::type) (%z::'A::type. True::bool)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6469
      ((FINITE::('A::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6470
        (hollight.UNIV::'A::type => bool)))"])
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6471
  by (import hollight TYDEF_finite_image)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6472
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6473
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6474
  dest_finite_image :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6475
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6476
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6477
  mk_finite_image :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6478
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6479
lemmas "TYDEF_finite_image_@intern" = typedef_hol2hollight 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6480
  [where a="a :: 'A::type finite_image" and r=r ,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6481
   OF type_definition_finite_image]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6482
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6483
lemma FINITE_IMAGE_IMAGE: "(op =::('A::type finite_image => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6484
       => ('A::type finite_image => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6485
 (hollight.UNIV::'A::type finite_image => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6486
 ((IMAGE::('A::type => 'A::type finite_image)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6487
          => ('A::type => bool) => 'A::type finite_image => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6488
   (mk_finite_image::'A::type => 'A::type finite_image)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6489
   ((COND::bool
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6490
           => ('A::type => bool) => ('A::type => bool) => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6491
     ((FINITE::('A::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6492
       (hollight.UNIV::'A::type => bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6493
     (hollight.UNIV::'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6494
     ((INSERT::'A::type => ('A::type => bool) => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6495
       ((Eps::('A::type => bool) => 'A::type) (%z::'A::type. True::bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6496
       (EMPTY::'A::type => bool))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6497
  by (import hollight FINITE_IMAGE_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6498
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6499
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6500
  dimindex :: "('A::type => bool) => nat" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6501
  "(op ==::(('A::type => bool) => nat) => (('A::type => bool) => nat) => prop)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6502
 (dimindex::('A::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6503
 (%u::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6504
     (COND::bool => nat => nat => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6505
      ((FINITE::('A::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6506
        (hollight.UNIV::'A::type => bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6507
      ((CARD::('A::type => bool) => nat) (hollight.UNIV::'A::type => bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6508
      ((NUMERAL_BIT1::nat => nat) (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6509
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6510
lemma DEF_dimindex: "(op =::(('A::type => bool) => nat) => (('A::type => bool) => nat) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6511
 (dimindex::('A::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6512
 (%u::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6513
     (COND::bool => nat => nat => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6514
      ((FINITE::('A::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6515
        (hollight.UNIV::'A::type => bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6516
      ((CARD::('A::type => bool) => nat) (hollight.UNIV::'A::type => bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6517
      ((NUMERAL_BIT1::nat => nat) (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6518
  by (import hollight DEF_dimindex)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6519
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6520
lemma HAS_SIZE_FINITE_IMAGE: "(All::(('A::type => bool) => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6521
 (%s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6522
     (HAS_SIZE::('A::type finite_image => bool) => nat => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6523
      (hollight.UNIV::'A::type finite_image => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6524
      ((dimindex::('A::type => bool) => nat) s))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6525
  by (import hollight HAS_SIZE_FINITE_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6526
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6527
lemma CARD_FINITE_IMAGE: "(All::(('A::type => bool) => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6528
 (%s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6529
     (op =::nat => nat => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6530
      ((CARD::('A::type finite_image => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6531
        (hollight.UNIV::'A::type finite_image => bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6532
      ((dimindex::('A::type => bool) => nat) s))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6533
  by (import hollight CARD_FINITE_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6534
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6535
lemma FINITE_FINITE_IMAGE: "(FINITE::('A::type finite_image => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6536
 (hollight.UNIV::'A::type finite_image => bool)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6537
  by (import hollight FINITE_FINITE_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6538
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6539
lemma DIMINDEX_NONZERO: "ALL s::'A::type => bool. dimindex s ~= (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6540
  by (import hollight DIMINDEX_NONZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6541
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6542
lemma DIMINDEX_GE_1: "ALL x::'A::type => bool. <= (NUMERAL_BIT1 (0::nat)) (dimindex x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6543
  by (import hollight DIMINDEX_GE_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6544
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6545
lemma DIMINDEX_FINITE_IMAGE: "ALL (s::'A::type finite_image => bool) t::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6546
   dimindex s = dimindex t"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6547
  by (import hollight DIMINDEX_FINITE_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6548
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6549
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6550
  finite_index :: "nat => 'A::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6551
  "(op ==::(nat => 'A::type) => (nat => 'A::type) => prop)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6552
 (finite_index::nat => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6553
 ((Eps::((nat => 'A::type) => bool) => nat => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6554
   (%f::nat => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6555
       (All::('A::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6556
        (%x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6557
            (Ex1::(nat => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6558
             (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6559
                 (op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6560
                  ((<=::nat => nat => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6561
                    ((NUMERAL_BIT1::nat => nat) (0::nat)) n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6562
                  ((op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6563
                    ((<=::nat => nat => bool) n
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6564
                      ((dimindex::('A::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6565
                        (hollight.UNIV::'A::type => bool)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6566
                    ((op =::'A::type => 'A::type => bool) (f n) x))))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6567
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6568
lemma DEF_finite_index: "(op =::(nat => 'A::type) => (nat => 'A::type) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6569
 (finite_index::nat => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6570
 ((Eps::((nat => 'A::type) => bool) => nat => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6571
   (%f::nat => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6572
       (All::('A::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6573
        (%x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6574
            (Ex1::(nat => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6575
             (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6576
                 (op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6577
                  ((<=::nat => nat => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6578
                    ((NUMERAL_BIT1::nat => nat) (0::nat)) n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6579
                  ((op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6580
                    ((<=::nat => nat => bool) n
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6581
                      ((dimindex::('A::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6582
                        (hollight.UNIV::'A::type => bool)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6583
                    ((op =::'A::type => 'A::type => bool) (f n) x))))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6584
  by (import hollight DEF_finite_index)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6585
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6586
lemma FINITE_INDEX_WORKS_FINITE: "(op -->::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6587
 ((FINITE::('N::type => bool) => bool) (hollight.UNIV::'N::type => bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6588
 ((All::('N::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6589
   (%x::'N::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6590
       (Ex1::(nat => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6591
        (%xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6592
            (op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6593
             ((<=::nat => nat => bool) ((NUMERAL_BIT1::nat => nat) (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6594
               xa)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6595
             ((op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6596
               ((<=::nat => nat => bool) xa
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6597
                 ((dimindex::('N::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6598
                   (hollight.UNIV::'N::type => bool)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6599
               ((op =::'N::type => 'N::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6600
                 ((finite_index::nat => 'N::type) xa) x)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6601
  by (import hollight FINITE_INDEX_WORKS_FINITE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6602
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6603
lemma FINITE_INDEX_WORKS: "(All::('A::type finite_image => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6604
 (%i::'A::type finite_image.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6605
     (Ex1::(nat => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6606
      (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6607
          (op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6608
           ((<=::nat => nat => bool) ((NUMERAL_BIT1::nat => nat) (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6609
             n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6610
           ((op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6611
             ((<=::nat => nat => bool) n
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6612
               ((dimindex::('A::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6613
                 (hollight.UNIV::'A::type => bool)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6614
             ((op =::'A::type finite_image => 'A::type finite_image => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6615
               ((finite_index::nat => 'A::type finite_image) n) i))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6616
  by (import hollight FINITE_INDEX_WORKS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6617
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6618
lemma FINITE_INDEX_INJ: "(All::(nat => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6619
 (%x::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6620
     (All::(nat => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6621
      (%xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6622
          (op -->::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6623
           ((op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6624
             ((<=::nat => nat => bool) ((NUMERAL_BIT1::nat => nat) (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6625
               x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6626
             ((op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6627
               ((<=::nat => nat => bool) x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6628
                 ((dimindex::('A::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6629
                   (hollight.UNIV::'A::type => bool)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6630
               ((op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6631
                 ((<=::nat => nat => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6632
                   ((NUMERAL_BIT1::nat => nat) (0::nat)) xa)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6633
                 ((<=::nat => nat => bool) xa
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6634
                   ((dimindex::('A::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6635
                     (hollight.UNIV::'A::type => bool))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6636
           ((op =::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6637
             ((op =::'A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6638
               ((finite_index::nat => 'A::type) x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6639
               ((finite_index::nat => 'A::type) xa))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6640
             ((op =::nat => nat => bool) x xa))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6641
  by (import hollight FINITE_INDEX_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6642
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6643
lemma FORALL_FINITE_INDEX: "(op =::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6644
 ((All::('N::type finite_image => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6645
   (P::'N::type finite_image => bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6646
 ((All::(nat => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6647
   (%i::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6648
       (op -->::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6649
        ((op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6650
          ((<=::nat => nat => bool) ((NUMERAL_BIT1::nat => nat) (0::nat)) i)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6651
          ((<=::nat => nat => bool) i
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6652
            ((dimindex::('N::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6653
              (hollight.UNIV::'N::type => bool))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6654
        (P ((finite_index::nat => 'N::type finite_image) i))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6655
  by (import hollight FORALL_FINITE_INDEX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6656
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6657
typedef (open) ('A, 'B) cart = "(Collect::(('B::type finite_image => 'A::type) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6658
          => ('B::type finite_image => 'A::type) set)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6659
 (%f::'B::type finite_image => 'A::type. True::bool)"  morphisms "dest_cart" "mk_cart"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6660
  apply (rule light_ex_imp_nonempty[where t="(Eps::(('B::type finite_image => 'A::type) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6661
      => 'B::type finite_image => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6662
 (%f::'B::type finite_image => 'A::type. True::bool)"])
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6663
  by (import hollight TYDEF_cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6664
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6665
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6666
  dest_cart :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6667
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6668
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6669
  mk_cart :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6670
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6671
lemmas "TYDEF_cart_@intern" = typedef_hol2hollight 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6672
  [where a="a :: ('A::type, 'B::type) cart" and r=r ,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6673
   OF type_definition_cart]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6674
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6675
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6676
  "$" :: "('q_46418::type, 'q_46425::type) cart => nat => 'q_46418::type" ("$")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6677
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6678
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6679
  "$_def": "$ ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6680
%(u::('q_46418::type, 'q_46425::type) cart) ua::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6681
   dest_cart u (finite_index ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6682
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6683
lemma "DEF_$": "$ =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6684
(%(u::('q_46418::type, 'q_46425::type) cart) ua::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6685
    dest_cart u (finite_index ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6686
  by (import hollight "DEF_$")
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6687
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6688
lemma CART_EQ: "(All::(('A::type, 'B::type) cart => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6689
 (%x::('A::type, 'B::type) cart.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6690
     (All::(('A::type, 'B::type) cart => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6691
      (%y::('A::type, 'B::type) cart.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6692
          (op =::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6693
           ((op =::('A::type, 'B::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6694
                   => ('A::type, 'B::type) cart => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6695
             x y)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6696
           ((All::(nat => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6697
             (%xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6698
                 (op -->::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6699
                  ((op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6700
                    ((<=::nat => nat => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6701
                      ((NUMERAL_BIT1::nat => nat) (0::nat)) xa)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6702
                    ((<=::nat => nat => bool) xa
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6703
                      ((dimindex::('B::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6704
                        (hollight.UNIV::'B::type => bool))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6705
                  ((op =::'A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6706
                    (($::('A::type, 'B::type) cart => nat => 'A::type) x xa)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6707
                    (($::('A::type, 'B::type) cart => nat => 'A::type) y
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6708
                      xa))))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6709
  by (import hollight CART_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6710
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6711
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6712
  lambda :: "(nat => 'A::type) => ('A::type, 'B::type) cart" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6713
  "(op ==::((nat => 'A::type) => ('A::type, 'B::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6714
        => ((nat => 'A::type) => ('A::type, 'B::type) cart) => prop)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6715
 (lambda::(nat => 'A::type) => ('A::type, 'B::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6716
 (%u::nat => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6717
     (Eps::(('A::type, 'B::type) cart => bool) => ('A::type, 'B::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6718
      (%f::('A::type, 'B::type) cart.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6719
          (All::(nat => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6720
           (%i::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6721
               (op -->::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6722
                ((op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6723
                  ((<=::nat => nat => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6724
                    ((NUMERAL_BIT1::nat => nat) (0::nat)) i)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6725
                  ((<=::nat => nat => bool) i
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6726
                    ((dimindex::('B::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6727
                      (hollight.UNIV::'B::type => bool))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6728
                ((op =::'A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6729
                  (($::('A::type, 'B::type) cart => nat => 'A::type) f i)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6730
                  (u i)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6731
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6732
lemma DEF_lambda: "(op =::((nat => 'A::type) => ('A::type, 'B::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6733
       => ((nat => 'A::type) => ('A::type, 'B::type) cart) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6734
 (lambda::(nat => 'A::type) => ('A::type, 'B::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6735
 (%u::nat => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6736
     (Eps::(('A::type, 'B::type) cart => bool) => ('A::type, 'B::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6737
      (%f::('A::type, 'B::type) cart.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6738
          (All::(nat => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6739
           (%i::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6740
               (op -->::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6741
                ((op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6742
                  ((<=::nat => nat => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6743
                    ((NUMERAL_BIT1::nat => nat) (0::nat)) i)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6744
                  ((<=::nat => nat => bool) i
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6745
                    ((dimindex::('B::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6746
                      (hollight.UNIV::'B::type => bool))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6747
                ((op =::'A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6748
                  (($::('A::type, 'B::type) cart => nat => 'A::type) f i)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6749
                  (u i)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6750
  by (import hollight DEF_lambda)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6751
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6752
lemma LAMBDA_BETA: "(All::(nat => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6753
 (%x::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6754
     (op -->::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6755
      ((op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6756
        ((<=::nat => nat => bool) ((NUMERAL_BIT1::nat => nat) (0::nat)) x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6757
        ((<=::nat => nat => bool) x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6758
          ((dimindex::('B::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6759
            (hollight.UNIV::'B::type => bool))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6760
      ((op =::'A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6761
        (($::('A::type, 'B::type) cart => nat => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6762
          ((lambda::(nat => 'A::type) => ('A::type, 'B::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6763
            (g::nat => 'A::type))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6764
          x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6765
        (g x)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6766
  by (import hollight LAMBDA_BETA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6767
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6768
lemma LAMBDA_UNIQUE: "(All::(('A::type, 'B::type) cart => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6769
 (%x::('A::type, 'B::type) cart.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6770
     (All::((nat => 'A::type) => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6771
      (%xa::nat => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6772
          (op =::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6773
           ((All::(nat => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6774
             (%i::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6775
                 (op -->::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6776
                  ((op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6777
                    ((<=::nat => nat => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6778
                      ((NUMERAL_BIT1::nat => nat) (0::nat)) i)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6779
                    ((<=::nat => nat => bool) i
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6780
                      ((dimindex::('B::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6781
                        (hollight.UNIV::'B::type => bool))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6782
                  ((op =::'A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6783
                    (($::('A::type, 'B::type) cart => nat => 'A::type) x i)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6784
                    (xa i))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6785
           ((op =::('A::type, 'B::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6786
                   => ('A::type, 'B::type) cart => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6787
             ((lambda::(nat => 'A::type) => ('A::type, 'B::type) cart) xa)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6788
             x)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6789
  by (import hollight LAMBDA_UNIQUE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6790
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6791
lemma LAMBDA_ETA: "ALL x::('q_46616::type, 'q_46620::type) cart. lambda ($ x) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6792
  by (import hollight LAMBDA_ETA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6793
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6794
typedef (open) ('A, 'B) finite_sum = "(Collect::(('A::type finite_image, 'B::type finite_image) sum => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6795
          => ('A::type finite_image, 'B::type finite_image) sum set)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6796
 (%x::('A::type finite_image, 'B::type finite_image) sum. True::bool)"  morphisms "dest_finite_sum" "mk_finite_sum"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6797
  apply (rule light_ex_imp_nonempty[where t="(Eps::(('A::type finite_image, 'B::type finite_image) sum => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6798
      => ('A::type finite_image, 'B::type finite_image) sum)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6799
 (%x::('A::type finite_image, 'B::type finite_image) sum. True::bool)"])
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6800
  by (import hollight TYDEF_finite_sum)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6801
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6802
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6803
  dest_finite_sum :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6804
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6805
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6806
  mk_finite_sum :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6807
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6808
lemmas "TYDEF_finite_sum_@intern" = typedef_hol2hollight 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6809
  [where a="a :: ('A::type, 'B::type) finite_sum" and r=r ,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6810
   OF type_definition_finite_sum]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6811
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6812
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6813
  pastecart :: "('A::type, 'M::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6814
=> ('A::type, 'N::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6815
   => ('A::type, ('M::type, 'N::type) finite_sum) cart" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6816
  "(op ==::(('A::type, 'M::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6817
         => ('A::type, 'N::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6818
            => ('A::type, ('M::type, 'N::type) finite_sum) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6819
        => (('A::type, 'M::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6820
            => ('A::type, 'N::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6821
               => ('A::type, ('M::type, 'N::type) finite_sum) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6822
           => prop)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6823
 (pastecart::('A::type, 'M::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6824
             => ('A::type, 'N::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6825
                => ('A::type, ('M::type, 'N::type) finite_sum) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6826
 (%(u::('A::type, 'M::type) cart) ua::('A::type, 'N::type) cart.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6827
     (lambda::(nat => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6828
              => ('A::type, ('M::type, 'N::type) finite_sum) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6829
      (%i::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6830
          (COND::bool => 'A::type => 'A::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6831
           ((<=::nat => nat => bool) i
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6832
             ((dimindex::('M::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6833
               (hollight.UNIV::'M::type => bool)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6834
           (($::('A::type, 'M::type) cart => nat => 'A::type) u i)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6835
           (($::('A::type, 'N::type) cart => nat => 'A::type) ua
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6836
             ((op -::nat => nat => nat) i
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6837
               ((dimindex::('M::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6838
                 (hollight.UNIV::'M::type => bool))))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6839
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6840
lemma DEF_pastecart: "(op =::(('A::type, 'M::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6841
        => ('A::type, 'N::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6842
           => ('A::type, ('M::type, 'N::type) finite_sum) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6843
       => (('A::type, 'M::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6844
           => ('A::type, 'N::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6845
              => ('A::type, ('M::type, 'N::type) finite_sum) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6846
          => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6847
 (pastecart::('A::type, 'M::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6848
             => ('A::type, 'N::type) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6849
                => ('A::type, ('M::type, 'N::type) finite_sum) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6850
 (%(u::('A::type, 'M::type) cart) ua::('A::type, 'N::type) cart.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6851
     (lambda::(nat => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6852
              => ('A::type, ('M::type, 'N::type) finite_sum) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6853
      (%i::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6854
          (COND::bool => 'A::type => 'A::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6855
           ((<=::nat => nat => bool) i
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6856
             ((dimindex::('M::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6857
               (hollight.UNIV::'M::type => bool)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6858
           (($::('A::type, 'M::type) cart => nat => 'A::type) u i)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6859
           (($::('A::type, 'N::type) cart => nat => 'A::type) ua
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6860
             ((op -::nat => nat => nat) i
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6861
               ((dimindex::('M::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6862
                 (hollight.UNIV::'M::type => bool))))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6863
  by (import hollight DEF_pastecart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6864
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6865
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6866
  fstcart :: "('A::type, ('M::type, 'N::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6867
=> ('A::type, 'M::type) cart" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6868
  "fstcart ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6869
%u::('A::type, ('M::type, 'N::type) finite_sum) cart. lambda ($ u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6870
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6871
lemma DEF_fstcart: "fstcart =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6872
(%u::('A::type, ('M::type, 'N::type) finite_sum) cart. lambda ($ u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6873
  by (import hollight DEF_fstcart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6874
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6875
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6876
  sndcart :: "('A::type, ('M::type, 'N::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6877
=> ('A::type, 'N::type) cart" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6878
  "(op ==::(('A::type, ('M::type, 'N::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6879
         => ('A::type, 'N::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6880
        => (('A::type, ('M::type, 'N::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6881
            => ('A::type, 'N::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6882
           => prop)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6883
 (sndcart::('A::type, ('M::type, 'N::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6884
           => ('A::type, 'N::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6885
 (%u::('A::type, ('M::type, 'N::type) finite_sum) cart.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6886
     (lambda::(nat => 'A::type) => ('A::type, 'N::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6887
      (%i::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6888
          ($::('A::type, ('M::type, 'N::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6889
              => nat => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6890
           u ((op +::nat => nat => nat) i
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6891
               ((dimindex::('M::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6892
                 (hollight.UNIV::'M::type => bool)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6893
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6894
lemma DEF_sndcart: "(op =::(('A::type, ('M::type, 'N::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6895
        => ('A::type, 'N::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6896
       => (('A::type, ('M::type, 'N::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6897
           => ('A::type, 'N::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6898
          => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6899
 (sndcart::('A::type, ('M::type, 'N::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6900
           => ('A::type, 'N::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6901
 (%u::('A::type, ('M::type, 'N::type) finite_sum) cart.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6902
     (lambda::(nat => 'A::type) => ('A::type, 'N::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6903
      (%i::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6904
          ($::('A::type, ('M::type, 'N::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6905
              => nat => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6906
           u ((op +::nat => nat => nat) i
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6907
               ((dimindex::('M::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6908
                 (hollight.UNIV::'M::type => bool)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6909
  by (import hollight DEF_sndcart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6910
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6911
lemma DIMINDEX_HAS_SIZE_FINITE_SUM: "(HAS_SIZE::(('M::type, 'N::type) finite_sum => bool) => nat => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6912
 (hollight.UNIV::('M::type, 'N::type) finite_sum => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6913
 ((op +::nat => nat => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6914
   ((dimindex::('M::type => bool) => nat) (hollight.UNIV::'M::type => bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6915
   ((dimindex::('N::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6916
     (hollight.UNIV::'N::type => bool)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6917
  by (import hollight DIMINDEX_HAS_SIZE_FINITE_SUM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6918
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6919
lemma DIMINDEX_FINITE_SUM: "(op =::nat => nat => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6920
 ((dimindex::(('M::type, 'N::type) finite_sum => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6921
   (hollight.UNIV::('M::type, 'N::type) finite_sum => bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6922
 ((op +::nat => nat => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6923
   ((dimindex::('M::type => bool) => nat) (hollight.UNIV::'M::type => bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6924
   ((dimindex::('N::type => bool) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6925
     (hollight.UNIV::'N::type => bool)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6926
  by (import hollight DIMINDEX_FINITE_SUM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6927
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6928
lemma FSTCART_PASTECART: "ALL (x::('A::type, 'M::type) cart) xa::('A::type, 'N::type) cart.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6929
   fstcart (pastecart x xa) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6930
  by (import hollight FSTCART_PASTECART)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6931
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6932
lemma SNDCART_PASTECART: "ALL (x::('A::type, 'M::type) cart) xa::('A::type, 'N::type) cart.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6933
   sndcart (pastecart x xa) = xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6934
  by (import hollight SNDCART_PASTECART)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6935
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6936
lemma PASTECART_FST_SND: "ALL x::('q_46940::type, ('q_46937::type, 'q_46935::type) finite_sum) cart.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6937
   pastecart (fstcart x) (sndcart x) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6938
  by (import hollight PASTECART_FST_SND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6939
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6940
lemma PASTECART_EQ: "ALL (x::('q_46978::type, ('q_46968::type, 'q_46979::type) finite_sum) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6941
   y::('q_46978::type, ('q_46968::type, 'q_46979::type) finite_sum) cart.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6942
   (x = y) = (fstcart x = fstcart y & sndcart x = sndcart y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6943
  by (import hollight PASTECART_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6944
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6945
lemma FORALL_PASTECART: "All (P::('q_46999::type, ('q_47000::type, 'q_47001::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6946
        => bool) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6947
(ALL (x::('q_46999::type, 'q_47000::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6948
    y::('q_46999::type, 'q_47001::type) cart. P (pastecart x y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6949
  by (import hollight FORALL_PASTECART)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6950
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6951
lemma EXISTS_PASTECART: "Ex (P::('q_47021::type, ('q_47022::type, 'q_47023::type) finite_sum) cart
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6952
       => bool) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6953
(EX (x::('q_47021::type, 'q_47022::type) cart)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6954
    y::('q_47021::type, 'q_47023::type) cart. P (pastecart x y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6955
  by (import hollight EXISTS_PASTECART)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6956
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6957
lemma SURJECTIVE_IFF_INJECTIVE_GEN: "ALL (s::'A::type => bool) (t::'B::type => bool) f::'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6958
   FINITE s & FINITE t & CARD s = CARD t & SUBSET (IMAGE f s) t -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6959
   (ALL y::'B::type. IN y t --> (EX x::'A::type. IN x s & f x = y)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6960
   (ALL (x::'A::type) y::'A::type. IN x s & IN y s & f x = f y --> x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6961
  by (import hollight SURJECTIVE_IFF_INJECTIVE_GEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6962
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6963
lemma SURJECTIVE_IFF_INJECTIVE: "ALL (x::'A::type => bool) xa::'A::type => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6964
   FINITE x & SUBSET (IMAGE xa x) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6965
   (ALL y::'A::type. IN y x --> (EX xb::'A::type. IN xb x & xa xb = y)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6966
   (ALL (xb::'A::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6967
       IN xb x & IN y x & xa xb = xa y --> xb = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6968
  by (import hollight SURJECTIVE_IFF_INJECTIVE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6969
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6970
lemma IMAGE_IMP_INJECTIVE_GEN: "ALL (s::'A::type => bool) (t::'B::type => bool) f::'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6971
   FINITE s & CARD s = CARD t & IMAGE f s = t -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6972
   (ALL (x::'A::type) y::'A::type. IN x s & IN y s & f x = f y --> x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6973
  by (import hollight IMAGE_IMP_INJECTIVE_GEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6974
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6975
lemma IMAGE_IMP_INJECTIVE: "ALL (s::'q_47348::type => bool) f::'q_47348::type => 'q_47348::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6976
   FINITE s & IMAGE f s = s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6977
   (ALL (x::'q_47348::type) y::'q_47348::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6978
       IN x s & IN y s & f x = f y --> x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6979
  by (import hollight IMAGE_IMP_INJECTIVE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6980
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6981
lemma CARD_LE_INJ: "ALL (x::'A::type => bool) xa::'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6982
   FINITE x & FINITE xa & <= (CARD x) (CARD xa) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6983
   (EX f::'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6984
       SUBSET (IMAGE f x) xa &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6985
       (ALL (xa::'A::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6986
           IN xa x & IN y x & f xa = f y --> xa = y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6987
  by (import hollight CARD_LE_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6988
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6989
lemma FORALL_IN_CLAUSES: "(ALL x::'q_47454::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6990
    (ALL xa::'q_47454::type. IN xa EMPTY --> x xa) = True) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6991
(ALL (x::'q_47494::type => bool) (xa::'q_47494::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6992
    xb::'q_47494::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6993
    (ALL xc::'q_47494::type. IN xc (INSERT xa xb) --> x xc) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6994
    (x xa & (ALL xa::'q_47494::type. IN xa xb --> x xa)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6995
  by (import hollight FORALL_IN_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6996
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6997
lemma EXISTS_IN_CLAUSES: "(ALL x::'q_47514::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6998
    (EX xa::'q_47514::type. IN xa EMPTY & x xa) = False) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  6999
(ALL (x::'q_47554::type => bool) (xa::'q_47554::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7000
    xb::'q_47554::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7001
    (EX xc::'q_47554::type. IN xc (INSERT xa xb) & x xc) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7002
    (x xa | (EX xa::'q_47554::type. IN xa xb & x xa)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7003
  by (import hollight EXISTS_IN_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7004
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7005
lemma SURJECTIVE_ON_RIGHT_INVERSE: "ALL (x::'q_47610::type => 'q_47611::type) xa::'q_47611::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7006
   (ALL xb::'q_47611::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7007
       IN xb xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7008
       (EX xa::'q_47610::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7009
           IN xa (s::'q_47610::type => bool) & x xa = xb)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7010
   (EX g::'q_47611::type => 'q_47610::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7011
       ALL y::'q_47611::type. IN y xa --> IN (g y) s & x (g y) = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7012
  by (import hollight SURJECTIVE_ON_RIGHT_INVERSE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7013
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7014
lemma INJECTIVE_ON_LEFT_INVERSE: "ALL (x::'q_47704::type => 'q_47707::type) xa::'q_47704::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7015
   (ALL (xb::'q_47704::type) y::'q_47704::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7016
       IN xb xa & IN y xa & x xb = x y --> xb = y) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7017
   (EX xb::'q_47707::type => 'q_47704::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7018
       ALL xc::'q_47704::type. IN xc xa --> xb (x xc) = xc)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7019
  by (import hollight INJECTIVE_ON_LEFT_INVERSE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7020
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7021
lemma SURJECTIVE_RIGHT_INVERSE: "(ALL y::'q_47732::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7022
    EX x::'q_47735::type. (f::'q_47735::type => 'q_47732::type) x = y) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7023
(EX g::'q_47732::type => 'q_47735::type. ALL y::'q_47732::type. f (g y) = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7024
  by (import hollight SURJECTIVE_RIGHT_INVERSE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7025
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7026
lemma INJECTIVE_LEFT_INVERSE: "(ALL (x::'q_47769::type) xa::'q_47769::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7027
    (f::'q_47769::type => 'q_47772::type) x = f xa --> x = xa) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7028
(EX g::'q_47772::type => 'q_47769::type. ALL x::'q_47769::type. g (f x) = x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7029
  by (import hollight INJECTIVE_LEFT_INVERSE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7030
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7031
lemma FUNCTION_FACTORS_RIGHT: "ALL (x::'q_47808::type => 'q_47809::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7032
   xa::'q_47796::type => 'q_47809::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7033
   (ALL xb::'q_47808::type. EX y::'q_47796::type. xa y = x xb) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7034
   (EX xb::'q_47808::type => 'q_47796::type. x = xa o xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7035
  by (import hollight FUNCTION_FACTORS_RIGHT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7036
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7037
lemma FUNCTION_FACTORS_LEFT: "ALL (x::'q_47881::type => 'q_47882::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7038
   xa::'q_47881::type => 'q_47861::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7039
   (ALL (xb::'q_47881::type) y::'q_47881::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7040
       xa xb = xa y --> x xb = x y) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7041
   (EX xb::'q_47861::type => 'q_47882::type. x = xb o xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7042
  by (import hollight FUNCTION_FACTORS_LEFT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7043
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7044
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7045
  dotdot :: "nat => nat => nat => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7046
  "dotdot ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7047
%(u::nat) ua::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7048
   GSPEC (%ub::nat. EX x::nat. SETSPEC ub (<= u x & <= x ua) x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7049
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7050
lemma DEF__dot__dot_: "dotdot =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7051
(%(u::nat) ua::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7052
    GSPEC (%ub::nat. EX x::nat. SETSPEC ub (<= u x & <= x ua) x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7053
  by (import hollight DEF__dot__dot_)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7054
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7055
lemma FINITE_NUMSEG: "ALL (m::nat) n::nat. FINITE (dotdot m n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7056
  by (import hollight FINITE_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7057
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7058
lemma NUMSEG_COMBINE_R: "ALL (x::'q_47957::type) (p::nat) m::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7059
   <= m p & <= p (n::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7060
   hollight.UNION (dotdot m p) (dotdot (p + NUMERAL_BIT1 (0::nat)) n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7061
   dotdot m n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7062
  by (import hollight NUMSEG_COMBINE_R)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7063
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7064
lemma NUMSEG_COMBINE_L: "ALL (x::'q_47995::type) (p::nat) m::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7065
   <= m p & <= p (n::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7066
   hollight.UNION (dotdot m (p - NUMERAL_BIT1 (0::nat))) (dotdot p n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7067
   dotdot m n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7068
  by (import hollight NUMSEG_COMBINE_L)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7069
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7070
lemma NUMSEG_LREC: "ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7071
   <= x xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7072
   INSERT x (dotdot (x + NUMERAL_BIT1 (0::nat)) xa) = dotdot x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7073
  by (import hollight NUMSEG_LREC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7074
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7075
lemma NUMSEG_RREC: "ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7076
   <= x xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7077
   INSERT xa (dotdot x (xa - NUMERAL_BIT1 (0::nat))) = dotdot x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7078
  by (import hollight NUMSEG_RREC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7079
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7080
lemma NUMSEG_REC: "ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7081
   <= x (Suc xa) --> dotdot x (Suc xa) = INSERT (Suc xa) (dotdot x xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7082
  by (import hollight NUMSEG_REC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7083
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7084
lemma IN_NUMSEG: "ALL (x::nat) (xa::nat) xb::nat. IN xb (dotdot x xa) = (<= x xb & <= xb xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7085
  by (import hollight IN_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7086
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7087
lemma NUMSEG_SING: "ALL x::nat. dotdot x x = INSERT x EMPTY"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7088
  by (import hollight NUMSEG_SING)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7089
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7090
lemma NUMSEG_EMPTY: "ALL (x::nat) xa::nat. (dotdot x xa = EMPTY) = < xa x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7091
  by (import hollight NUMSEG_EMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7092
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7093
lemma CARD_NUMSEG_LEMMA: "ALL (m::nat) d::nat. CARD (dotdot m (m + d)) = d + NUMERAL_BIT1 (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7094
  by (import hollight CARD_NUMSEG_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7095
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7096
lemma CARD_NUMSEG: "ALL (m::nat) n::nat. CARD (dotdot m n) = n + NUMERAL_BIT1 (0::nat) - m"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7097
  by (import hollight CARD_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7098
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7099
lemma HAS_SIZE_NUMSEG: "ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7100
   HAS_SIZE (dotdot x xa) (xa + NUMERAL_BIT1 (0::nat) - x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7101
  by (import hollight HAS_SIZE_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7102
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7103
lemma CARD_NUMSEG_1: "ALL x::nat. CARD (dotdot (NUMERAL_BIT1 (0::nat)) x) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7104
  by (import hollight CARD_NUMSEG_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7105
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7106
lemma HAS_SIZE_NUMSEG_1: "ALL x::nat. HAS_SIZE (dotdot (NUMERAL_BIT1 (0::nat)) x) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7107
  by (import hollight HAS_SIZE_NUMSEG_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7108
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7109
lemma NUMSEG_CLAUSES: "(ALL m::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7110
    dotdot m (0::nat) = COND (m = (0::nat)) (INSERT (0::nat) EMPTY) EMPTY) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7111
(ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7112
    dotdot m (Suc n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7113
    COND (<= m (Suc n)) (INSERT (Suc n) (dotdot m n)) (dotdot m n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7114
  by (import hollight NUMSEG_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7115
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7116
lemma FINITE_INDEX_NUMSEG: "ALL s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7117
   FINITE s =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7118
   (EX f::nat => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7119
       (ALL (i::nat) j::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7120
           IN i (dotdot (NUMERAL_BIT1 (0::nat)) (CARD s)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7121
           IN j (dotdot (NUMERAL_BIT1 (0::nat)) (CARD s)) & f i = f j -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7122
           i = j) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7123
       s = IMAGE f (dotdot (NUMERAL_BIT1 (0::nat)) (CARD s)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7124
  by (import hollight FINITE_INDEX_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7125
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7126
lemma FINITE_INDEX_NUMBERS: "ALL s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7127
   FINITE s =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7128
   (EX (k::nat => bool) f::nat => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7129
       (ALL (i::nat) j::nat. IN i k & IN j k & f i = f j --> i = j) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7130
       FINITE k & s = IMAGE f k)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7131
  by (import hollight FINITE_INDEX_NUMBERS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7132
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7133
lemma DISJOINT_NUMSEG: "ALL (x::nat) (xa::nat) (xb::nat) xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7134
   DISJOINT (dotdot x xa) (dotdot xb xc) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7135
   (< xa xb | < xc x | < xa x | < xc xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7136
  by (import hollight DISJOINT_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7137
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7138
lemma NUMSEG_ADD_SPLIT: "ALL (x::nat) (xa::nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7139
   <= x (xa + NUMERAL_BIT1 (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7140
   dotdot x (xa + xb) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7141
   hollight.UNION (dotdot x xa)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7142
    (dotdot (xa + NUMERAL_BIT1 (0::nat)) (xa + xb))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7143
  by (import hollight NUMSEG_ADD_SPLIT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7144
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7145
lemma NUMSEG_OFFSET_IMAGE: "ALL (x::nat) (xa::nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7146
   dotdot (x + xb) (xa + xb) = IMAGE (%i::nat. i + xb) (dotdot x xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7147
  by (import hollight NUMSEG_OFFSET_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7148
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7149
lemma SUBSET_NUMSEG: "ALL (m::nat) (n::nat) (p::nat) q::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7150
   SUBSET (dotdot m n) (dotdot p q) = (< n m | <= p m & <= n q)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7151
  by (import hollight SUBSET_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7152
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7153
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7154
  neutral :: "('q_48776::type => 'q_48776::type => 'q_48776::type) => 'q_48776::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7155
  "neutral ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7156
%u::'q_48776::type => 'q_48776::type => 'q_48776::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7157
   SOME x::'q_48776::type. ALL y::'q_48776::type. u x y = y & u y x = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7158
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7159
lemma DEF_neutral: "neutral =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7160
(%u::'q_48776::type => 'q_48776::type => 'q_48776::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7161
    SOME x::'q_48776::type. ALL y::'q_48776::type. u x y = y & u y x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7162
  by (import hollight DEF_neutral)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7163
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7164
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7165
  monoidal :: "('A::type => 'A::type => 'A::type) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7166
  "monoidal ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7167
%u::'A::type => 'A::type => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7168
   (ALL (x::'A::type) y::'A::type. u x y = u y x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7169
   (ALL (x::'A::type) (y::'A::type) z::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7170
       u x (u y z) = u (u x y) z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7171
   (ALL x::'A::type. u (neutral u) x = x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7172
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7173
lemma DEF_monoidal: "monoidal =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7174
(%u::'A::type => 'A::type => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7175
    (ALL (x::'A::type) y::'A::type. u x y = u y x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7176
    (ALL (x::'A::type) (y::'A::type) z::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7177
        u x (u y z) = u (u x y) z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7178
    (ALL x::'A::type. u (neutral u) x = x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7179
  by (import hollight DEF_monoidal)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7180
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7181
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7182
  support :: "('B::type => 'B::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7183
=> ('A::type => 'B::type) => ('A::type => bool) => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7184
  "support ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7185
%(u::'B::type => 'B::type => 'B::type) (ua::'A::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7186
   ub::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7187
   GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7188
    (%uc::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7189
        EX x::'A::type. SETSPEC uc (IN x ub & ua x ~= neutral u) x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7190
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7191
lemma DEF_support: "support =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7192
(%(u::'B::type => 'B::type => 'B::type) (ua::'A::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7193
    ub::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7194
    GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7195
     (%uc::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7196
         EX x::'A::type. SETSPEC uc (IN x ub & ua x ~= neutral u) x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7197
  by (import hollight DEF_support)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7198
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7199
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7200
  iterate :: "('q_48881::type => 'q_48881::type => 'q_48881::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7201
=> ('A::type => bool) => ('A::type => 'q_48881::type) => 'q_48881::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7202
  "iterate ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7203
%(u::'q_48881::type => 'q_48881::type => 'q_48881::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7204
   (ua::'A::type => bool) ub::'A::type => 'q_48881::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7205
   ITSET (%x::'A::type. u (ub x)) (support u ub ua) (neutral u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7206
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7207
lemma DEF_iterate: "iterate =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7208
(%(u::'q_48881::type => 'q_48881::type => 'q_48881::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7209
    (ua::'A::type => bool) ub::'A::type => 'q_48881::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7210
    ITSET (%x::'A::type. u (ub x)) (support u ub ua) (neutral u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7211
  by (import hollight DEF_iterate)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7212
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7213
lemma IN_SUPPORT: "ALL (x::'q_48924::type => 'q_48924::type => 'q_48924::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7214
   (xa::'q_48927::type => 'q_48924::type) (xb::'q_48927::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7215
   xc::'q_48927::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7216
   IN xb (support x xa xc) = (IN xb xc & xa xb ~= neutral x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7217
  by (import hollight IN_SUPPORT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7218
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7219
lemma SUPPORT_SUPPORT: "ALL (x::'q_48949::type => 'q_48949::type => 'q_48949::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7220
   (xa::'q_48960::type => 'q_48949::type) xb::'q_48960::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7221
   support x xa (support x xa xb) = support x xa xb"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7222
  by (import hollight SUPPORT_SUPPORT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7223
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7224
lemma SUPPORT_EMPTY: "ALL (x::'q_48985::type => 'q_48985::type => 'q_48985::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7225
   (xa::'q_48999::type => 'q_48985::type) xb::'q_48999::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7226
   (ALL xc::'q_48999::type. IN xc xb --> xa xc = neutral x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7227
   (support x xa xb = EMPTY)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7228
  by (import hollight SUPPORT_EMPTY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7229
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7230
lemma SUPPORT_SUBSET: "ALL (x::'q_49019::type => 'q_49019::type => 'q_49019::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7231
   (xa::'q_49020::type => 'q_49019::type) xb::'q_49020::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7232
   SUBSET (support x xa xb) xb"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7233
  by (import hollight SUPPORT_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7234
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7235
lemma FINITE_SUPPORT: "ALL (u::'q_49043::type => 'q_49043::type => 'q_49043::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7236
   (f::'q_49037::type => 'q_49043::type) s::'q_49037::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7237
   FINITE s --> FINITE (support u f s)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7238
  by (import hollight FINITE_SUPPORT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7239
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7240
lemma SUPPORT_CLAUSES: "(ALL x::'q_49061::type => 'q_49091::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7241
    support (u_4215::'q_49091::type => 'q_49091::type => 'q_49091::type) x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7242
     EMPTY =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7243
    EMPTY) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7244
(ALL (x::'q_49109::type => 'q_49091::type) (xa::'q_49109::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7245
    xb::'q_49109::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7246
    support u_4215 x (INSERT xa xb) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7247
    COND (x xa = neutral u_4215) (support u_4215 x xb)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7248
     (INSERT xa (support u_4215 x xb))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7249
(ALL (x::'q_49142::type => 'q_49091::type) (xa::'q_49142::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7250
    xb::'q_49142::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7251
    support u_4215 x (DELETE xb xa) = DELETE (support u_4215 x xb) xa) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7252
(ALL (x::'q_49180::type => 'q_49091::type) (xa::'q_49180::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7253
    xb::'q_49180::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7254
    support u_4215 x (hollight.UNION xa xb) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7255
    hollight.UNION (support u_4215 x xa) (support u_4215 x xb)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7256
(ALL (x::'q_49218::type => 'q_49091::type) (xa::'q_49218::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7257
    xb::'q_49218::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7258
    support u_4215 x (hollight.INTER xa xb) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7259
    hollight.INTER (support u_4215 x xa) (support u_4215 x xb)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7260
(ALL (x::'q_49254::type => 'q_49091::type) (xa::'q_49254::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7261
    xb::'q_49254::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7262
    support u_4215 x (DIFF xa xb) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7263
    DIFF (support u_4215 x xa) (support u_4215 x xb))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7264
  by (import hollight SUPPORT_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7265
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7266
lemma ITERATE_SUPPORT: "ALL (x::'q_49275::type => 'q_49275::type => 'q_49275::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7267
   (xa::'q_49276::type => 'q_49275::type) xb::'q_49276::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7268
   FINITE (support x xa xb) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7269
   iterate x (support x xa xb) xa = iterate x xb xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7270
  by (import hollight ITERATE_SUPPORT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7271
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7272
lemma SUPPORT_DELTA: "ALL (x::'q_49320::type => 'q_49320::type => 'q_49320::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7273
   (xa::'q_49348::type => bool) (xb::'q_49348::type => 'q_49320::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7274
   xc::'q_49348::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7275
   support x (%xa::'q_49348::type. COND (xa = xc) (xb xa) (neutral x)) xa =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7276
   COND (IN xc xa) (support x xb (INSERT xc EMPTY)) EMPTY"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7277
  by (import hollight SUPPORT_DELTA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7278
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7279
lemma FINITE_SUPPORT_DELTA: "ALL (x::'q_49369::type => 'q_49369::type => 'q_49369::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7280
   (xa::'q_49378::type => 'q_49369::type) xb::'q_49378::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7281
   FINITE
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7282
    (support x (%xc::'q_49378::type. COND (xc = xb) (xa xc) (neutral x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7283
      (s::'q_49378::type => bool))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7284
  by (import hollight FINITE_SUPPORT_DELTA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7285
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7286
lemma ITERATE_CLAUSES_GEN: "ALL u_4215::'B::type => 'B::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7287
   monoidal u_4215 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7288
   (ALL f::'A::type => 'B::type. iterate u_4215 EMPTY f = neutral u_4215) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7289
   (ALL (f::'A::type => 'B::type) (x::'A::type) s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7290
       monoidal u_4215 & FINITE (support u_4215 f s) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7291
       iterate u_4215 (INSERT x s) f =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7292
       COND (IN x s) (iterate u_4215 s f)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7293
        (u_4215 (f x) (iterate u_4215 s f)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7294
  by (import hollight ITERATE_CLAUSES_GEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7295
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7296
lemma ITERATE_CLAUSES: "ALL x::'q_49546::type => 'q_49546::type => 'q_49546::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7297
   monoidal x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7298
   (ALL f::'q_49504::type => 'q_49546::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7299
       iterate x EMPTY f = neutral x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7300
   (ALL (f::'q_49548::type => 'q_49546::type) (xa::'q_49548::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7301
       s::'q_49548::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7302
       FINITE s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7303
       iterate x (INSERT xa s) f =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7304
       COND (IN xa s) (iterate x s f) (x (f xa) (iterate x s f)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7305
  by (import hollight ITERATE_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7306
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7307
lemma ITERATE_UNION: "ALL u_4215::'q_49634::type => 'q_49634::type => 'q_49634::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7308
   monoidal u_4215 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7309
   (ALL (f::'q_49619::type => 'q_49634::type) (s::'q_49619::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7310
       x::'q_49619::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7311
       FINITE s & FINITE x & DISJOINT s x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7312
       iterate u_4215 (hollight.UNION s x) f =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7313
       u_4215 (iterate u_4215 s f) (iterate u_4215 x f))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7314
  by (import hollight ITERATE_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7315
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7316
lemma ITERATE_UNION_GEN: "ALL u_4215::'B::type => 'B::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7317
   monoidal u_4215 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7318
   (ALL (f::'A::type => 'B::type) (s::'A::type => bool) t::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7319
       FINITE (support u_4215 f s) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7320
       FINITE (support u_4215 f t) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7321
       DISJOINT (support u_4215 f s) (support u_4215 f t) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7322
       iterate u_4215 (hollight.UNION s t) f =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7323
       u_4215 (iterate u_4215 s f) (iterate u_4215 t f))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7324
  by (import hollight ITERATE_UNION_GEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7325
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7326
lemma ITERATE_DIFF: "ALL u::'q_49777::type => 'q_49777::type => 'q_49777::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7327
   monoidal u -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7328
   (ALL (f::'q_49773::type => 'q_49777::type) (s::'q_49773::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7329
       t::'q_49773::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7330
       FINITE s & SUBSET t s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7331
       u (iterate u (DIFF s t) f) (iterate u t f) = iterate u s f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7332
  by (import hollight ITERATE_DIFF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7333
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7334
lemma ITERATE_DIFF_GEN: "ALL u_4215::'B::type => 'B::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7335
   monoidal u_4215 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7336
   (ALL (f::'A::type => 'B::type) (s::'A::type => bool) t::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7337
       FINITE (support u_4215 f s) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7338
       SUBSET (support u_4215 f t) (support u_4215 f s) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7339
       u_4215 (iterate u_4215 (DIFF s t) f) (iterate u_4215 t f) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7340
       iterate u_4215 s f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7341
  by (import hollight ITERATE_DIFF_GEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7342
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7343
lemma ITERATE_CLOSED: "ALL u_4215::'B::type => 'B::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7344
   monoidal u_4215 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7345
   (ALL P::'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7346
       P (neutral u_4215) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7347
       (ALL (x::'B::type) y::'B::type. P x & P y --> P (u_4215 x y)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7348
       (ALL (f::'A::type => 'B::type) x::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7349
           FINITE x & (ALL xa::'A::type. IN xa x --> P (f xa)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7350
           P (iterate u_4215 x f)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7351
  by (import hollight ITERATE_CLOSED)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7352
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7353
lemma ITERATE_CLOSED_GEN: "ALL u_4215::'B::type => 'B::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7354
   monoidal u_4215 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7355
   (ALL P::'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7356
       P (neutral u_4215) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7357
       (ALL (x::'B::type) y::'B::type. P x & P y --> P (u_4215 x y)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7358
       (ALL (f::'A::type => 'B::type) s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7359
           FINITE (support u_4215 f s) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7360
           (ALL x::'A::type. IN x s & f x ~= neutral u_4215 --> P (f x)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7361
           P (iterate u_4215 s f)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7362
  by (import hollight ITERATE_CLOSED_GEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7363
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7364
lemma ITERATE_RELATED: "ALL u_4215::'B::type => 'B::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7365
   monoidal u_4215 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7366
   (ALL R::'B::type => 'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7367
       R (neutral u_4215) (neutral u_4215) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7368
       (ALL (x1::'B::type) (y1::'B::type) (x2::'B::type) y2::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7369
           R x1 x2 & R y1 y2 --> R (u_4215 x1 y1) (u_4215 x2 y2)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7370
       (ALL (f::'A::type => 'B::type) (g::'A::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7371
           x::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7372
           FINITE x & (ALL xa::'A::type. IN xa x --> R (f xa) (g xa)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7373
           R (iterate u_4215 x f) (iterate u_4215 x g)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7374
  by (import hollight ITERATE_RELATED)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7375
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7376
lemma ITERATE_EQ_NEUTRAL: "ALL u_4215::'B::type => 'B::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7377
   monoidal u_4215 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7378
   (ALL (f::'A::type => 'B::type) s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7379
       (ALL x::'A::type. IN x s --> f x = neutral u_4215) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7380
       iterate u_4215 s f = neutral u_4215)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7381
  by (import hollight ITERATE_EQ_NEUTRAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7382
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7383
lemma ITERATE_SING: "ALL x::'B::type => 'B::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7384
   monoidal x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7385
   (ALL (f::'A::type => 'B::type) xa::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7386
       iterate x (INSERT xa EMPTY) f = f xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7387
  by (import hollight ITERATE_SING)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7388
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7389
lemma ITERATE_DELTA: "ALL u_4215::'q_50229::type => 'q_50229::type => 'q_50229::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7390
   monoidal u_4215 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7391
   (ALL (x::'q_50248::type => 'q_50229::type) (xa::'q_50248::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7392
       xb::'q_50248::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7393
       iterate u_4215 xb
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7394
        (%xb::'q_50248::type. COND (xb = xa) (x xb) (neutral u_4215)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7395
       COND (IN xa xb) (x xa) (neutral u_4215))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7396
  by (import hollight ITERATE_DELTA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7397
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7398
lemma ITERATE_IMAGE: "ALL u_4215::'q_50327::type => 'q_50327::type => 'q_50327::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7399
   monoidal u_4215 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7400
   (ALL (f::'q_50326::type => 'q_50298::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7401
       (g::'q_50298::type => 'q_50327::type) x::'q_50326::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7402
       FINITE x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7403
       (ALL (xa::'q_50326::type) y::'q_50326::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7404
           IN xa x & IN y x & f xa = f y --> xa = y) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7405
       iterate u_4215 (IMAGE f x) g = iterate u_4215 x (g o f))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7406
  by (import hollight ITERATE_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7407
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7408
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7409
  nsum :: "('q_50348::type => bool) => ('q_50348::type => nat) => nat" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7410
  "(op ==::(('q_50348::type => bool) => ('q_50348::type => nat) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7411
        => (('q_50348::type => bool) => ('q_50348::type => nat) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7412
           => prop)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7413
 (nsum::('q_50348::type => bool) => ('q_50348::type => nat) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7414
 ((iterate::(nat => nat => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7415
            => ('q_50348::type => bool) => ('q_50348::type => nat) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7416
   (op +::nat => nat => nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7417
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7418
lemma DEF_nsum: "(op =::(('q_50348::type => bool) => ('q_50348::type => nat) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7419
       => (('q_50348::type => bool) => ('q_50348::type => nat) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7420
          => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7421
 (nsum::('q_50348::type => bool) => ('q_50348::type => nat) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7422
 ((iterate::(nat => nat => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7423
            => ('q_50348::type => bool) => ('q_50348::type => nat) => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7424
   (op +::nat => nat => nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7425
  by (import hollight DEF_nsum)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7426
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7427
lemma NEUTRAL_ADD: "neutral op + = (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7428
  by (import hollight NEUTRAL_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7429
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7430
lemma NEUTRAL_MUL: "neutral op * = NUMERAL_BIT1 (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7431
  by (import hollight NEUTRAL_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7432
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7433
lemma MONOIDAL_ADD: "(monoidal::(nat => nat => nat) => bool) (op +::nat => nat => nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7434
  by (import hollight MONOIDAL_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7435
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7436
lemma MONOIDAL_MUL: "(monoidal::(nat => nat => nat) => bool) (op *::nat => nat => nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7437
  by (import hollight MONOIDAL_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7438
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7439
lemma NSUM_CLAUSES: "(ALL x::'q_50386::type => nat. nsum EMPTY x = (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7440
(ALL (x::'q_50425::type) (xa::'q_50425::type => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7441
    xb::'q_50425::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7442
    FINITE xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7443
    nsum (INSERT x xb) xa = COND (IN x xb) (nsum xb xa) (xa x + nsum xb xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7444
  by (import hollight NSUM_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7445
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7446
lemma NSUM_UNION: "ALL (x::'q_50451::type => nat) (xa::'q_50451::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7447
   xb::'q_50451::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7448
   FINITE xa & FINITE xb & DISJOINT xa xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7449
   nsum (hollight.UNION xa xb) x = nsum xa x + nsum xb x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7450
  by (import hollight NSUM_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7451
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7452
lemma NSUM_DIFF: "ALL (f::'q_50506::type => nat) (s::'q_50506::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7453
   t::'q_50506::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7454
   FINITE s & SUBSET t s --> nsum (DIFF s t) f = nsum s f - nsum t f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7455
  by (import hollight NSUM_DIFF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7456
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7457
lemma NSUM_SUPPORT: "ALL (x::'q_50545::type => nat) xa::'q_50545::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7458
   FINITE (support op + x xa) --> nsum (support op + x xa) x = nsum xa x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7459
  by (import hollight NSUM_SUPPORT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7460
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7461
lemma NSUM_ADD: "ALL (f::'q_50591::type => nat) (g::'q_50591::type => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7462
   s::'q_50591::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7463
   FINITE s --> nsum s (%x::'q_50591::type. f x + g x) = nsum s f + nsum s g"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7464
  by (import hollight NSUM_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7465
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7466
lemma NSUM_CMUL: "ALL (f::'q_50629::type => nat) (c::nat) s::'q_50629::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7467
   FINITE s --> nsum s (%x::'q_50629::type. c * f x) = c * nsum s f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7468
  by (import hollight NSUM_CMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7469
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7470
lemma NSUM_LE: "ALL (x::'q_50668::type => nat) (xa::'q_50668::type => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7471
   xb::'q_50668::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7472
   FINITE xb & (ALL xc::'q_50668::type. IN xc xb --> <= (x xc) (xa xc)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7473
   <= (nsum xb x) (nsum xb xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7474
  by (import hollight NSUM_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7475
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7476
lemma NSUM_LT: "ALL (f::'A::type => nat) (g::'A::type => nat) s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7477
   FINITE s &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7478
   (ALL x::'A::type. IN x s --> <= (f x) (g x)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7479
   (EX x::'A::type. IN x s & < (f x) (g x)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7480
   < (nsum s f) (nsum s g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7481
  by (import hollight NSUM_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7482
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7483
lemma NSUM_LT_ALL: "ALL (f::'q_50790::type => nat) (g::'q_50790::type => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7484
   s::'q_50790::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7485
   FINITE s &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7486
   s ~= EMPTY & (ALL x::'q_50790::type. IN x s --> < (f x) (g x)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7487
   < (nsum s f) (nsum s g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7488
  by (import hollight NSUM_LT_ALL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7489
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7490
lemma NSUM_EQ: "ALL (x::'q_50832::type => nat) (xa::'q_50832::type => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7491
   xb::'q_50832::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7492
   FINITE xb & (ALL xc::'q_50832::type. IN xc xb --> x xc = xa xc) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7493
   nsum xb x = nsum xb xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7494
  by (import hollight NSUM_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7495
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7496
lemma NSUM_CONST: "ALL (c::nat) s::'q_50862::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7497
   FINITE s --> nsum s (%n::'q_50862::type. c) = CARD s * c"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7498
  by (import hollight NSUM_CONST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7499
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7500
lemma NSUM_EQ_0: "ALL (x::'A::type => nat) xa::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7501
   (ALL xb::'A::type. IN xb xa --> x xb = (0::nat)) --> nsum xa x = (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7502
  by (import hollight NSUM_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7503
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7504
lemma NSUM_0: "ALL x::'A::type => bool. nsum x (%n::'A::type. 0::nat) = (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7505
  by (import hollight NSUM_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7506
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7507
lemma NSUM_POS_LE: "ALL (x::'q_50941::type => nat) xa::'q_50941::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7508
   FINITE xa & (ALL xb::'q_50941::type. IN xb xa --> <= (0::nat) (x xb)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7509
   <= (0::nat) (nsum xa x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7510
  by (import hollight NSUM_POS_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7511
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7512
lemma NSUM_POS_BOUND: "ALL (f::'A::type => nat) (b::nat) x::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7513
   FINITE x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7514
   (ALL xa::'A::type. IN xa x --> <= (0::nat) (f xa)) & <= (nsum x f) b -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7515
   (ALL xa::'A::type. IN xa x --> <= (f xa) b)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7516
  by (import hollight NSUM_POS_BOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7517
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7518
lemma NSUM_POS_EQ_0: "ALL (x::'q_51076::type => nat) xa::'q_51076::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7519
   FINITE xa &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7520
   (ALL xb::'q_51076::type. IN xb xa --> <= (0::nat) (x xb)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7521
   nsum xa x = (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7522
   (ALL xb::'q_51076::type. IN xb xa --> x xb = (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7523
  by (import hollight NSUM_POS_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7524
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7525
lemma NSUM_SING: "ALL (x::'q_51096::type => nat) xa::'q_51096::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7526
   nsum (INSERT xa EMPTY) x = x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7527
  by (import hollight NSUM_SING)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7528
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7529
lemma NSUM_DELTA: "ALL (x::'A::type => bool) xa::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7530
   nsum x (%x::'A::type. COND (x = xa) (b::nat) (0::nat)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7531
   COND (IN xa x) b (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7532
  by (import hollight NSUM_DELTA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7533
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7534
lemma NSUM_SWAP: "ALL (f::'A::type => 'B::type => nat) (x::'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7535
   xa::'B::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7536
   FINITE x & FINITE xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7537
   nsum x (%i::'A::type. nsum xa (f i)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7538
   nsum xa (%j::'B::type. nsum x (%i::'A::type. f i j))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7539
  by (import hollight NSUM_SWAP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7540
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7541
lemma NSUM_IMAGE: "ALL (x::'q_51236::type => 'q_51212::type) (xa::'q_51212::type => nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7542
   xb::'q_51236::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7543
   FINITE xb &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7544
   (ALL (xa::'q_51236::type) y::'q_51236::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7545
       IN xa xb & IN y xb & x xa = x y --> xa = y) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7546
   nsum (IMAGE x xb) xa = nsum xb (xa o x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7547
  by (import hollight NSUM_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7548
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7549
lemma NSUM_SUPERSET: "ALL (f::'A::type => nat) (u::'A::type => bool) v::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7550
   FINITE u &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7551
   SUBSET u v & (ALL x::'A::type. IN x v & ~ IN x u --> f x = (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7552
   nsum v f = nsum u f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7553
  by (import hollight NSUM_SUPERSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7554
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7555
lemma NSUM_UNION_RZERO: "ALL (f::'A::type => nat) (u::'A::type => bool) v::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7556
   FINITE u & (ALL x::'A::type. IN x v & ~ IN x u --> f x = (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7557
   nsum (hollight.UNION u v) f = nsum u f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7558
  by (import hollight NSUM_UNION_RZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7559
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7560
lemma NSUM_UNION_LZERO: "ALL (f::'A::type => nat) (u::'A::type => bool) v::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7561
   FINITE v & (ALL x::'A::type. IN x u & ~ IN x v --> f x = (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7562
   nsum (hollight.UNION u v) f = nsum v f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7563
  by (import hollight NSUM_UNION_LZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7564
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7565
lemma NSUM_RESTRICT: "ALL (f::'q_51457::type => nat) s::'q_51457::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7566
   FINITE s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7567
   nsum s (%x::'q_51457::type. COND (IN x s) (f x) (0::nat)) = nsum s f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7568
  by (import hollight NSUM_RESTRICT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7569
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7570
lemma NSUM_BOUND: "ALL (x::'A::type => bool) (xa::'A::type => nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7571
   FINITE x & (ALL xc::'A::type. IN xc x --> <= (xa xc) xb) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7572
   <= (nsum x xa) (CARD x * xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7573
  by (import hollight NSUM_BOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7574
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7575
lemma NSUM_BOUND_GEN: "ALL (x::'A::type => bool) (xa::'q_51532::type) b::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7576
   FINITE x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7577
   x ~= EMPTY &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7578
   (ALL xa::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7579
       IN xa x --> <= ((f::'A::type => nat) xa) (DIV b (CARD x))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7580
   <= (nsum x f) b"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7581
  by (import hollight NSUM_BOUND_GEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7582
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7583
lemma NSUM_BOUND_LT: "ALL (s::'A::type => bool) (f::'A::type => nat) b::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7584
   FINITE s &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7585
   (ALL x::'A::type. IN x s --> <= (f x) b) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7586
   (EX x::'A::type. IN x s & < (f x) b) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7587
   < (nsum s f) (CARD s * b)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7588
  by (import hollight NSUM_BOUND_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7589
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7590
lemma NSUM_BOUND_LT_ALL: "ALL (s::'q_51675::type => bool) (f::'q_51675::type => nat) b::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7591
   FINITE s & s ~= EMPTY & (ALL x::'q_51675::type. IN x s --> < (f x) b) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7592
   < (nsum s f) (CARD s * b)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7593
  by (import hollight NSUM_BOUND_LT_ALL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7594
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7595
lemma NSUM_BOUND_LT_GEN: "ALL (s::'A::type => bool) (t::'q_51717::type) b::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7596
   FINITE s &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7597
   s ~= EMPTY &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7598
   (ALL x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7599
       IN x s --> < ((f::'A::type => nat) x) (DIV b (CARD s))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7600
   < (nsum s f) b"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7601
  by (import hollight NSUM_BOUND_LT_GEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7602
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7603
lemma NSUM_UNION_EQ: "ALL (s::'q_51776::type => bool) (t::'q_51776::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7604
   u::'q_51776::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7605
   FINITE u & hollight.INTER s t = EMPTY & hollight.UNION s t = u -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7606
   nsum s (f::'q_51776::type => nat) + nsum t f = nsum u f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7607
  by (import hollight NSUM_UNION_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7608
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7609
lemma NSUM_EQ_SUPERSET: "ALL (f::'A::type => nat) (s::'A::type => bool) t::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7610
   FINITE t &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7611
   SUBSET t s &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7612
   (ALL x::'A::type. IN x t --> f x = (g::'A::type => nat) x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7613
   (ALL x::'A::type. IN x s & ~ IN x t --> f x = (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7614
   nsum s f = nsum t g"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7615
  by (import hollight NSUM_EQ_SUPERSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7616
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7617
lemma NSUM_RESTRICT_SET: "ALL (s::'A::type => bool) (f::'A::type => nat) r::'q_51887::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7618
   FINITE s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7619
   nsum
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7620
    (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7621
      (%u::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7622
          EX x::'A::type. SETSPEC u (IN x s & (P::'A::type => bool) x) x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7623
    f =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7624
   nsum s (%x::'A::type. COND (P x) (f x) (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7625
  by (import hollight NSUM_RESTRICT_SET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7626
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7627
lemma NSUM_NSUM_RESTRICT: "ALL (R::'q_52016::type => 'q_52015::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7628
   (f::'q_52016::type => 'q_52015::type => nat) (s::'q_52016::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7629
   t::'q_52015::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7630
   FINITE s & FINITE t -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7631
   nsum s
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7632
    (%x::'q_52016::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7633
        nsum
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7634
         (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7635
           (%u::'q_52015::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7636
               EX y::'q_52015::type. SETSPEC u (IN y t & R x y) y))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7637
         (f x)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7638
   nsum t
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7639
    (%y::'q_52015::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7640
        nsum
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7641
         (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7642
           (%u::'q_52016::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7643
               EX x::'q_52016::type. SETSPEC u (IN x s & R x y) x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7644
         (%x::'q_52016::type. f x y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7645
  by (import hollight NSUM_NSUM_RESTRICT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7646
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7647
lemma CARD_EQ_NSUM: "ALL x::'q_52035::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7648
   FINITE x --> CARD x = nsum x (%x::'q_52035::type. NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7649
  by (import hollight CARD_EQ_NSUM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7650
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7651
lemma NSUM_MULTICOUNT_GEN: "ALL (R::'A::type => 'B::type => bool) (s::'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7652
   (t::'B::type => bool) k::'B::type => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7653
   FINITE s &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7654
   FINITE t &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7655
   (ALL j::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7656
       IN j t -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7657
       CARD
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7658
        (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7659
          (%u::'A::type. EX i::'A::type. SETSPEC u (IN i s & R i j) i)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7660
       k j) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7661
   nsum s
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7662
    (%i::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7663
        CARD
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7664
         (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7665
           (%u::'B::type. EX j::'B::type. SETSPEC u (IN j t & R i j) j))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7666
   nsum t k"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7667
  by (import hollight NSUM_MULTICOUNT_GEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7668
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7669
lemma NSUM_MULTICOUNT: "ALL (R::'A::type => 'B::type => bool) (s::'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7670
   (t::'B::type => bool) k::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7671
   FINITE s &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7672
   FINITE t &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7673
   (ALL j::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7674
       IN j t -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7675
       CARD
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7676
        (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7677
          (%u::'A::type. EX i::'A::type. SETSPEC u (IN i s & R i j) i)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7678
       k) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7679
   nsum s
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7680
    (%i::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7681
        CARD
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7682
         (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7683
           (%u::'B::type. EX j::'B::type. SETSPEC u (IN j t & R i j) j))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7684
   k * CARD t"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7685
  by (import hollight NSUM_MULTICOUNT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7686
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7687
lemma NSUM_IMAGE_GEN: "ALL (f::'A::type => 'B::type) (g::'A::type => nat) s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7688
   FINITE s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7689
   nsum s g =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7690
   nsum (IMAGE f s)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7691
    (%y::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7692
        nsum
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7693
         (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7694
           (%u::'A::type. EX x::'A::type. SETSPEC u (IN x s & f x = y) x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7695
         g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7696
  by (import hollight NSUM_IMAGE_GEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7697
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7698
lemma NSUM_SUBSET: "ALL (u::'A::type => bool) (v::'A::type => bool) f::'A::type => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7699
   FINITE u &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7700
   FINITE v & (ALL x::'A::type. IN x (DIFF u v) --> f x = (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7701
   <= (nsum u f) (nsum v f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7702
  by (import hollight NSUM_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7703
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7704
lemma NSUM_SUBSET_SIMPLE: "ALL (u::'q_52495::type => bool) (v::'q_52495::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7705
   f::'q_52495::type => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7706
   FINITE v & SUBSET u v --> <= (nsum u f) (nsum v f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7707
  by (import hollight NSUM_SUBSET_SIMPLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7708
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7709
lemma NSUM_ADD_NUMSEG: "ALL (x::nat => nat) (xa::nat => nat) (xb::nat) xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7710
   nsum (dotdot xb xc) (%i::nat. x i + xa i) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7711
   nsum (dotdot xb xc) x + nsum (dotdot xb xc) xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7712
  by (import hollight NSUM_ADD_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7713
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7714
lemma NSUM_CMUL_NUMSEG: "ALL (x::nat => nat) (xa::nat) (xb::nat) xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7715
   nsum (dotdot xb xc) (%i::nat. xa * x i) = xa * nsum (dotdot xb xc) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7716
  by (import hollight NSUM_CMUL_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7717
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7718
lemma NSUM_LE_NUMSEG: "ALL (x::nat => nat) (xa::nat => nat) (xb::nat) xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7719
   (ALL i::nat. <= xb i & <= i xc --> <= (x i) (xa i)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7720
   <= (nsum (dotdot xb xc) x) (nsum (dotdot xb xc) xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7721
  by (import hollight NSUM_LE_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7722
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7723
lemma NSUM_EQ_NUMSEG: "ALL (f::nat => nat) (g::nat => nat) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7724
   (ALL i::nat. <= m i & <= i n --> f i = g i) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7725
   nsum (dotdot m n) f = nsum (dotdot m n) g"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7726
  by (import hollight NSUM_EQ_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7727
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7728
lemma NSUM_CONST_NUMSEG: "ALL (x::nat) (xa::nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7729
   nsum (dotdot xa xb) (%n::nat. x) = (xb + NUMERAL_BIT1 (0::nat) - xa) * x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7730
  by (import hollight NSUM_CONST_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7731
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7732
lemma NSUM_EQ_0_NUMSEG: "ALL (x::nat => nat) xa::'q_52734::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7733
   (ALL i::nat. <= (m::nat) i & <= i (n::nat) --> x i = (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7734
   nsum (dotdot m n) x = (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7735
  by (import hollight NSUM_EQ_0_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7736
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7737
lemma NSUM_TRIV_NUMSEG: "ALL (f::nat => nat) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7738
   < n m --> nsum (dotdot m n) f = (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7739
  by (import hollight NSUM_TRIV_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7740
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7741
lemma NSUM_POS_LE_NUMSEG: "ALL (x::nat) (xa::nat) xb::nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7742
   (ALL p::nat. <= x p & <= p xa --> <= (0::nat) (xb p)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7743
   <= (0::nat) (nsum (dotdot x xa) xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7744
  by (import hollight NSUM_POS_LE_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7745
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7746
lemma NSUM_POS_EQ_0_NUMSEG: "ALL (f::nat => nat) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7747
   (ALL p::nat. <= m p & <= p n --> <= (0::nat) (f p)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7748
   nsum (dotdot m n) f = (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7749
   (ALL p::nat. <= m p & <= p n --> f p = (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7750
  by (import hollight NSUM_POS_EQ_0_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7751
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7752
lemma NSUM_SING_NUMSEG: "ALL (x::nat => nat) xa::nat. nsum (dotdot xa xa) x = x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7753
  by (import hollight NSUM_SING_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7754
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7755
lemma NSUM_CLAUSES_NUMSEG: "(ALL x::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7756
    nsum (dotdot x (0::nat)) (f::nat => nat) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7757
    COND (x = (0::nat)) (f (0::nat)) (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7758
(ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7759
    nsum (dotdot x (Suc xa)) f =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7760
    COND (<= x (Suc xa)) (nsum (dotdot x xa) f + f (Suc xa))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7761
     (nsum (dotdot x xa) f))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7762
  by (import hollight NSUM_CLAUSES_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7763
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7764
lemma NSUM_SWAP_NUMSEG: "ALL (a::nat) (b::nat) (c::nat) (d::nat) f::nat => nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7765
   nsum (dotdot a b) (%i::nat. nsum (dotdot c d) (f i)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7766
   nsum (dotdot c d) (%j::nat. nsum (dotdot a b) (%i::nat. f i j))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7767
  by (import hollight NSUM_SWAP_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7768
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7769
lemma NSUM_ADD_SPLIT: "ALL (x::nat => nat) (xa::nat) (xb::nat) xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7770
   <= xa (xb + NUMERAL_BIT1 (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7771
   nsum (dotdot xa (xb + xc)) x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7772
   nsum (dotdot xa xb) x +
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7773
   nsum (dotdot (xb + NUMERAL_BIT1 (0::nat)) (xb + xc)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7774
  by (import hollight NSUM_ADD_SPLIT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7775
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7776
lemma NSUM_OFFSET: "ALL (x::nat => nat) (xa::nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7777
   nsum (dotdot (xa + xb) ((n::nat) + xb)) x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7778
   nsum (dotdot xa n) (%i::nat. x (i + xb))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7779
  by (import hollight NSUM_OFFSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7780
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7781
lemma NSUM_OFFSET_0: "ALL (x::nat => nat) (xa::nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7782
   <= xa xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7783
   nsum (dotdot xa xb) x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7784
   nsum (dotdot (0::nat) (xb - xa)) (%i::nat. x (i + xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7785
  by (import hollight NSUM_OFFSET_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7786
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7787
lemma NSUM_CLAUSES_LEFT: "ALL (x::nat => nat) (xa::nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7788
   <= xa xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7789
   nsum (dotdot xa xb) x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7790
   x xa + nsum (dotdot (xa + NUMERAL_BIT1 (0::nat)) xb) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7791
  by (import hollight NSUM_CLAUSES_LEFT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7792
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7793
lemma NSUM_CLAUSES_RIGHT: "ALL (f::nat => nat) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7794
   < (0::nat) n & <= m n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7795
   nsum (dotdot m n) f = nsum (dotdot m (n - NUMERAL_BIT1 (0::nat))) f + f n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7796
  by (import hollight NSUM_CLAUSES_RIGHT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7797
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7798
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7799
  sum :: "('q_53311::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7800
=> ('q_53311::type => hollight.real) => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7801
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7802
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7803
  sum_def: "(op ==::(('q_53311::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7804
         => ('q_53311::type => hollight.real) => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7805
        => (('q_53311::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7806
            => ('q_53311::type => hollight.real) => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7807
           => prop)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7808
 (hollight.sum::('q_53311::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7809
                => ('q_53311::type => hollight.real) => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7810
 ((iterate::(hollight.real => hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7811
            => ('q_53311::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7812
               => ('q_53311::type => hollight.real) => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7813
   (real_add::hollight.real => hollight.real => hollight.real))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7814
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7815
lemma DEF_sum: "(op =::(('q_53311::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7816
        => ('q_53311::type => hollight.real) => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7817
       => (('q_53311::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7818
           => ('q_53311::type => hollight.real) => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7819
          => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7820
 (hollight.sum::('q_53311::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7821
                => ('q_53311::type => hollight.real) => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7822
 ((iterate::(hollight.real => hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7823
            => ('q_53311::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7824
               => ('q_53311::type => hollight.real) => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7825
   (real_add::hollight.real => hollight.real => hollight.real))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7826
  by (import hollight DEF_sum)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7827
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7828
lemma NEUTRAL_REAL_ADD: "neutral real_add = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7829
  by (import hollight NEUTRAL_REAL_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7830
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7831
lemma NEUTRAL_REAL_MUL: "neutral real_mul = real_of_num (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7832
  by (import hollight NEUTRAL_REAL_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7833
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7834
lemma MONOIDAL_REAL_ADD: "monoidal real_add"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7835
  by (import hollight MONOIDAL_REAL_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7836
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7837
lemma MONOIDAL_REAL_MUL: "monoidal real_mul"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7838
  by (import hollight MONOIDAL_REAL_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7839
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7840
lemma SUM_CLAUSES: "(ALL x::'q_53353::type => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7841
    hollight.sum EMPTY x = real_of_num (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7842
(ALL (x::'q_53394::type) (xa::'q_53394::type => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7843
    xb::'q_53394::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7844
    FINITE xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7845
    hollight.sum (INSERT x xb) xa =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7846
    COND (IN x xb) (hollight.sum xb xa)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7847
     (real_add (xa x) (hollight.sum xb xa)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7848
  by (import hollight SUM_CLAUSES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7849
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7850
lemma SUM_UNION: "ALL (x::'q_53420::type => hollight.real) (xa::'q_53420::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7851
   xb::'q_53420::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7852
   FINITE xa & FINITE xb & DISJOINT xa xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7853
   hollight.sum (hollight.UNION xa xb) x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7854
   real_add (hollight.sum xa x) (hollight.sum xb x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7855
  by (import hollight SUM_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7856
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7857
lemma SUM_SUPPORT: "ALL (x::'q_53499::type => hollight.real) xa::'q_53499::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7858
   FINITE (support real_add x xa) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7859
   hollight.sum (support real_add x xa) x = hollight.sum xa x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7860
  by (import hollight SUM_SUPPORT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7861
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7862
lemma SUM_LT: "ALL (f::'A::type => hollight.real) (g::'A::type => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7863
   s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7864
   FINITE s &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7865
   (ALL x::'A::type. IN x s --> real_le (f x) (g x)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7866
   (EX x::'A::type. IN x s & real_lt (f x) (g x)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7867
   real_lt (hollight.sum s f) (hollight.sum s g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7868
  by (import hollight SUM_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7869
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7870
lemma SUM_LT_ALL: "ALL (f::'q_53825::type => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7871
   (g::'q_53825::type => hollight.real) s::'q_53825::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7872
   FINITE s &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7873
   s ~= EMPTY & (ALL x::'q_53825::type. IN x s --> real_lt (f x) (g x)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7874
   real_lt (hollight.sum s f) (hollight.sum s g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7875
  by (import hollight SUM_LT_ALL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7876
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7877
lemma SUM_POS_LE: "ALL (x::'q_54040::type => hollight.real) xa::'q_54040::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7878
   FINITE xa &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7879
   (ALL xb::'q_54040::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7880
       IN xb xa --> real_le (real_of_num (0::nat)) (x xb)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7881
   real_le (real_of_num (0::nat)) (hollight.sum xa x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7882
  by (import hollight SUM_POS_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7883
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7884
lemma SUM_POS_BOUND: "ALL (f::'A::type => hollight.real) (b::hollight.real) x::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7885
   FINITE x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7886
   (ALL xa::'A::type. IN xa x --> real_le (real_of_num (0::nat)) (f xa)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7887
   real_le (hollight.sum x f) b -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7888
   (ALL xa::'A::type. IN xa x --> real_le (f xa) b)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7889
  by (import hollight SUM_POS_BOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7890
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7891
lemma SUM_POS_EQ_0: "ALL (x::'q_54187::type => hollight.real) xa::'q_54187::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7892
   FINITE xa &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7893
   (ALL xb::'q_54187::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7894
       IN xb xa --> real_le (real_of_num (0::nat)) (x xb)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7895
   hollight.sum xa x = real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7896
   (ALL xb::'q_54187::type. IN xb xa --> x xb = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7897
  by (import hollight SUM_POS_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7898
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7899
lemma SUM_SING: "ALL (x::'q_54209::type => hollight.real) xa::'q_54209::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7900
   hollight.sum (INSERT xa EMPTY) x = x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7901
  by (import hollight SUM_SING)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7902
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7903
lemma SUM_DELTA: "ALL (x::'A::type => bool) xa::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7904
   hollight.sum x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7905
    (%x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7906
        COND (x = xa) (b::hollight.real) (real_of_num (0::nat))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7907
   COND (IN xa x) b (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7908
  by (import hollight SUM_DELTA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7909
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7910
lemma SUM_IMAGE: "ALL (x::'q_54353::type => 'q_54329::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7911
   (xa::'q_54329::type => hollight.real) xb::'q_54353::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7912
   FINITE xb &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7913
   (ALL (xa::'q_54353::type) y::'q_54353::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7914
       IN xa xb & IN y xb & x xa = x y --> xa = y) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7915
   hollight.sum (IMAGE x xb) xa = hollight.sum xb (xa o x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7916
  by (import hollight SUM_IMAGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7917
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7918
lemma SUM_SUPERSET: "ALL (f::'A::type => hollight.real) (u::'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7919
   v::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7920
   FINITE u &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7921
   SUBSET u v &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7922
   (ALL x::'A::type. IN x v & ~ IN x u --> f x = real_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7923
   hollight.sum v f = hollight.sum u f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7924
  by (import hollight SUM_SUPERSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7925
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7926
lemma SUM_UNION_RZERO: "ALL (f::'A::type => hollight.real) (u::'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7927
   v::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7928
   FINITE u &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7929
   (ALL x::'A::type. IN x v & ~ IN x u --> f x = real_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7930
   hollight.sum (hollight.UNION u v) f = hollight.sum u f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7931
  by (import hollight SUM_UNION_RZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7932
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7933
lemma SUM_UNION_LZERO: "ALL (f::'A::type => hollight.real) (u::'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7934
   v::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7935
   FINITE v &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7936
   (ALL x::'A::type. IN x u & ~ IN x v --> f x = real_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7937
   hollight.sum (hollight.UNION u v) f = hollight.sum v f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7938
  by (import hollight SUM_UNION_LZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7939
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7940
lemma SUM_RESTRICT: "ALL (f::'q_54580::type => hollight.real) s::'q_54580::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7941
   FINITE s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7942
   hollight.sum s
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7943
    (%x::'q_54580::type. COND (IN x s) (f x) (real_of_num (0::nat))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7944
   hollight.sum s f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7945
  by (import hollight SUM_RESTRICT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7946
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7947
lemma SUM_BOUND_GEN: "ALL (s::'A::type => bool) (t::'q_54639::type) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7948
   FINITE s &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7949
   s ~= EMPTY &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7950
   (ALL x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7951
       IN x s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7952
       real_le ((f::'A::type => hollight.real) x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7953
        (real_div b (real_of_num (CARD s)))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7954
   real_le (hollight.sum s f) b"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7955
  by (import hollight SUM_BOUND_GEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7956
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7957
lemma SUM_ABS_BOUND: "ALL (s::'A::type => bool) (f::'A::type => hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7958
   FINITE s & (ALL x::'A::type. IN x s --> real_le (real_abs (f x)) b) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7959
   real_le (real_abs (hollight.sum s f)) (real_mul (real_of_num (CARD s)) b)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7960
  by (import hollight SUM_ABS_BOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7961
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7962
lemma SUM_BOUND_LT: "ALL (s::'A::type => bool) (f::'A::type => hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7963
   FINITE s &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7964
   (ALL x::'A::type. IN x s --> real_le (f x) b) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7965
   (EX x::'A::type. IN x s & real_lt (f x) b) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7966
   real_lt (hollight.sum s f) (real_mul (real_of_num (CARD s)) b)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7967
  by (import hollight SUM_BOUND_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7968
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7969
lemma SUM_BOUND_LT_ALL: "ALL (s::'q_54844::type => bool) (f::'q_54844::type => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7970
   b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7971
   FINITE s &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7972
   s ~= EMPTY & (ALL x::'q_54844::type. IN x s --> real_lt (f x) b) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7973
   real_lt (hollight.sum s f) (real_mul (real_of_num (CARD s)) b)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7974
  by (import hollight SUM_BOUND_LT_ALL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7975
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7976
lemma SUM_BOUND_LT_GEN: "ALL (s::'A::type => bool) (t::'q_54866::type) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7977
   FINITE s &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7978
   s ~= EMPTY &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7979
   (ALL x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7980
       IN x s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7981
       real_lt ((f::'A::type => hollight.real) x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7982
        (real_div b (real_of_num (CARD s)))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7983
   real_lt (hollight.sum s f) b"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7984
  by (import hollight SUM_BOUND_LT_GEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7985
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7986
lemma SUM_UNION_EQ: "ALL (s::'q_54927::type => bool) (t::'q_54927::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7987
   u::'q_54927::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7988
   FINITE u & hollight.INTER s t = EMPTY & hollight.UNION s t = u -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7989
   real_add (hollight.sum s (f::'q_54927::type => hollight.real))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7990
    (hollight.sum t f) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7991
   hollight.sum u f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7992
  by (import hollight SUM_UNION_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7993
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7994
lemma SUM_EQ_SUPERSET: "ALL (f::'A::type => hollight.real) (s::'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7995
   t::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7996
   FINITE t &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7997
   SUBSET t s &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7998
   (ALL x::'A::type. IN x t --> f x = (g::'A::type => hollight.real) x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  7999
   (ALL x::'A::type. IN x s & ~ IN x t --> f x = real_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8000
   hollight.sum s f = hollight.sum t g"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8001
  by (import hollight SUM_EQ_SUPERSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8002
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8003
lemma SUM_RESTRICT_SET: "ALL (s::'A::type => bool) (f::'A::type => hollight.real) r::'q_55040::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8004
   FINITE s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8005
   hollight.sum
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8006
    (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8007
      (%u::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8008
          EX x::'A::type. SETSPEC u (IN x s & (P::'A::type => bool) x) x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8009
    f =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8010
   hollight.sum s (%x::'A::type. COND (P x) (f x) (real_of_num (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8011
  by (import hollight SUM_RESTRICT_SET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8012
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8013
lemma SUM_SUM_RESTRICT: "ALL (R::'q_55171::type => 'q_55170::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8014
   (f::'q_55171::type => 'q_55170::type => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8015
   (s::'q_55171::type => bool) t::'q_55170::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8016
   FINITE s & FINITE t -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8017
   hollight.sum s
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8018
    (%x::'q_55171::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8019
        hollight.sum
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8020
         (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8021
           (%u::'q_55170::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8022
               EX y::'q_55170::type. SETSPEC u (IN y t & R x y) y))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8023
         (f x)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8024
   hollight.sum t
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8025
    (%y::'q_55170::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8026
        hollight.sum
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8027
         (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8028
           (%u::'q_55171::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8029
               EX x::'q_55171::type. SETSPEC u (IN x s & R x y) x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8030
         (%x::'q_55171::type. f x y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8031
  by (import hollight SUM_SUM_RESTRICT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8032
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8033
lemma CARD_EQ_SUM: "ALL x::'q_55192::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8034
   FINITE x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8035
   real_of_num (CARD x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8036
   hollight.sum x (%x::'q_55192::type. real_of_num (NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8037
  by (import hollight CARD_EQ_SUM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8038
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8039
lemma SUM_MULTICOUNT_GEN: "ALL (R::'A::type => 'B::type => bool) (s::'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8040
   (t::'B::type => bool) k::'B::type => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8041
   FINITE s &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8042
   FINITE t &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8043
   (ALL j::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8044
       IN j t -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8045
       CARD
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8046
        (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8047
          (%u::'A::type. EX i::'A::type. SETSPEC u (IN i s & R i j) i)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8048
       k j) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8049
   hollight.sum s
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8050
    (%i::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8051
        real_of_num
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8052
         (CARD
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8053
           (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8054
             (%u::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8055
                 EX j::'B::type. SETSPEC u (IN j t & R i j) j)))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8056
   hollight.sum t (%i::'B::type. real_of_num (k i))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8057
  by (import hollight SUM_MULTICOUNT_GEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8058
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8059
lemma SUM_MULTICOUNT: "ALL (R::'A::type => 'B::type => bool) (s::'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8060
   (t::'B::type => bool) k::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8061
   FINITE s &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8062
   FINITE t &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8063
   (ALL j::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8064
       IN j t -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8065
       CARD
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8066
        (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8067
          (%u::'A::type. EX i::'A::type. SETSPEC u (IN i s & R i j) i)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8068
       k) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8069
   hollight.sum s
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8070
    (%i::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8071
        real_of_num
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8072
         (CARD
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8073
           (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8074
             (%u::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8075
                 EX j::'B::type. SETSPEC u (IN j t & R i j) j)))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8076
   real_of_num (k * CARD t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8077
  by (import hollight SUM_MULTICOUNT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8078
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8079
lemma SUM_IMAGE_GEN: "ALL (f::'A::type => 'B::type) (g::'A::type => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8080
   s::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8081
   FINITE s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8082
   hollight.sum s g =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8083
   hollight.sum (IMAGE f s)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8084
    (%y::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8085
        hollight.sum
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8086
         (GSPEC
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8087
           (%u::'A::type. EX x::'A::type. SETSPEC u (IN x s & f x = y) x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8088
         g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8089
  by (import hollight SUM_IMAGE_GEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8090
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8091
lemma REAL_OF_NUM_SUM: "ALL (f::'q_55589::type => nat) s::'q_55589::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8092
   FINITE s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8093
   real_of_num (nsum s f) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8094
   hollight.sum s (%x::'q_55589::type. real_of_num (f x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8095
  by (import hollight REAL_OF_NUM_SUM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8096
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8097
lemma SUM_SUBSET: "ALL (u::'A::type => bool) (v::'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8098
   f::'A::type => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8099
   FINITE u &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8100
   FINITE v &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8101
   (ALL x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8102
       IN x (DIFF u v) --> real_le (f x) (real_of_num (0::nat))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8103
   (ALL x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8104
       IN x (DIFF v u) --> real_le (real_of_num (0::nat)) (f x)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8105
   real_le (hollight.sum u f) (hollight.sum v f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8106
  by (import hollight SUM_SUBSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8107
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8108
lemma SUM_SUBSET_SIMPLE: "ALL (u::'A::type => bool) (v::'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8109
   f::'A::type => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8110
   FINITE v &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8111
   SUBSET u v &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8112
   (ALL x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8113
       IN x (DIFF v u) --> real_le (real_of_num (0::nat)) (f x)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8114
   real_le (hollight.sum u f) (hollight.sum v f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8115
  by (import hollight SUM_SUBSET_SIMPLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8116
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8117
lemma SUM_ADD_NUMSEG: "ALL (x::nat => hollight.real) (xa::nat => hollight.real) (xb::nat) xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8118
   hollight.sum (dotdot xb xc) (%i::nat. real_add (x i) (xa i)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8119
   real_add (hollight.sum (dotdot xb xc) x) (hollight.sum (dotdot xb xc) xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8120
  by (import hollight SUM_ADD_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8121
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8122
lemma SUM_CMUL_NUMSEG: "ALL (x::nat => hollight.real) (xa::hollight.real) (xb::nat) xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8123
   hollight.sum (dotdot xb xc) (%i::nat. real_mul xa (x i)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8124
   real_mul xa (hollight.sum (dotdot xb xc) x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8125
  by (import hollight SUM_CMUL_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8126
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8127
lemma SUM_NEG_NUMSEG: "ALL (x::nat => hollight.real) (xa::nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8128
   hollight.sum (dotdot xa xb) (%i::nat. real_neg (x i)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8129
   real_neg (hollight.sum (dotdot xa xb) x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8130
  by (import hollight SUM_NEG_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8131
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8132
lemma SUM_SUB_NUMSEG: "ALL (x::nat => hollight.real) (xa::nat => hollight.real) (xb::nat) xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8133
   hollight.sum (dotdot xb xc) (%i::nat. real_sub (x i) (xa i)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8134
   real_sub (hollight.sum (dotdot xb xc) x) (hollight.sum (dotdot xb xc) xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8135
  by (import hollight SUM_SUB_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8136
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8137
lemma SUM_LE_NUMSEG: "ALL (x::nat => hollight.real) (xa::nat => hollight.real) (xb::nat) xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8138
   (ALL i::nat. <= xb i & <= i xc --> real_le (x i) (xa i)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8139
   real_le (hollight.sum (dotdot xb xc) x) (hollight.sum (dotdot xb xc) xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8140
  by (import hollight SUM_LE_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8141
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8142
lemma SUM_EQ_NUMSEG: "ALL (f::nat => hollight.real) (g::nat => hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8143
   (ALL i::nat. <= m i & <= i n --> f i = g i) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8144
   hollight.sum (dotdot m n) f = hollight.sum (dotdot m n) g"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8145
  by (import hollight SUM_EQ_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8146
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8147
lemma SUM_ABS_NUMSEG: "ALL (x::nat => hollight.real) (xa::nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8148
   real_le (real_abs (hollight.sum (dotdot xa xb) x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8149
    (hollight.sum (dotdot xa xb) (%i::nat. real_abs (x i)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8150
  by (import hollight SUM_ABS_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8151
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8152
lemma SUM_CONST_NUMSEG: "ALL (x::hollight.real) (xa::nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8153
   hollight.sum (dotdot xa xb) (%n::nat. x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8154
   real_mul (real_of_num (xb + NUMERAL_BIT1 (0::nat) - xa)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8155
  by (import hollight SUM_CONST_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8156
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8157
lemma SUM_EQ_0_NUMSEG: "ALL (x::nat => hollight.real) xa::'q_56115::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8158
   (ALL i::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8159
       <= (m::nat) i & <= i (n::nat) --> x i = real_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8160
   hollight.sum (dotdot m n) x = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8161
  by (import hollight SUM_EQ_0_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8162
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8163
lemma SUM_TRIV_NUMSEG: "ALL (f::nat => hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8164
   < n m --> hollight.sum (dotdot m n) f = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8165
  by (import hollight SUM_TRIV_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8166
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8167
lemma SUM_POS_LE_NUMSEG: "ALL (x::nat) (xa::nat) xb::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8168
   (ALL p::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8169
       <= x p & <= p xa --> real_le (real_of_num (0::nat)) (xb p)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8170
   real_le (real_of_num (0::nat)) (hollight.sum (dotdot x xa) xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8171
  by (import hollight SUM_POS_LE_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8172
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8173
lemma SUM_POS_EQ_0_NUMSEG: "ALL (f::nat => hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8174
   (ALL p::nat. <= m p & <= p n --> real_le (real_of_num (0::nat)) (f p)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8175
   hollight.sum (dotdot m n) f = real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8176
   (ALL p::nat. <= m p & <= p n --> f p = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8177
  by (import hollight SUM_POS_EQ_0_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8178
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8179
lemma SUM_SING_NUMSEG: "ALL (x::nat => hollight.real) xa::nat. hollight.sum (dotdot xa xa) x = x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8180
  by (import hollight SUM_SING_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8181
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8182
lemma SUM_CLAUSES_NUMSEG: "(ALL x::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8183
    hollight.sum (dotdot x (0::nat)) (f::nat => hollight.real) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8184
    COND (x = (0::nat)) (f (0::nat)) (real_of_num (0::nat))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8185
(ALL (x::nat) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8186
    hollight.sum (dotdot x (Suc xa)) f =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8187
    COND (<= x (Suc xa))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8188
     (real_add (hollight.sum (dotdot x xa) f) (f (Suc xa)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8189
     (hollight.sum (dotdot x xa) f))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8190
  by (import hollight SUM_CLAUSES_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8191
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8192
lemma SUM_SWAP_NUMSEG: "ALL (a::nat) (b::nat) (c::nat) (d::nat) f::nat => nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8193
   hollight.sum (dotdot a b) (%i::nat. hollight.sum (dotdot c d) (f i)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8194
   hollight.sum (dotdot c d)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8195
    (%j::nat. hollight.sum (dotdot a b) (%i::nat. f i j))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8196
  by (import hollight SUM_SWAP_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8197
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8198
lemma SUM_ADD_SPLIT: "ALL (x::nat => hollight.real) (xa::nat) (xb::nat) xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8199
   <= xa (xb + NUMERAL_BIT1 (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8200
   hollight.sum (dotdot xa (xb + xc)) x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8201
   real_add (hollight.sum (dotdot xa xb) x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8202
    (hollight.sum (dotdot (xb + NUMERAL_BIT1 (0::nat)) (xb + xc)) x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8203
  by (import hollight SUM_ADD_SPLIT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8204
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8205
lemma SUM_OFFSET_0: "ALL (x::nat => hollight.real) (xa::nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8206
   <= xa xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8207
   hollight.sum (dotdot xa xb) x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8208
   hollight.sum (dotdot (0::nat) (xb - xa)) (%i::nat. x (i + xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8209
  by (import hollight SUM_OFFSET_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8210
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8211
lemma SUM_CLAUSES_LEFT: "ALL (x::nat => hollight.real) (xa::nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8212
   <= xa xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8213
   hollight.sum (dotdot xa xb) x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8214
   real_add (x xa) (hollight.sum (dotdot (xa + NUMERAL_BIT1 (0::nat)) xb) x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8215
  by (import hollight SUM_CLAUSES_LEFT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8216
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8217
lemma SUM_CLAUSES_RIGHT: "ALL (f::nat => hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8218
   < (0::nat) n & <= m n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8219
   hollight.sum (dotdot m n) f =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8220
   real_add (hollight.sum (dotdot m (n - NUMERAL_BIT1 (0::nat))) f) (f n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8221
  by (import hollight SUM_CLAUSES_RIGHT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8222
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8223
lemma REAL_OF_NUM_SUM_NUMSEG: "ALL (x::nat => nat) (xa::nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8224
   real_of_num (nsum (dotdot xa xb) x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8225
   hollight.sum (dotdot xa xb) (%i::nat. real_of_num (x i))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8226
  by (import hollight REAL_OF_NUM_SUM_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8227
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8228
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8229
  CASEWISE :: "(('q_56787::type => 'q_56791::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8230
 ('q_56792::type => 'q_56787::type => 'q_56751::type)) hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8231
=> 'q_56792::type => 'q_56791::type => 'q_56751::type" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8232
  "CASEWISE ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8233
SOME CASEWISE::(('q_56787::type => 'q_56791::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8234
                ('q_56792::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8235
                 => 'q_56787::type => 'q_56751::type)) hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8236
               => 'q_56792::type => 'q_56791::type => 'q_56751::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8237
   (ALL (f::'q_56792::type) x::'q_56791::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8238
       CASEWISE NIL f x = (SOME y::'q_56751::type. True)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8239
   (ALL (h::('q_56787::type => 'q_56791::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8240
            ('q_56792::type => 'q_56787::type => 'q_56751::type))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8241
       (t::(('q_56787::type => 'q_56791::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8242
            ('q_56792::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8243
             => 'q_56787::type => 'q_56751::type)) hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8244
       (f::'q_56792::type) x::'q_56791::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8245
       CASEWISE (CONS h t) f x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8246
       COND (EX y::'q_56787::type. fst h y = x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8247
        (snd h f (SOME y::'q_56787::type. fst h y = x)) (CASEWISE t f x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8248
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8249
lemma DEF_CASEWISE: "CASEWISE =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8250
(SOME CASEWISE::(('q_56787::type => 'q_56791::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8251
                 ('q_56792::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8252
                  => 'q_56787::type => 'q_56751::type)) hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8253
                => 'q_56792::type => 'q_56791::type => 'q_56751::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8254
    (ALL (f::'q_56792::type) x::'q_56791::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8255
        CASEWISE NIL f x = (SOME y::'q_56751::type. True)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8256
    (ALL (h::('q_56787::type => 'q_56791::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8257
             ('q_56792::type => 'q_56787::type => 'q_56751::type))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8258
        (t::(('q_56787::type => 'q_56791::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8259
             ('q_56792::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8260
              => 'q_56787::type => 'q_56751::type)) hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8261
        (f::'q_56792::type) x::'q_56791::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8262
        CASEWISE (CONS h t) f x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8263
        COND (EX y::'q_56787::type. fst h y = x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8264
         (snd h f (SOME y::'q_56787::type. fst h y = x)) (CASEWISE t f x)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8265
  by (import hollight DEF_CASEWISE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8266
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8267
lemma CASEWISE: "(op &::bool => bool => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8268
 ((op =::'q_56811::type => 'q_56811::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8269
   ((CASEWISE::(('q_56803::type => 'q_56851::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8270
                ('q_56852::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8271
                 => 'q_56803::type => 'q_56811::type)) hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8272
               => 'q_56852::type => 'q_56851::type => 'q_56811::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8273
     (NIL::(('q_56803::type => 'q_56851::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8274
            ('q_56852::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8275
             => 'q_56803::type => 'q_56811::type)) hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8276
     (f::'q_56852::type) (x::'q_56851::type))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8277
   ((Eps::('q_56811::type => bool) => 'q_56811::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8278
     (%y::'q_56811::type. True::bool)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8279
 ((op =::'q_56812::type => 'q_56812::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8280
   ((CASEWISE::(('q_56854::type => 'q_56851::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8281
                ('q_56852::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8282
                 => 'q_56854::type => 'q_56812::type)) hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8283
               => 'q_56852::type => 'q_56851::type => 'q_56812::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8284
     ((CONS::('q_56854::type => 'q_56851::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8285
             ('q_56852::type => 'q_56854::type => 'q_56812::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8286
             => (('q_56854::type => 'q_56851::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8287
                 ('q_56852::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8288
                  => 'q_56854::type => 'q_56812::type)) hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8289
                => (('q_56854::type => 'q_56851::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8290
                    ('q_56852::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8291
                     => 'q_56854::type => 'q_56812::type)) hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8292
       ((Pair::('q_56854::type => 'q_56851::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8293
               => ('q_56852::type => 'q_56854::type => 'q_56812::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8294
                  => ('q_56854::type => 'q_56851::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8295
                     ('q_56852::type => 'q_56854::type => 'q_56812::type))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8296
         (s::'q_56854::type => 'q_56851::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8297
         (t::'q_56852::type => 'q_56854::type => 'q_56812::type))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8298
       (clauses::(('q_56854::type => 'q_56851::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8299
                  ('q_56852::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8300
                   => 'q_56854::type => 'q_56812::type)) hollight.list))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8301
     f x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8302
   ((COND::bool => 'q_56812::type => 'q_56812::type => 'q_56812::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8303
     ((Ex::('q_56854::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8304
       (%y::'q_56854::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8305
           (op =::'q_56851::type => 'q_56851::type => bool) (s y) x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8306
     (t f ((Eps::('q_56854::type => bool) => 'q_56854::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8307
            (%y::'q_56854::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8308
                (op =::'q_56851::type => 'q_56851::type => bool) (s y) x)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8309
     ((CASEWISE::(('q_56854::type => 'q_56851::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8310
                  ('q_56852::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8311
                   => 'q_56854::type => 'q_56812::type)) hollight.list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8312
                 => 'q_56852::type => 'q_56851::type => 'q_56812::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8313
       clauses f x)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8314
  by (import hollight CASEWISE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8315
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8316
lemma CASEWISE_CASES: "ALL (clauses::(('q_56946::type => 'q_56943::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8317
               ('q_56944::type
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8318
                => 'q_56946::type => 'q_56953::type)) hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8319
   (c::'q_56944::type) x::'q_56943::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8320
   (EX (s::'q_56946::type => 'q_56943::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8321
       (t::'q_56944::type => 'q_56946::type => 'q_56953::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8322
       a::'q_56946::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8323
       MEM (s, t) clauses & s a = x & CASEWISE clauses c x = t c a) |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8324
   ~ (EX (s::'q_56946::type => 'q_56943::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8325
         (t::'q_56944::type => 'q_56946::type => 'q_56953::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8326
         a::'q_56946::type. MEM (s, t) clauses & s a = x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8327
   CASEWISE clauses c x = (SOME y::'q_56953::type. True)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8328
  by (import hollight CASEWISE_CASES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8329
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8330
lemma CASEWISE_WORKS: "ALL (x::(('P::type => 'A::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8331
         ('C::type => 'P::type => 'B::type)) hollight.list)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8332
   xa::'C::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8333
   (ALL (s::'P::type => 'A::type) (t::'C::type => 'P::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8334
       (s'::'P::type => 'A::type) (t'::'C::type => 'P::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8335
       (xb::'P::type) y::'P::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8336
       MEM (s, t) x & MEM (s', t') x & s xb = s' y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8337
       t xa xb = t' xa y) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8338
   ALL_list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8339
    (GABS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8340
      (%f::('P::type => 'A::type) * ('C::type => 'P::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8341
           => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8342
          ALL (s::'P::type => 'A::type) t::'C::type => 'P::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8343
             GEQ (f (s, t))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8344
              (ALL xb::'P::type. CASEWISE x xa (s xb) = t xa xb)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8345
    x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8346
  by (import hollight CASEWISE_WORKS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8347
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8348
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8349
  admissible :: "('q_57089::type => 'q_57082::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8350
=> (('q_57089::type => 'q_57085::type) => 'q_57095::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8351
   => ('q_57095::type => 'q_57082::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8352
      => (('q_57089::type => 'q_57085::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8353
          => 'q_57095::type => 'q_57090::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8354
         => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8355
  "admissible ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8356
%(u::'q_57089::type => 'q_57082::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8357
   (ua::('q_57089::type => 'q_57085::type) => 'q_57095::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8358
   (ub::'q_57095::type => 'q_57082::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8359
   uc::('q_57089::type => 'q_57085::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8360
       => 'q_57095::type => 'q_57090::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8361
   ALL (f::'q_57089::type => 'q_57085::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8362
      (g::'q_57089::type => 'q_57085::type) a::'q_57095::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8363
      ua f a &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8364
      ua g a & (ALL z::'q_57089::type. u z (ub a) --> f z = g z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8365
      uc f a = uc g a"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8366
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8367
lemma DEF_admissible: "admissible =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8368
(%(u::'q_57089::type => 'q_57082::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8369
    (ua::('q_57089::type => 'q_57085::type) => 'q_57095::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8370
    (ub::'q_57095::type => 'q_57082::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8371
    uc::('q_57089::type => 'q_57085::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8372
        => 'q_57095::type => 'q_57090::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8373
    ALL (f::'q_57089::type => 'q_57085::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8374
       (g::'q_57089::type => 'q_57085::type) a::'q_57095::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8375
       ua f a &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8376
       ua g a & (ALL z::'q_57089::type. u z (ub a) --> f z = g z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8377
       uc f a = uc g a)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8378
  by (import hollight DEF_admissible)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8379
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8380
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8381
  tailadmissible :: "('A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8382
=> (('A::type => 'B::type) => 'P::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8383
   => ('P::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8384
      => (('A::type => 'B::type) => 'P::type => 'B::type) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8385
  "tailadmissible ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8386
%(u::'A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8387
   (ua::('A::type => 'B::type) => 'P::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8388
   (ub::'P::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8389
   uc::('A::type => 'B::type) => 'P::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8390
   EX (P::('A::type => 'B::type) => 'P::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8391
      (G::('A::type => 'B::type) => 'P::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8392
      H::('A::type => 'B::type) => 'P::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8393
      (ALL (f::'A::type => 'B::type) (a::'P::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8394
          P f a & u y (G f a) --> u y (ub a)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8395
      (ALL (f::'A::type => 'B::type) (g::'A::type => 'B::type) a::'P::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8396
          (ALL z::'A::type. u z (ub a) --> f z = g z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8397
          P f a = P g a & G f a = G g a & H f a = H g a) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8398
      (ALL (f::'A::type => 'B::type) a::'P::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8399
          ua f a --> uc f a = COND (P f a) (f (G f a)) (H f a))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8400
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8401
lemma DEF_tailadmissible: "tailadmissible =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8402
(%(u::'A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8403
    (ua::('A::type => 'B::type) => 'P::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8404
    (ub::'P::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8405
    uc::('A::type => 'B::type) => 'P::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8406
    EX (P::('A::type => 'B::type) => 'P::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8407
       (G::('A::type => 'B::type) => 'P::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8408
       H::('A::type => 'B::type) => 'P::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8409
       (ALL (f::'A::type => 'B::type) (a::'P::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8410
           P f a & u y (G f a) --> u y (ub a)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8411
       (ALL (f::'A::type => 'B::type) (g::'A::type => 'B::type) a::'P::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8412
           (ALL z::'A::type. u z (ub a) --> f z = g z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8413
           P f a = P g a & G f a = G g a & H f a = H g a) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8414
       (ALL (f::'A::type => 'B::type) a::'P::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8415
           ua f a --> uc f a = COND (P f a) (f (G f a)) (H f a)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8416
  by (import hollight DEF_tailadmissible)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8417
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8418
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8419
  superadmissible :: "('q_57239::type => 'q_57239::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8420
=> (('q_57239::type => 'q_57241::type) => 'q_57247::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8421
   => ('q_57247::type => 'q_57239::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8422
      => (('q_57239::type => 'q_57241::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8423
          => 'q_57247::type => 'q_57241::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8424
         => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8425
  "superadmissible ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8426
%(u::'q_57239::type => 'q_57239::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8427
   (ua::('q_57239::type => 'q_57241::type) => 'q_57247::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8428
   (ub::'q_57247::type => 'q_57239::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8429
   uc::('q_57239::type => 'q_57241::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8430
       => 'q_57247::type => 'q_57241::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8431
   admissible u
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8432
    (%(f::'q_57239::type => 'q_57241::type) a::'q_57247::type. True) ub
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8433
    ua -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8434
   tailadmissible u ua ub uc"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8435
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8436
lemma DEF_superadmissible: "superadmissible =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8437
(%(u::'q_57239::type => 'q_57239::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8438
    (ua::('q_57239::type => 'q_57241::type) => 'q_57247::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8439
    (ub::'q_57247::type => 'q_57239::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8440
    uc::('q_57239::type => 'q_57241::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8441
        => 'q_57247::type => 'q_57241::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8442
    admissible u
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8443
     (%(f::'q_57239::type => 'q_57241::type) a::'q_57247::type. True) ub
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8444
     ua -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8445
    tailadmissible u ua ub uc)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8446
  by (import hollight DEF_superadmissible)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8447
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8448
lemma SUPERADMISSIBLE_COND: "ALL (x::'A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8449
   (xa::('A::type => 'B::type) => 'P::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8450
   (xb::('A::type => 'B::type) => 'P::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8451
   (xc::'P::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8452
   (xd::('A::type => 'B::type) => 'P::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8453
   xe::('A::type => 'B::type) => 'P::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8454
   admissible x xa xc xb &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8455
   superadmissible x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8456
    (%(f::'A::type => 'B::type) x::'P::type. xa f x & xb f x) xc xd &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8457
   superadmissible x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8458
    (%(f::'A::type => 'B::type) x::'P::type. xa f x & ~ xb f x) xc xe -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8459
   superadmissible x xa xc
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8460
    (%(f::'A::type => 'B::type) x::'P::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8461
        COND (xb f x) (xd f x) (xe f x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8462
  by (import hollight SUPERADMISSIBLE_COND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8463
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8464
lemma ADMISSIBLE_IMP_SUPERADMISSIBLE: "ALL (x::'A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8465
   (xa::('A::type => 'B::type) => 'P::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8466
   (xb::'P::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8467
   xc::('A::type => 'B::type) => 'P::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8468
   admissible x xa xb xc --> superadmissible x xa xb xc"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8469
  by (import hollight ADMISSIBLE_IMP_SUPERADMISSIBLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8470
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8471
lemma TAIL_IMP_SUPERADMISSIBLE: "ALL (x::'A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8472
   (xa::('A::type => 'B::type) => 'P::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8473
   (xb::'P::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8474
   xc::('A::type => 'B::type) => 'P::type => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8475
   admissible x xa xb xc &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8476
   (ALL (f::'A::type => 'B::type) a::'P::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8477
       xa f a --> (ALL y::'A::type. x y (xc f a) --> x y (xb a))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8478
   superadmissible x xa xb
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8479
    (%(f::'A::type => 'B::type) x::'P::type. f (xc f x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8480
  by (import hollight TAIL_IMP_SUPERADMISSIBLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8481
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8482
lemma ADMISSIBLE_COND: "ALL (u_354::'A::type => 'q_57627::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8483
   (p::('A::type => 'B::type) => 'P::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8484
   (P::('A::type => 'B::type) => 'P::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8485
   (s::'P::type => 'q_57627::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8486
   (h::('A::type => 'B::type) => 'P::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8487
   k::('A::type => 'B::type) => 'P::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8488
   admissible u_354 p s P &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8489
   admissible u_354 (%(f::'A::type => 'B::type) x::'P::type. p f x & P f x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8490
    s h &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8491
   admissible u_354
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8492
    (%(f::'A::type => 'B::type) x::'P::type. p f x & ~ P f x) s k -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8493
   admissible u_354 p s
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8494
    (%(f::'A::type => 'B::type) x::'P::type. COND (P f x) (h f x) (k f x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8495
  by (import hollight ADMISSIBLE_COND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8496
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8497
lemma ADMISSIBLE_CONST: "admissible (u_354::'q_57702::type => 'q_57701::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8498
 (p::('q_57702::type => 'q_57703::type) => 'q_57704::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8499
 (s::'q_57704::type => 'q_57701::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8500
 (%f::'q_57702::type => 'q_57703::type. c::'q_57704::type => 'q_57705::type)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8501
  by (import hollight ADMISSIBLE_CONST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8502
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8503
lemma ADMISSIBLE_COMB: "ALL (x::'A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8504
   (xa::('A::type => 'B::type) => 'P::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8505
   (xb::'P::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8506
   (xc::('A::type => 'B::type) => 'P::type => 'C::type => 'D::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8507
   xd::('A::type => 'B::type) => 'P::type => 'C::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8508
   admissible x xa xb xc & admissible x xa xb xd -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8509
   admissible x xa xb
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8510
    (%(f::'A::type => 'B::type) x::'P::type. xc f x (xd f x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8511
  by (import hollight ADMISSIBLE_COMB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8512
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8513
lemma ADMISSIBLE_BASE: "ALL (x::'A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8514
   (xa::('A::type => 'B::type) => 'P::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8515
   (xb::'P::type => 'A::type) xc::'P::type => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8516
   (ALL (f::'A::type => 'B::type) a::'P::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8517
       xa f a --> x (xc a) (xb a)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8518
   admissible x xa xb (%(f::'A::type => 'B::type) x::'P::type. f (xc x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8519
  by (import hollight ADMISSIBLE_BASE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8520
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8521
lemma ADMISSIBLE_NEST: "ALL (x::'A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8522
   (xa::('A::type => 'B::type) => 'P::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8523
   (xb::'P::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8524
   xc::('A::type => 'B::type) => 'P::type => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8525
   admissible x xa xb xc &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8526
   (ALL (f::'A::type => 'B::type) a::'P::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8527
       xa f a --> x (xc f a) (xb a)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8528
   admissible x xa xb (%(f::'A::type => 'B::type) x::'P::type. f (xc f x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8529
  by (import hollight ADMISSIBLE_NEST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8530
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8531
lemma ADMISSIBLE_LAMBDA: "ALL (x::'A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8532
   (xa::('A::type => 'B::type) => 'P::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8533
   (xb::'P::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8534
   xc::'C::type => ('A::type => 'B::type) => 'P::type => 'D::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8535
   (ALL xd::'C::type. admissible x xa xb (xc xd)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8536
   admissible x xa xb
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8537
    (%(f::'A::type => 'B::type) (x::'P::type) u::'C::type. xc u f x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8538
  by (import hollight ADMISSIBLE_LAMBDA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8539
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8540
lemma WF_REC_CASES: "ALL (u_354::'A::type => 'A::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8541
   clauses::(('P::type => 'A::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8542
             (('A::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8543
              => 'P::type => 'B::type)) hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8544
   WF u_354 &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8545
   ALL_list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8546
    (GABS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8547
      (%f::('P::type => 'A::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8548
           (('A::type => 'B::type) => 'P::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8549
           => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8550
          ALL (s::'P::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8551
             t::('A::type => 'B::type) => 'P::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8552
             GEQ (f (s, t))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8553
              (EX (P::('A::type => 'B::type) => 'P::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8554
                  (G::('A::type => 'B::type) => 'P::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8555
                  H::('A::type => 'B::type) => 'P::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8556
                  (ALL (f::'A::type => 'B::type) (a::'P::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8557
                      P f a & u_354 y (G f a) --> u_354 y (s a)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8558
                  (ALL (f::'A::type => 'B::type) (g::'A::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8559
                      a::'P::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8560
                      (ALL z::'A::type. u_354 z (s a) --> f z = g z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8561
                      P f a = P g a & G f a = G g a & H f a = H g a) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8562
                  (ALL (f::'A::type => 'B::type) a::'P::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8563
                      t f a = COND (P f a) (f (G f a)) (H f a)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8564
    clauses -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8565
   (EX f::'A::type => 'B::type. ALL x::'A::type. f x = CASEWISE clauses f x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8566
  by (import hollight WF_REC_CASES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8567
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8568
lemma RECURSION_CASEWISE: "ALL clauses::(('P::type => 'A::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8569
              (('A::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8570
               => 'P::type => 'B::type)) hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8571
   (EX u::'A::type => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8572
       WF u &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8573
       ALL_list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8574
        (GABS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8575
          (%f::('P::type => 'A::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8576
               (('A::type => 'B::type) => 'P::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8577
               => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8578
              ALL (s::'P::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8579
                 t::('A::type => 'B::type) => 'P::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8580
                 GEQ (f (s, t))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8581
                  (tailadmissible u
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8582
                    (%(f::'A::type => 'B::type) a::'P::type. True) s t)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8583
        clauses) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8584
   (ALL (x::'P::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8585
       (xa::('A::type => 'B::type) => 'P::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8586
       (xb::'P::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8587
       (xc::('A::type => 'B::type) => 'P::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8588
       (xd::'A::type => 'B::type) (xe::'P::type) xf::'P::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8589
       MEM (x, xa) clauses & MEM (xb, xc) clauses -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8590
       x xe = xb xf --> xa xd xe = xc xd xf) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8591
   (EX f::'A::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8592
       ALL_list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8593
        (GABS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8594
          (%fa::('P::type => 'A::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8595
                (('A::type => 'B::type) => 'P::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8596
                => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8597
              ALL (s::'P::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8598
                 t::('A::type => 'B::type) => 'P::type => 'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8599
                 GEQ (fa (s, t)) (ALL x::'P::type. f (s x) = t f x)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8600
        clauses)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8601
  by (import hollight RECURSION_CASEWISE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8602
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8603
lemma cth: "ALL (p1::'A::type => 'q_58634::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8604
   (p2::'q_58645::type => 'A::type => 'q_58639::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8605
   (p1'::'A::type => 'q_58634::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8606
   p2'::'q_58645::type => 'A::type => 'q_58639::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8607
   (ALL (c::'q_58645::type) (x::'A::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8608
       p1 x = p1' y --> p2 c x = p2' c y) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8609
   (ALL (c::'q_58645::type) (x::'A::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8610
       p1' x = p1 y --> p2' c x = p2 c y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8611
  by (import hollight cth)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8612
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8613
lemma RECURSION_CASEWISE_PAIRWISE: "ALL x::(('q_58682::type => 'q_58662::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8614
        (('q_58662::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8615
         => 'q_58682::type => 'q_58678::type)) hollight.list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8616
   (EX u::'q_58662::type => 'q_58662::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8617
       WF u &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8618
       ALL_list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8619
        (GABS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8620
          (%f::('q_58682::type => 'q_58662::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8621
               (('q_58662::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8622
                => 'q_58682::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8623
               => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8624
              ALL (s::'q_58682::type => 'q_58662::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8625
                 t::('q_58662::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8626
                    => 'q_58682::type => 'q_58678::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8627
                 GEQ (f (s, t))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8628
                  (tailadmissible u
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8629
                    (%(f::'q_58662::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8630
                        a::'q_58682::type. True)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8631
                    s t)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8632
        x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8633
   ALL_list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8634
    (GABS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8635
      (%f::('q_58682::type => 'q_58662::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8636
           (('q_58662::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8637
            => 'q_58682::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8638
           => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8639
          ALL (a::'q_58682::type => 'q_58662::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8640
             b::('q_58662::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8641
                => 'q_58682::type => 'q_58678::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8642
             GEQ (f (a, b))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8643
              (ALL (c::'q_58662::type => 'q_58678::type) (x::'q_58682::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8644
                  y::'q_58682::type. a x = a y --> b c x = b c y)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8645
    x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8646
   PAIRWISE
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8647
    (GABS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8648
      (%f::('q_58682::type => 'q_58662::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8649
           (('q_58662::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8650
            => 'q_58682::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8651
           => ('q_58682::type => 'q_58662::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8652
              (('q_58662::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8653
               => 'q_58682::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8654
              => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8655
          ALL (s::'q_58682::type => 'q_58662::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8656
             t::('q_58662::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8657
                => 'q_58682::type => 'q_58678::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8658
             GEQ (f (s, t))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8659
              (GABS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8660
                (%f::('q_58682::type => 'q_58662::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8661
                     (('q_58662::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8662
                      => 'q_58682::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8663
                     => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8664
                    ALL (s'::'q_58682::type => 'q_58662::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8665
                       t'::('q_58662::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8666
                           => 'q_58682::type => 'q_58678::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8667
                       GEQ (f (s', t'))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8668
                        (ALL (c::'q_58662::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8669
                            (x::'q_58682::type) y::'q_58682::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8670
                            s x = s' y --> t c x = t' c y)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8671
    x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8672
   (EX f::'q_58662::type => 'q_58678::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8673
       ALL_list
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8674
        (GABS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8675
          (%fa::('q_58682::type => 'q_58662::type) *
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8676
                (('q_58662::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8677
                 => 'q_58682::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8678
                => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8679
              ALL (s::'q_58682::type => 'q_58662::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8680
                 t::('q_58662::type => 'q_58678::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8681
                    => 'q_58682::type => 'q_58678::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8682
                 GEQ (fa (s, t)) (ALL x::'q_58682::type. f (s x) = t f x)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8683
        x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8684
  by (import hollight RECURSION_CASEWISE_PAIRWISE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8685
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8686
lemma SUPERADMISSIBLE_T: "superadmissible (u_354::'q_58792::type => 'q_58792::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8687
 (%(f::'q_58792::type => 'q_58794::type) x::'q_58798::type. True)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8688
 (s::'q_58798::type => 'q_58792::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8689
 (t::('q_58792::type => 'q_58794::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8690
     => 'q_58798::type => 'q_58794::type) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8691
tailadmissible u_354
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8692
 (%(f::'q_58792::type => 'q_58794::type) x::'q_58798::type. True) s t"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8693
  by (import hollight SUPERADMISSIBLE_T)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8694
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8695
lemma SUB_SUB: "ALL (x::nat) xa::nat. <= xa x --> (ALL a::nat. a - (x - xa) = a + xa - x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8696
  by (import hollight SUB_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8697
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8698
lemma SUB_OLD: "(ALL m::nat. (0::nat) - m = (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8699
(ALL (m::nat) n::nat. Suc m - n = COND (< m n) (0::nat) (Suc (m - n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8700
  by (import hollight SUB_OLD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8701
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8702
lemma real_le: "ALL (x::hollight.real) xa::hollight.real. real_le x xa = (~ real_lt xa x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8703
  by (import hollight real_le)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8704
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8705
lemma REAL_MUL_RID: "ALL x::hollight.real. real_mul x (real_of_num (NUMERAL_BIT1 (0::nat))) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8706
  by (import hollight REAL_MUL_RID)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8707
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8708
lemma REAL_MUL_RINV: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8709
   x ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8710
   real_mul x (real_inv x) = real_of_num (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8711
  by (import hollight REAL_MUL_RINV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8712
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8713
lemma REAL_RDISTRIB: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8714
   real_mul (real_add x y) z = real_add (real_mul x z) (real_mul y z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8715
  by (import hollight REAL_RDISTRIB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8716
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8717
lemma REAL_EQ_LADD: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8718
   (real_add x y = real_add x z) = (y = z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8719
  by (import hollight REAL_EQ_LADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8720
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8721
lemma REAL_EQ_RADD: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8722
   (real_add x z = real_add y z) = (x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8723
  by (import hollight REAL_EQ_RADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8724
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8725
lemma REAL_ADD_LID_UNIQ: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8726
   (real_add x y = y) = (x = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8727
  by (import hollight REAL_ADD_LID_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8728
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8729
lemma REAL_ADD_RID_UNIQ: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8730
   (real_add x y = x) = (y = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8731
  by (import hollight REAL_ADD_RID_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8732
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8733
lemma REAL_LNEG_UNIQ: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8734
   (real_add x y = real_of_num (0::nat)) = (x = real_neg y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8735
  by (import hollight REAL_LNEG_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8736
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8737
lemma REAL_RNEG_UNIQ: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8738
   (real_add x y = real_of_num (0::nat)) = (y = real_neg x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8739
  by (import hollight REAL_RNEG_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8740
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8741
lemma REAL_NEG_ADD: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8742
   real_neg (real_add x y) = real_add (real_neg x) (real_neg y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8743
  by (import hollight REAL_NEG_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8744
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8745
lemma REAL_MUL_LZERO: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8746
   real_mul (real_of_num (0::nat)) x = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8747
  by (import hollight REAL_MUL_LZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8748
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8749
lemma REAL_MUL_RZERO: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8750
   real_mul x (real_of_num (0::nat)) = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8751
  by (import hollight REAL_MUL_RZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8752
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8753
lemma REAL_NEG_LMUL: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8754
   real_neg (real_mul x y) = real_mul (real_neg x) y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8755
  by (import hollight REAL_NEG_LMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8756
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8757
lemma REAL_NEG_RMUL: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8758
   real_neg (real_mul x y) = real_mul x (real_neg y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8759
  by (import hollight REAL_NEG_RMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8760
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8761
lemma REAL_NEGNEG: "ALL x::hollight.real. real_neg (real_neg x) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8762
  by (import hollight REAL_NEGNEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8763
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8764
lemma REAL_NEG_MUL2: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8765
   real_mul (real_neg x) (real_neg xa) = real_mul x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8766
  by (import hollight REAL_NEG_MUL2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8767
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8768
lemma REAL_LT_LADD: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8769
   real_lt (real_add x y) (real_add x z) = real_lt y z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8770
  by (import hollight REAL_LT_LADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8771
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8772
lemma REAL_LT_RADD: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8773
   real_lt (real_add x z) (real_add y z) = real_lt x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8774
  by (import hollight REAL_LT_RADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8775
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8776
lemma REAL_NOT_LT: "ALL (x::hollight.real) y::hollight.real. (~ real_lt x y) = real_le y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8777
  by (import hollight REAL_NOT_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8778
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8779
lemma REAL_LT_ANTISYM: "ALL (x::hollight.real) y::hollight.real. ~ (real_lt x y & real_lt y x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8780
  by (import hollight REAL_LT_ANTISYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8781
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8782
lemma REAL_LT_GT: "ALL (x::hollight.real) y::hollight.real. real_lt x y --> ~ real_lt y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8783
  by (import hollight REAL_LT_GT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8784
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8785
lemma REAL_LE_TOTAL: "ALL (x::hollight.real) y::hollight.real. real_le x y | real_le y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8786
  by (import hollight REAL_LE_TOTAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8787
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8788
lemma REAL_LE_REFL: "ALL x::hollight.real. real_le x x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8789
  by (import hollight REAL_LE_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8790
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8791
lemma REAL_LE_LT: "ALL (x::hollight.real) y::hollight.real. real_le x y = (real_lt x y | x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8792
  by (import hollight REAL_LE_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8793
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8794
lemma REAL_LT_LE: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8795
   real_lt x y = (real_le x y & x ~= y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8796
  by (import hollight REAL_LT_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8797
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8798
lemma REAL_LT_IMP_LE: "ALL (x::hollight.real) y::hollight.real. real_lt x y --> real_le x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8799
  by (import hollight REAL_LT_IMP_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8800
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8801
lemma REAL_LTE_TRANS: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8802
   real_lt x y & real_le y z --> real_lt x z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8803
  by (import hollight REAL_LTE_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8804
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8805
lemma REAL_LE_TRANS: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8806
   real_le x y & real_le y z --> real_le x z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8807
  by (import hollight REAL_LE_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8808
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8809
lemma REAL_NEG_LT0: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8810
   real_lt (real_neg x) (real_of_num (0::nat)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8811
   real_lt (real_of_num (0::nat)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8812
  by (import hollight REAL_NEG_LT0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8813
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8814
lemma REAL_NEG_GT0: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8815
   real_lt (real_of_num (0::nat)) (real_neg x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8816
   real_lt x (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8817
  by (import hollight REAL_NEG_GT0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8818
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8819
lemma REAL_NEG_LE0: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8820
   real_le (real_neg x) (real_of_num (0::nat)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8821
   real_le (real_of_num (0::nat)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8822
  by (import hollight REAL_NEG_LE0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8823
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8824
lemma REAL_NEG_GE0: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8825
   real_le (real_of_num (0::nat)) (real_neg x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8826
   real_le x (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8827
  by (import hollight REAL_NEG_GE0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8828
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8829
lemma REAL_LT_NEGTOTAL: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8830
   x = real_of_num (0::nat) |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8831
   real_lt (real_of_num (0::nat)) x |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8832
   real_lt (real_of_num (0::nat)) (real_neg x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8833
  by (import hollight REAL_LT_NEGTOTAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8834
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8835
lemma REAL_LE_NEGTOTAL: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8836
   real_le (real_of_num (0::nat)) x |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8837
   real_le (real_of_num (0::nat)) (real_neg x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8838
  by (import hollight REAL_LE_NEGTOTAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8839
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8840
lemma REAL_LE_MUL: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8841
   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8842
   real_le (real_of_num (0::nat)) (real_mul x y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8843
  by (import hollight REAL_LE_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8844
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8845
lemma REAL_LE_SQUARE: "ALL x::hollight.real. real_le (real_of_num (0::nat)) (real_mul x x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8846
  by (import hollight REAL_LE_SQUARE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8847
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8848
lemma REAL_LT_01: "real_lt (real_of_num (0::nat)) (real_of_num (NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8849
  by (import hollight REAL_LT_01)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8850
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8851
lemma REAL_LE_LADD: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8852
   real_le (real_add x y) (real_add x z) = real_le y z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8853
  by (import hollight REAL_LE_LADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8854
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8855
lemma REAL_LE_RADD: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8856
   real_le (real_add x z) (real_add y z) = real_le x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8857
  by (import hollight REAL_LE_RADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8858
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8859
lemma REAL_LT_ADD2: "ALL (w::hollight.real) (x::hollight.real) (y::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8860
   z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8861
   real_lt w x & real_lt y z --> real_lt (real_add w y) (real_add x z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8862
  by (import hollight REAL_LT_ADD2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8863
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8864
lemma REAL_LT_ADD: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8865
   real_lt (real_of_num (0::nat)) x & real_lt (real_of_num (0::nat)) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8866
   real_lt (real_of_num (0::nat)) (real_add x y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8867
  by (import hollight REAL_LT_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8868
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8869
lemma REAL_LT_ADDNEG: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8870
   real_lt y (real_add x (real_neg z)) = real_lt (real_add y z) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8871
  by (import hollight REAL_LT_ADDNEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8872
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8873
lemma REAL_LT_ADDNEG2: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8874
   real_lt (real_add x (real_neg y)) z = real_lt x (real_add z y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8875
  by (import hollight REAL_LT_ADDNEG2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8876
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8877
lemma REAL_LT_ADD1: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8878
   real_le x y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8879
   real_lt x (real_add y (real_of_num (NUMERAL_BIT1 (0::nat))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8880
  by (import hollight REAL_LT_ADD1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8881
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8882
lemma REAL_SUB_ADD: "ALL (x::hollight.real) y::hollight.real. real_add (real_sub x y) y = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8883
  by (import hollight REAL_SUB_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8884
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8885
lemma REAL_SUB_ADD2: "ALL (x::hollight.real) y::hollight.real. real_add y (real_sub x y) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8886
  by (import hollight REAL_SUB_ADD2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8887
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8888
lemma REAL_SUB_REFL: "ALL x::hollight.real. real_sub x x = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8889
  by (import hollight REAL_SUB_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8890
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8891
lemma REAL_SUB_0: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8892
   (real_sub x y = real_of_num (0::nat)) = (x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8893
  by (import hollight REAL_SUB_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8894
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8895
lemma REAL_LE_DOUBLE: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8896
   real_le (real_of_num (0::nat)) (real_add x x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8897
   real_le (real_of_num (0::nat)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8898
  by (import hollight REAL_LE_DOUBLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8899
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8900
lemma REAL_LE_NEGL: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8901
   real_le (real_neg x) x = real_le (real_of_num (0::nat)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8902
  by (import hollight REAL_LE_NEGL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8903
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8904
lemma REAL_LE_NEGR: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8905
   real_le x (real_neg x) = real_le x (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8906
  by (import hollight REAL_LE_NEGR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8907
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8908
lemma REAL_NEG_EQ0: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8909
   (real_neg x = real_of_num (0::nat)) = (x = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8910
  by (import hollight REAL_NEG_EQ0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8911
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8912
lemma REAL_NEG_0: "real_neg (real_of_num (0::nat)) = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8913
  by (import hollight REAL_NEG_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8914
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8915
lemma REAL_NEG_SUB: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8916
   real_neg (real_sub x y) = real_sub y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8917
  by (import hollight REAL_NEG_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8918
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8919
lemma REAL_SUB_LT: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8920
   real_lt (real_of_num (0::nat)) (real_sub x y) = real_lt y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8921
  by (import hollight REAL_SUB_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8922
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8923
lemma REAL_SUB_LE: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8924
   real_le (real_of_num (0::nat)) (real_sub x y) = real_le y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8925
  by (import hollight REAL_SUB_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8926
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8927
lemma REAL_EQ_LMUL: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8928
   (real_mul x y = real_mul x z) = (x = real_of_num (0::nat) | y = z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8929
  by (import hollight REAL_EQ_LMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8930
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8931
lemma REAL_EQ_RMUL: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8932
   (real_mul x z = real_mul y z) = (z = real_of_num (0::nat) | x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8933
  by (import hollight REAL_EQ_RMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8934
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8935
lemma REAL_SUB_LDISTRIB: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8936
   real_mul x (real_sub y z) = real_sub (real_mul x y) (real_mul x z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8937
  by (import hollight REAL_SUB_LDISTRIB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8938
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8939
lemma REAL_SUB_RDISTRIB: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8940
   real_mul (real_sub x y) z = real_sub (real_mul x z) (real_mul y z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8941
  by (import hollight REAL_SUB_RDISTRIB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8942
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8943
lemma REAL_NEG_EQ: "ALL (x::hollight.real) y::hollight.real. (real_neg x = y) = (x = real_neg y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8944
  by (import hollight REAL_NEG_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8945
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8946
lemma REAL_NEG_MINUS1: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8947
   real_neg x = real_mul (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8948
  by (import hollight REAL_NEG_MINUS1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8949
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8950
lemma REAL_INV_NZ: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8951
   x ~= real_of_num (0::nat) --> real_inv x ~= real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8952
  by (import hollight REAL_INV_NZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8953
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8954
lemma REAL_INVINV: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8955
   x ~= real_of_num (0::nat) --> real_inv (real_inv x) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8956
  by (import hollight REAL_INVINV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8957
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8958
lemma REAL_LT_IMP_NE: "ALL (x::hollight.real) y::hollight.real. real_lt x y --> x ~= y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8959
  by (import hollight REAL_LT_IMP_NE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8960
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8961
lemma REAL_INV_POS: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8962
   real_lt (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8963
   real_lt (real_of_num (0::nat)) (real_inv x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8964
  by (import hollight REAL_INV_POS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8965
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8966
lemma REAL_LT_LMUL_0: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8967
   real_lt (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8968
   real_lt (real_of_num (0::nat)) (real_mul x y) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8969
   real_lt (real_of_num (0::nat)) y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8970
  by (import hollight REAL_LT_LMUL_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8971
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8972
lemma REAL_LT_RMUL_0: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8973
   real_lt (real_of_num (0::nat)) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8974
   real_lt (real_of_num (0::nat)) (real_mul x y) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8975
   real_lt (real_of_num (0::nat)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8976
  by (import hollight REAL_LT_RMUL_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8977
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8978
lemma REAL_LT_LMUL_EQ: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8979
   real_lt (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8980
   real_lt (real_mul x y) (real_mul x z) = real_lt y z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8981
  by (import hollight REAL_LT_LMUL_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8982
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8983
lemma REAL_LT_RMUL_EQ: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8984
   real_lt (real_of_num (0::nat)) z -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8985
   real_lt (real_mul x z) (real_mul y z) = real_lt x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8986
  by (import hollight REAL_LT_RMUL_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8987
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8988
lemma REAL_LT_RMUL_IMP: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8989
   real_lt x y & real_lt (real_of_num (0::nat)) z -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8990
   real_lt (real_mul x z) (real_mul y z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8991
  by (import hollight REAL_LT_RMUL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8992
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8993
lemma REAL_LT_LMUL_IMP: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8994
   real_lt y z & real_lt (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8995
   real_lt (real_mul x y) (real_mul x z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8996
  by (import hollight REAL_LT_LMUL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8997
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8998
lemma REAL_LINV_UNIQ: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  8999
   real_mul x y = real_of_num (NUMERAL_BIT1 (0::nat)) --> x = real_inv y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9000
  by (import hollight REAL_LINV_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9001
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9002
lemma REAL_RINV_UNIQ: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9003
   real_mul x y = real_of_num (NUMERAL_BIT1 (0::nat)) --> y = real_inv x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9004
  by (import hollight REAL_RINV_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9005
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9006
lemma REAL_NEG_INV: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9007
   x ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9008
   real_neg (real_inv x) = real_inv (real_neg x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9009
  by (import hollight REAL_NEG_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9010
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9011
lemma REAL_INV_1OVER: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9012
   real_inv x = real_div (real_of_num (NUMERAL_BIT1 (0::nat))) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9013
  by (import hollight REAL_INV_1OVER)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9014
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9015
lemma REAL: "ALL x::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9016
   real_of_num (Suc x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9017
   real_add (real_of_num x) (real_of_num (NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9018
  by (import hollight REAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9019
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9020
lemma REAL_POS: "ALL n::nat. real_le (real_of_num (0::nat)) (real_of_num n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9021
  by (import hollight REAL_POS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9022
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9023
lemma REAL_LE: "ALL (m::nat) n::nat. real_le (real_of_num m) (real_of_num n) = <= m n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9024
  by (import hollight REAL_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9025
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9026
lemma REAL_LT: "ALL (m::nat) n::nat. real_lt (real_of_num m) (real_of_num n) = < m n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9027
  by (import hollight REAL_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9028
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9029
lemma th: "((m::nat) = (n::nat)) = (<= m n & <= n m)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9030
  by (import hollight th)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9031
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9032
lemma REAL_INJ: "ALL (m::nat) n::nat. (real_of_num m = real_of_num n) = (m = n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9033
  by (import hollight REAL_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9034
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9035
lemma REAL_ADD: "ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9036
   real_add (real_of_num m) (real_of_num n) = real_of_num (m + n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9037
  by (import hollight REAL_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9038
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9039
lemma REAL_MUL: "ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9040
   real_mul (real_of_num m) (real_of_num n) = real_of_num (m * n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9041
  by (import hollight REAL_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9042
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9043
lemma REAL_INV1: "real_inv (real_of_num (NUMERAL_BIT1 (0::nat))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9044
real_of_num (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9045
  by (import hollight REAL_INV1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9046
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9047
lemma REAL_DIV_LZERO: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9048
   real_div (real_of_num (0::nat)) x = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9049
  by (import hollight REAL_DIV_LZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9050
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9051
lemma REAL_LT_NZ: "ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9052
   (real_of_num n ~= real_of_num (0::nat)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9053
   real_lt (real_of_num (0::nat)) (real_of_num n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9054
  by (import hollight REAL_LT_NZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9055
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9056
lemma REAL_NZ_IMP_LT: "ALL n::nat. n ~= (0::nat) --> real_lt (real_of_num (0::nat)) (real_of_num n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9057
  by (import hollight REAL_NZ_IMP_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9058
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9059
lemma REAL_LT_RDIV_0: "ALL (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9060
   real_lt (real_of_num (0::nat)) z -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9061
   real_lt (real_of_num (0::nat)) (real_div y z) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9062
   real_lt (real_of_num (0::nat)) y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9063
  by (import hollight REAL_LT_RDIV_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9064
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9065
lemma REAL_LT_RDIV: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9066
   real_lt (real_of_num (0::nat)) z -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9067
   real_lt (real_div x z) (real_div y z) = real_lt x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9068
  by (import hollight REAL_LT_RDIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9069
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9070
lemma REAL_LT_FRACTION_0: "ALL (n::nat) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9071
   n ~= (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9072
   real_lt (real_of_num (0::nat)) (real_div d (real_of_num n)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9073
   real_lt (real_of_num (0::nat)) d"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9074
  by (import hollight REAL_LT_FRACTION_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9075
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9076
lemma REAL_LT_MULTIPLE: "ALL (x::nat) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9077
   < (NUMERAL_BIT1 (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9078
   real_lt xa (real_mul (real_of_num x) xa) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9079
   real_lt (real_of_num (0::nat)) xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9080
  by (import hollight REAL_LT_MULTIPLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9081
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9082
lemma REAL_LT_FRACTION: "ALL (n::nat) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9083
   < (NUMERAL_BIT1 (0::nat)) n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9084
   real_lt (real_div d (real_of_num n)) d = real_lt (real_of_num (0::nat)) d"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9085
  by (import hollight REAL_LT_FRACTION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9086
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9087
lemma REAL_LT_HALF1: "ALL d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9088
   real_lt (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9089
    (real_div d (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9090
   real_lt (real_of_num (0::nat)) d"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9091
  by (import hollight REAL_LT_HALF1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9092
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9093
lemma REAL_LT_HALF2: "ALL d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9094
   real_lt (real_div d (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9095
    d =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9096
   real_lt (real_of_num (0::nat)) d"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9097
  by (import hollight REAL_LT_HALF2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9098
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9099
lemma REAL_DOUBLE: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9100
   real_add x x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9101
   real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9102
  by (import hollight REAL_DOUBLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9103
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9104
lemma REAL_HALF_DOUBLE: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9105
   real_add
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9106
    (real_div x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9107
    (real_div x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9108
   x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9109
  by (import hollight REAL_HALF_DOUBLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9110
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9111
lemma REAL_SUB_SUB: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9112
   real_sub (real_sub x y) x = real_neg y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9113
  by (import hollight REAL_SUB_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9114
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9115
lemma REAL_LT_ADD_SUB: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9116
   real_lt (real_add x y) z = real_lt x (real_sub z y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9117
  by (import hollight REAL_LT_ADD_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9118
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9119
lemma REAL_LT_SUB_RADD: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9120
   real_lt (real_sub x y) z = real_lt x (real_add z y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9121
  by (import hollight REAL_LT_SUB_RADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9122
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9123
lemma REAL_LT_SUB_LADD: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9124
   real_lt x (real_sub y z) = real_lt (real_add x z) y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9125
  by (import hollight REAL_LT_SUB_LADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9126
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9127
lemma REAL_LE_SUB_LADD: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9128
   real_le x (real_sub y z) = real_le (real_add x z) y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9129
  by (import hollight REAL_LE_SUB_LADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9130
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9131
lemma REAL_LE_SUB_RADD: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9132
   real_le (real_sub x y) z = real_le x (real_add z y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9133
  by (import hollight REAL_LE_SUB_RADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9134
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9135
lemma REAL_LT_NEG: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9136
   real_lt (real_neg x) (real_neg y) = real_lt y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9137
  by (import hollight REAL_LT_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9138
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9139
lemma REAL_LE_NEG: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9140
   real_le (real_neg x) (real_neg y) = real_le y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9141
  by (import hollight REAL_LE_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9142
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9143
lemma REAL_SUB_LZERO: "ALL x::hollight.real. real_sub (real_of_num (0::nat)) x = real_neg x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9144
  by (import hollight REAL_SUB_LZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9145
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9146
lemma REAL_SUB_RZERO: "ALL x::hollight.real. real_sub x (real_of_num (0::nat)) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9147
  by (import hollight REAL_SUB_RZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9148
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9149
lemma REAL_LTE_ADD2: "ALL (w::hollight.real) (x::hollight.real) (y::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9150
   z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9151
   real_lt w x & real_le y z --> real_lt (real_add w y) (real_add x z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9152
  by (import hollight REAL_LTE_ADD2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9153
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9154
lemma REAL_LTE_ADD: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9155
   real_lt (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9156
   real_lt (real_of_num (0::nat)) (real_add x y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9157
  by (import hollight REAL_LTE_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9158
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9159
lemma REAL_LT_MUL2_ALT: "ALL (x1::hollight.real) (x2::hollight.real) (y1::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9160
   y2::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9161
   real_le (real_of_num (0::nat)) x1 &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9162
   real_le (real_of_num (0::nat)) y1 & real_lt x1 x2 & real_lt y1 y2 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9163
   real_lt (real_mul x1 y1) (real_mul x2 y2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9164
  by (import hollight REAL_LT_MUL2_ALT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9165
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9166
lemma REAL_SUB_LNEG: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9167
   real_sub (real_neg x) y = real_neg (real_add x y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9168
  by (import hollight REAL_SUB_LNEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9169
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9170
lemma REAL_SUB_RNEG: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9171
   real_sub x (real_neg y) = real_add x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9172
  by (import hollight REAL_SUB_RNEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9173
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9174
lemma REAL_SUB_NEG2: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9175
   real_sub (real_neg x) (real_neg y) = real_sub y x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9176
  by (import hollight REAL_SUB_NEG2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9177
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9178
lemma REAL_SUB_TRIANGLE: "ALL (a::hollight.real) (b::hollight.real) c::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9179
   real_add (real_sub a b) (real_sub b c) = real_sub a c"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9180
  by (import hollight REAL_SUB_TRIANGLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9181
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9182
lemma REAL_INV_MUL_WEAK: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9183
   x ~= real_of_num (0::nat) & xa ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9184
   real_inv (real_mul x xa) = real_mul (real_inv x) (real_inv xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9185
  by (import hollight REAL_INV_MUL_WEAK)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9186
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9187
lemma REAL_LE_LMUL_LOCAL: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9188
   real_lt (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9189
   real_le (real_mul x y) (real_mul x z) = real_le y z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9190
  by (import hollight REAL_LE_LMUL_LOCAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9191
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9192
lemma REAL_LE_RMUL_EQ: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9193
   real_lt (real_of_num (0::nat)) z -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9194
   real_le (real_mul x z) (real_mul y z) = real_le x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9195
  by (import hollight REAL_LE_RMUL_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9196
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9197
lemma REAL_SUB_INV2: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9198
   x ~= real_of_num (0::nat) & y ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9199
   real_sub (real_inv x) (real_inv y) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9200
   real_div (real_sub y x) (real_mul x y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9201
  by (import hollight REAL_SUB_INV2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9202
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9203
lemma REAL_SUB_SUB2: "ALL (x::hollight.real) y::hollight.real. real_sub x (real_sub x y) = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9204
  by (import hollight REAL_SUB_SUB2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9205
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9206
lemma REAL_MEAN: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9207
   real_lt x y --> (EX z::hollight.real. real_lt x z & real_lt z y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9208
  by (import hollight REAL_MEAN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9209
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9210
lemma REAL_EQ_LMUL2: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9211
   x ~= real_of_num (0::nat) --> (y = z) = (real_mul x y = real_mul x z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9212
  by (import hollight REAL_EQ_LMUL2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9213
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9214
lemma REAL_LE_MUL2V: "ALL (x1::hollight.real) (x2::hollight.real) (y1::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9215
   y2::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9216
   real_le (real_of_num (0::nat)) x1 &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9217
   real_le (real_of_num (0::nat)) y1 & real_le x1 x2 & real_le y1 y2 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9218
   real_le (real_mul x1 y1) (real_mul x2 y2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9219
  by (import hollight REAL_LE_MUL2V)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9220
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9221
lemma REAL_LE_LDIV: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9222
   real_lt (real_of_num (0::nat)) x & real_le y (real_mul z x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9223
   real_le (real_div y x) z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9224
  by (import hollight REAL_LE_LDIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9225
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9226
lemma REAL_LE_RDIV: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9227
   real_lt (real_of_num (0::nat)) x & real_le (real_mul y x) z -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9228
   real_le y (real_div z x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9229
  by (import hollight REAL_LE_RDIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9230
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9231
lemma REAL_LT_1: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9232
   real_le (real_of_num (0::nat)) x & real_lt x y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9233
   real_lt (real_div x y) (real_of_num (NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9234
  by (import hollight REAL_LT_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9235
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9236
lemma REAL_LE_LMUL_IMP: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9237
   real_le (real_of_num (0::nat)) x & real_le y z -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9238
   real_le (real_mul x y) (real_mul x z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9239
  by (import hollight REAL_LE_LMUL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9240
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9241
lemma REAL_LE_RMUL_IMP: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9242
   real_le (real_of_num (0::nat)) x & real_le xa xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9243
   real_le (real_mul xa x) (real_mul xb x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9244
  by (import hollight REAL_LE_RMUL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9245
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9246
lemma REAL_INV_LT1: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9247
   real_lt (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9248
   real_lt x (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9249
   real_lt (real_of_num (NUMERAL_BIT1 (0::nat))) (real_inv x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9250
  by (import hollight REAL_INV_LT1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9251
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9252
lemma REAL_POS_NZ: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9253
   real_lt (real_of_num (0::nat)) x --> x ~= real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9254
  by (import hollight REAL_POS_NZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9255
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9256
lemma REAL_EQ_RMUL_IMP: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9257
   z ~= real_of_num (0::nat) & real_mul x z = real_mul y z --> x = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9258
  by (import hollight REAL_EQ_RMUL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9259
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9260
lemma REAL_EQ_LMUL_IMP: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9261
   x ~= real_of_num (0::nat) & real_mul x xa = real_mul x xb --> xa = xb"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9262
  by (import hollight REAL_EQ_LMUL_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9263
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9264
lemma REAL_FACT_NZ: "ALL n::nat. real_of_num (FACT n) ~= real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9265
  by (import hollight REAL_FACT_NZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9266
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9267
lemma REAL_POSSQ: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9268
   real_lt (real_of_num (0::nat)) (real_mul x x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9269
   (x ~= real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9270
  by (import hollight REAL_POSSQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9271
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9272
lemma REAL_SUMSQ: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9273
   (real_add (real_mul x x) (real_mul y y) = real_of_num (0::nat)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9274
   (x = real_of_num (0::nat) & y = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9275
  by (import hollight REAL_SUMSQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9276
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9277
lemma REAL_EQ_NEG: "ALL (x::hollight.real) y::hollight.real. (real_neg x = real_neg y) = (x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9278
  by (import hollight REAL_EQ_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9279
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9280
lemma REAL_DIV_MUL2: "ALL (x::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9281
   x ~= real_of_num (0::nat) & z ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9282
   (ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9283
       real_div y z = real_div (real_mul x y) (real_mul x z))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9284
  by (import hollight REAL_DIV_MUL2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9285
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9286
lemma REAL_MIDDLE1: "ALL (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9287
   real_le a b -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9288
   real_le a
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9289
    (real_div (real_add a b)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9290
      (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9291
  by (import hollight REAL_MIDDLE1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9292
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9293
lemma REAL_MIDDLE2: "ALL (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9294
   real_le a b -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9295
   real_le
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9296
    (real_div (real_add a b)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9297
      (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9298
    b"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9299
  by (import hollight REAL_MIDDLE2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9300
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9301
lemma ABS_ZERO: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9302
   (real_abs x = real_of_num (0::nat)) = (x = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9303
  by (import hollight ABS_ZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9304
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9305
lemma ABS_0: "real_abs (real_of_num (0::nat)) = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9306
  by (import hollight ABS_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9307
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9308
lemma ABS_1: "real_abs (real_of_num (NUMERAL_BIT1 (0::nat))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9309
real_of_num (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9310
  by (import hollight ABS_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9311
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9312
lemma ABS_NEG: "ALL x::hollight.real. real_abs (real_neg x) = real_abs x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9313
  by (import hollight ABS_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9314
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9315
lemma ABS_TRIANGLE: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9316
   real_le (real_abs (real_add x y)) (real_add (real_abs x) (real_abs y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9317
  by (import hollight ABS_TRIANGLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9318
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9319
lemma ABS_POS: "ALL x::hollight.real. real_le (real_of_num (0::nat)) (real_abs x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9320
  by (import hollight ABS_POS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9321
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9322
lemma ABS_MUL: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9323
   real_abs (real_mul x y) = real_mul (real_abs x) (real_abs y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9324
  by (import hollight ABS_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9325
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9326
lemma ABS_LT_MUL2: "ALL (w::hollight.real) (x::hollight.real) (y::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9327
   z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9328
   real_lt (real_abs w) y & real_lt (real_abs x) z -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9329
   real_lt (real_abs (real_mul w x)) (real_mul y z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9330
  by (import hollight ABS_LT_MUL2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9331
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9332
lemma ABS_SUB: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9333
   real_abs (real_sub x y) = real_abs (real_sub y x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9334
  by (import hollight ABS_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9335
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9336
lemma ABS_NZ: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9337
   (x ~= real_of_num (0::nat)) = real_lt (real_of_num (0::nat)) (real_abs x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9338
  by (import hollight ABS_NZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9339
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9340
lemma ABS_INV: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9341
   x ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9342
   real_abs (real_inv x) = real_inv (real_abs x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9343
  by (import hollight ABS_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9344
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9345
lemma ABS_ABS: "ALL x::hollight.real. real_abs (real_abs x) = real_abs x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9346
  by (import hollight ABS_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9347
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9348
lemma ABS_LE: "ALL x::hollight.real. real_le x (real_abs x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9349
  by (import hollight ABS_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9350
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9351
lemma ABS_REFL: "ALL x::hollight.real. (real_abs x = x) = real_le (real_of_num (0::nat)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9352
  by (import hollight ABS_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9353
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9354
lemma ABS_N: "ALL n::nat. real_abs (real_of_num n) = real_of_num n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9355
  by (import hollight ABS_N)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9356
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9357
lemma ABS_BETWEEN: "ALL (x::hollight.real) (y::hollight.real) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9358
   (real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9359
    real_lt (real_sub x d) y & real_lt y (real_add x d)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9360
   real_lt (real_abs (real_sub y x)) d"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9361
  by (import hollight ABS_BETWEEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9362
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9363
lemma ABS_BOUND: "ALL (x::hollight.real) (y::hollight.real) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9364
   real_lt (real_abs (real_sub x y)) d --> real_lt y (real_add x d)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9365
  by (import hollight ABS_BOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9366
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9367
lemma ABS_STILLNZ: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9368
   real_lt (real_abs (real_sub x y)) (real_abs y) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9369
   x ~= real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9370
  by (import hollight ABS_STILLNZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9371
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9372
lemma ABS_CASES: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9373
   x = real_of_num (0::nat) | real_lt (real_of_num (0::nat)) (real_abs x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9374
  by (import hollight ABS_CASES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9375
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9376
lemma ABS_BETWEEN1: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9377
   real_lt x z & real_lt (real_abs (real_sub y x)) (real_sub z x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9378
   real_lt y z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9379
  by (import hollight ABS_BETWEEN1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9380
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9381
lemma ABS_SIGN: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9382
   real_lt (real_abs (real_sub x y)) y --> real_lt (real_of_num (0::nat)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9383
  by (import hollight ABS_SIGN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9384
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9385
lemma ABS_SIGN2: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9386
   real_lt (real_abs (real_sub x y)) (real_neg y) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9387
   real_lt x (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9388
  by (import hollight ABS_SIGN2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9389
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9390
lemma ABS_DIV: "ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9391
   y ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9392
   (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9393
       real_abs (real_div x y) = real_div (real_abs x) (real_abs y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9394
  by (import hollight ABS_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9395
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9396
lemma ABS_CIRCLE: "ALL (x::hollight.real) (y::hollight.real) h::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9397
   real_lt (real_abs h) (real_sub (real_abs y) (real_abs x)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9398
   real_lt (real_abs (real_add x h)) (real_abs y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9399
  by (import hollight ABS_CIRCLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9400
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9401
lemma REAL_SUB_ABS: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9402
   real_le (real_sub (real_abs x) (real_abs y)) (real_abs (real_sub x y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9403
  by (import hollight REAL_SUB_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9404
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9405
lemma ABS_SUB_ABS: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9406
   real_le (real_abs (real_sub (real_abs x) (real_abs y)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9407
    (real_abs (real_sub x y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9408
  by (import hollight ABS_SUB_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9409
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9410
lemma ABS_BETWEEN2: "ALL (x0::hollight.real) (x::hollight.real) (y0::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9411
   y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9412
   real_lt x0 y0 &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9413
   real_lt (real_abs (real_sub x x0))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9414
    (real_div (real_sub y0 x0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9415
      (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9416
   real_lt (real_abs (real_sub y y0))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9417
    (real_div (real_sub y0 x0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9418
      (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9419
   real_lt x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9420
  by (import hollight ABS_BETWEEN2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9421
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9422
lemma ABS_BOUNDS: "ALL (x::hollight.real) k::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9423
   real_le (real_abs x) k = (real_le (real_neg k) x & real_le x k)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9424
  by (import hollight ABS_BOUNDS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9425
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9426
lemma POW_0: "ALL n::nat. real_pow (real_of_num (0::nat)) (Suc n) = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9427
  by (import hollight POW_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9428
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9429
lemma POW_NZ: "ALL (c::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9430
   c ~= real_of_num (0::nat) --> real_pow c n ~= real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9431
  by (import hollight POW_NZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9432
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9433
lemma POW_INV: "ALL (c::hollight.real) x::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9434
   c ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9435
   real_inv (real_pow c x) = real_pow (real_inv c) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9436
  by (import hollight POW_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9437
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9438
lemma POW_ABS: "ALL (c::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9439
   real_pow (real_abs c) n = real_abs (real_pow c n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9440
  by (import hollight POW_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9441
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9442
lemma POW_PLUS1: "ALL (e::hollight.real) x::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9443
   real_lt (real_of_num (0::nat)) e -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9444
   real_le
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9445
    (real_add (real_of_num (NUMERAL_BIT1 (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9446
      (real_mul (real_of_num x) e))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9447
    (real_pow (real_add (real_of_num (NUMERAL_BIT1 (0::nat))) e) x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9448
  by (import hollight POW_PLUS1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9449
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9450
lemma POW_ADD: "ALL (c::hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9451
   real_pow c (m + n) = real_mul (real_pow c m) (real_pow c n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9452
  by (import hollight POW_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9453
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9454
lemma POW_1: "ALL x::hollight.real. real_pow x (NUMERAL_BIT1 (0::nat)) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9455
  by (import hollight POW_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9456
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9457
lemma POW_2: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9458
   real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = real_mul x x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9459
  by (import hollight POW_2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9460
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9461
lemma POW_POS: "ALL (x::hollight.real) xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9462
   real_le (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9463
   real_le (real_of_num (0::nat)) (real_pow x xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9464
  by (import hollight POW_POS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9465
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9466
lemma POW_LE: "ALL (n::nat) (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9467
   real_le (real_of_num (0::nat)) x & real_le x y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9468
   real_le (real_pow x n) (real_pow y n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9469
  by (import hollight POW_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9470
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9471
lemma POW_M1: "ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9472
   real_abs (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9473
   real_of_num (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9474
  by (import hollight POW_M1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9475
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9476
lemma POW_MUL: "ALL (n::nat) (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9477
   real_pow (real_mul x y) n = real_mul (real_pow x n) (real_pow y n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9478
  by (import hollight POW_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9479
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9480
lemma REAL_LE_SQUARE_POW: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9481
   real_le (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9482
    (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9483
  by (import hollight REAL_LE_SQUARE_POW)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9484
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9485
lemma ABS_POW2: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9486
   real_abs (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9487
   real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9488
  by (import hollight ABS_POW2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9489
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9490
lemma REAL_LE1_POW2: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9491
   real_le (real_of_num (NUMERAL_BIT1 (0::nat))) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9492
   real_le (real_of_num (NUMERAL_BIT1 (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9493
    (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9494
  by (import hollight REAL_LE1_POW2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9495
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9496
lemma REAL_LT1_POW2: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9497
   real_lt (real_of_num (NUMERAL_BIT1 (0::nat))) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9498
   real_lt (real_of_num (NUMERAL_BIT1 (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9499
    (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9500
  by (import hollight REAL_LT1_POW2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9501
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9502
lemma POW_POS_LT: "ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9503
   real_lt (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9504
   real_lt (real_of_num (0::nat)) (real_pow x (Suc n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9505
  by (import hollight POW_POS_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9506
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9507
lemma POW_2_LE1: "ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9508
   real_le (real_of_num (NUMERAL_BIT1 (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9509
    (real_pow (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9510
  by (import hollight POW_2_LE1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9511
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9512
lemma POW_2_LT: "ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9513
   real_lt (real_of_num n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9514
    (real_pow (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9515
  by (import hollight POW_2_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9516
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9517
lemma POW_MINUS1: "ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9518
   real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9519
    (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9520
   real_of_num (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9521
  by (import hollight POW_MINUS1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9522
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9523
lemma REAL_SUP_EXISTS: "ALL P::hollight.real => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9524
   Ex P &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9525
   (EX z::hollight.real. ALL x::hollight.real. P x --> real_lt x z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9526
   (EX s::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9527
       ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9528
          (EX x::hollight.real. P x & real_lt y x) = real_lt y s)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9529
  by (import hollight REAL_SUP_EXISTS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9530
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9531
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9532
  sup :: "(hollight.real => bool) => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9533
  "sup ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9534
%u::hollight.real => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9535
   SOME a::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9536
      (ALL x::hollight.real. IN x u --> real_le x a) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9537
      (ALL b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9538
          (ALL x::hollight.real. IN x u --> real_le x b) --> real_le a b)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9539
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9540
lemma DEF_sup: "sup =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9541
(%u::hollight.real => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9542
    SOME a::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9543
       (ALL x::hollight.real. IN x u --> real_le x a) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9544
       (ALL b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9545
           (ALL x::hollight.real. IN x u --> real_le x b) --> real_le a b))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9546
  by (import hollight DEF_sup)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9547
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9548
lemma sup: "sup (P::hollight.real => bool) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9549
(SOME s::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9550
    ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9551
       (EX x::hollight.real. P x & real_lt y x) = real_lt y s)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9552
  by (import hollight sup)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9553
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9554
lemma REAL_SUP: "ALL P::hollight.real => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9555
   Ex P &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9556
   (EX z::hollight.real. ALL x::hollight.real. P x --> real_lt x z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9557
   (ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9558
       (EX x::hollight.real. P x & real_lt y x) = real_lt y (sup P))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9559
  by (import hollight REAL_SUP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9560
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9561
lemma REAL_SUP_UBOUND: "ALL P::hollight.real => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9562
   Ex P &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9563
   (EX z::hollight.real. ALL x::hollight.real. P x --> real_lt x z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9564
   (ALL y::hollight.real. P y --> real_le y (sup P))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9565
  by (import hollight REAL_SUP_UBOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9566
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9567
lemma SETOK_LE_LT: "ALL P::hollight.real => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9568
   (Ex P &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9569
    (EX z::hollight.real. ALL x::hollight.real. P x --> real_le x z)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9570
   (Ex P &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9571
    (EX x::hollight.real. ALL xa::hollight.real. P xa --> real_lt xa x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9572
  by (import hollight SETOK_LE_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9573
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9574
lemma REAL_SUP_LE: "ALL P::hollight.real => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9575
   Ex P &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9576
   (EX z::hollight.real. ALL x::hollight.real. P x --> real_le x z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9577
   (ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9578
       (EX x::hollight.real. P x & real_lt y x) = real_lt y (sup P))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9579
  by (import hollight REAL_SUP_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9580
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9581
lemma REAL_SUP_UBOUND_LE: "ALL P::hollight.real => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9582
   Ex P &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9583
   (EX z::hollight.real. ALL x::hollight.real. P x --> real_le x z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9584
   (ALL y::hollight.real. P y --> real_le y (sup P))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9585
  by (import hollight REAL_SUP_UBOUND_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9586
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9587
lemma REAL_ARCH_SIMPLE: "ALL x::hollight.real. EX n::nat. real_le x (real_of_num n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9588
  by (import hollight REAL_ARCH_SIMPLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9589
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9590
lemma REAL_ARCH: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9591
   real_lt (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9592
   (ALL y::hollight.real. EX n::nat. real_lt y (real_mul (real_of_num n) x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9593
  by (import hollight REAL_ARCH)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9594
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9595
lemma REAL_ARCH_LEAST: "ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9596
   real_lt (real_of_num (0::nat)) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9597
   (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9598
       real_le (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9599
       (EX n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9600
           real_le (real_mul (real_of_num n) y) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9601
           real_lt x (real_mul (real_of_num (Suc n)) y)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9602
  by (import hollight REAL_ARCH_LEAST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9603
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9604
lemma sum_EXISTS: "EX x::nat * nat => (nat => hollight.real) => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9605
   (ALL (f::nat => hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9606
       x (n, 0::nat) f = real_of_num (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9607
   (ALL (f::nat => hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9608
       x (n, Suc m) f = real_add (x (n, m) f) (f (n + m)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9609
  by (import hollight sum_EXISTS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9610
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9611
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9612
  psum :: "nat * nat => (nat => hollight.real) => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9613
  "psum ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9614
SOME sum::nat * nat => (nat => hollight.real) => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9615
   (ALL (f::nat => hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9616
       sum (n, 0::nat) f = real_of_num (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9617
   (ALL (f::nat => hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9618
       sum (n, Suc m) f = real_add (sum (n, m) f) (f (n + m)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9619
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9620
lemma DEF_psum: "psum =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9621
(SOME sum::nat * nat => (nat => hollight.real) => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9622
    (ALL (f::nat => hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9623
        sum (n, 0::nat) f = real_of_num (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9624
    (ALL (f::nat => hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9625
        sum (n, Suc m) f = real_add (sum (n, m) f) (f (n + m))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9626
  by (import hollight DEF_psum)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9627
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9628
lemma sum: "psum (n::nat, 0::nat) (f::nat => hollight.real) = real_of_num (0::nat) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9629
psum (n, Suc (m::nat)) f = real_add (psum (n, m) f) (f (n + m))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9630
  by (import hollight sum)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9631
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9632
lemma PSUM_SUM: "ALL (f::nat => hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9633
   psum (m, n) f =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9634
   hollight.sum
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9635
    (GSPEC (%u::nat. EX i::nat. SETSPEC u (<= m i & < i (m + n)) i)) f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9636
  by (import hollight PSUM_SUM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9637
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9638
lemma PSUM_SUM_NUMSEG: "ALL (f::nat => hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9639
   ~ (m = (0::nat) & n = (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9640
   psum (m, n) f = hollight.sum (dotdot m (m + n - NUMERAL_BIT1 (0::nat))) f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9641
  by (import hollight PSUM_SUM_NUMSEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9642
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9643
lemma SUM_TWO: "ALL (f::nat => hollight.real) (n::nat) p::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9644
   real_add (psum (0::nat, n) f) (psum (n, p) f) = psum (0::nat, n + p) f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9645
  by (import hollight SUM_TWO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9646
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9647
lemma SUM_DIFF: "ALL (f::nat => hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9648
   psum (m, n) f = real_sub (psum (0::nat, m + n) f) (psum (0::nat, m) f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9649
  by (import hollight SUM_DIFF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9650
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9651
lemma ABS_SUM: "ALL (f::nat => hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9652
   real_le (real_abs (psum (m, n) f))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9653
    (psum (m, n) (%n::nat. real_abs (f n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9654
  by (import hollight ABS_SUM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9655
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9656
lemma SUM_LE: "ALL (f::nat => hollight.real) (g::nat => hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9657
   (ALL r::nat. <= m r & < r (n + m) --> real_le (f r) (g r)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9658
   real_le (psum (m, n) f) (psum (m, n) g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9659
  by (import hollight SUM_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9660
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9661
lemma SUM_EQ: "ALL (f::nat => hollight.real) (g::nat => hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9662
   (ALL r::nat. <= m r & < r (n + m) --> f r = g r) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9663
   psum (m, n) f = psum (m, n) g"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9664
  by (import hollight SUM_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9665
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9666
lemma SUM_POS: "ALL f::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9667
   (ALL n::nat. real_le (real_of_num (0::nat)) (f n)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9668
   (ALL (m::nat) n::nat. real_le (real_of_num (0::nat)) (psum (m, n) f))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9669
  by (import hollight SUM_POS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9670
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9671
lemma SUM_POS_GEN: "ALL (f::nat => hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9672
   (ALL n::nat. <= m n --> real_le (real_of_num (0::nat)) (f n)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9673
   real_le (real_of_num (0::nat)) (psum (m, n) f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9674
  by (import hollight SUM_POS_GEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9675
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9676
lemma SUM_ABS: "ALL (f::nat => hollight.real) (m::nat) x::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9677
   real_abs (psum (m, x) (%m::nat. real_abs (f m))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9678
   psum (m, x) (%m::nat. real_abs (f m))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9679
  by (import hollight SUM_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9680
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9681
lemma SUM_ABS_LE: "ALL (f::nat => hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9682
   real_le (real_abs (psum (m, n) f))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9683
    (psum (m, n) (%n::nat. real_abs (f n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9684
  by (import hollight SUM_ABS_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9685
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9686
lemma SUM_ZERO: "ALL (f::nat => hollight.real) N::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9687
   (ALL n::nat. >= n N --> f n = real_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9688
   (ALL (m::nat) n::nat. >= m N --> psum (m, n) f = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9689
  by (import hollight SUM_ZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9690
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9691
lemma SUM_ADD: "ALL (f::nat => hollight.real) (g::nat => hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9692
   psum (m, n) (%n::nat. real_add (f n) (g n)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9693
   real_add (psum (m, n) f) (psum (m, n) g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9694
  by (import hollight SUM_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9695
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9696
lemma SUM_CMUL: "ALL (f::nat => hollight.real) (c::hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9697
   psum (m, n) (%n::nat. real_mul c (f n)) = real_mul c (psum (m, n) f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9698
  by (import hollight SUM_CMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9699
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9700
lemma SUM_NEG: "ALL (f::nat => hollight.real) (n::nat) d::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9701
   psum (n, d) (%n::nat. real_neg (f n)) = real_neg (psum (n, d) f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9702
  by (import hollight SUM_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9703
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9704
lemma SUM_SUB: "ALL (f::nat => hollight.real) (g::nat => hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9705
   psum (m, n) (%x::nat. real_sub (f x) (g x)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9706
   real_sub (psum (m, n) f) (psum (m, n) g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9707
  by (import hollight SUM_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9708
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9709
lemma SUM_SUBST: "ALL (f::nat => hollight.real) (g::nat => hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9710
   (ALL p::nat. <= m p & < p (m + n) --> f p = g p) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9711
   psum (m, n) f = psum (m, n) g"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9712
  by (import hollight SUM_SUBST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9713
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9714
lemma SUM_NSUB: "ALL (n::nat) (f::nat => hollight.real) c::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9715
   real_sub (psum (0::nat, n) f) (real_mul (real_of_num n) c) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9716
   psum (0::nat, n) (%p::nat. real_sub (f p) c)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9717
  by (import hollight SUM_NSUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9718
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9719
lemma SUM_BOUND: "ALL (f::nat => hollight.real) (K::hollight.real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9720
   (ALL p::nat. <= m p & < p (m + n) --> real_le (f p) K) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9721
   real_le (psum (m, n) f) (real_mul (real_of_num n) K)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9722
  by (import hollight SUM_BOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9723
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9724
lemma SUM_GROUP: "ALL (n::nat) (k::nat) f::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9725
   psum (0::nat, n) (%m::nat. psum (m * k, k) f) = psum (0::nat, n * k) f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9726
  by (import hollight SUM_GROUP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9727
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9728
lemma SUM_1: "ALL (f::nat => hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9729
   psum (n, NUMERAL_BIT1 (0::nat)) f = f n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9730
  by (import hollight SUM_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9731
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9732
lemma SUM_2: "ALL (f::nat => hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9733
   psum (n, NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) f =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9734
   real_add (f n) (f (n + NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9735
  by (import hollight SUM_2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9736
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9737
lemma SUM_OFFSET: "ALL (f::nat => hollight.real) (n::nat) k::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9738
   psum (0::nat, n) (%m::nat. f (m + k)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9739
   real_sub (psum (0::nat, n + k) f) (psum (0::nat, k) f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9740
  by (import hollight SUM_OFFSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9741
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9742
lemma SUM_REINDEX: "ALL (f::nat => hollight.real) (m::nat) (k::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9743
   psum (m + k, n) f = psum (m, n) (%r::nat. f (r + k))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9744
  by (import hollight SUM_REINDEX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9745
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9746
lemma SUM_0: "ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9747
   psum (m, n) (%r::nat. real_of_num (0::nat)) = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9748
  by (import hollight SUM_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9749
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9750
lemma SUM_CANCEL: "ALL (f::nat => hollight.real) (n::nat) d::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9751
   psum (n, d) (%n::nat. real_sub (f (Suc n)) (f n)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9752
   real_sub (f (n + d)) (f n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9753
  by (import hollight SUM_CANCEL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9754
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9755
lemma SUM_HORNER: "ALL (f::nat => hollight.real) (n::nat) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9756
   psum (0::nat, Suc n) (%i::nat. real_mul (f i) (real_pow x i)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9757
   real_add (f (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9758
    (real_mul x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9759
      (psum (0::nat, n) (%i::nat. real_mul (f (Suc i)) (real_pow x i))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9760
  by (import hollight SUM_HORNER)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9761
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9762
lemma SUM_CONST: "ALL (c::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9763
   psum (0::nat, n) (%m::nat. c) = real_mul (real_of_num n) c"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9764
  by (import hollight SUM_CONST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9765
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9766
lemma SUM_SPLIT: "ALL (f::nat => hollight.real) (n::nat) p::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9767
   real_add (psum (m::nat, n) f) (psum (m + n, p) f) = psum (m, n + p) f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9768
  by (import hollight SUM_SPLIT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9769
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9770
lemma SUM_SWAP: "ALL (f::nat => nat => hollight.real) (m1::nat) (n1::nat) (m2::nat) n2::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9771
   psum (m1, n1) (%a::nat. psum (m2, n2) (f a)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9772
   psum (m2, n2) (%b::nat. psum (m1, n1) (%a::nat. f a b))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9773
  by (import hollight SUM_SWAP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9774
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9775
lemma SUM_EQ_0: "(ALL r::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9776
    <= (m::nat) r & < r (m + (n::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9777
    (f::nat => hollight.real) r = real_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9778
psum (m, n) f = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9779
  by (import hollight SUM_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9780
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9781
lemma SUM_MORETERMS_EQ: "ALL (m::nat) (n::nat) p::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9782
   <= n p &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9783
   (ALL r::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9784
       <= (m + n) r & < r (m + p) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9785
       (f::nat => hollight.real) r = real_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9786
   psum (m, p) f = psum (m, n) f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9787
  by (import hollight SUM_MORETERMS_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9788
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9789
lemma SUM_DIFFERENCES_EQ: "ALL (x::nat) (xa::nat) xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9790
   <= xa xb &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9791
   (ALL r::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9792
       <= (x + xa) r & < r (x + xb) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9793
       (f::nat => hollight.real) r = (g::nat => hollight.real) r) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9794
   real_sub (psum (x, xb) f) (psum (x, xa) f) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9795
   real_sub (psum (x, xb) g) (psum (x, xa) g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9796
  by (import hollight SUM_DIFFERENCES_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9797
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9798
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9799
  re_Union :: "(('A::type => bool) => bool) => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9800
  "re_Union ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9801
%(u::('A::type => bool) => bool) x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9802
   EX s::'A::type => bool. u s & s x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9803
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9804
lemma DEF_re_Union: "re_Union =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9805
(%(u::('A::type => bool) => bool) x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9806
    EX s::'A::type => bool. u s & s x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9807
  by (import hollight DEF_re_Union)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9808
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9809
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9810
  re_union :: "('A::type => bool) => ('A::type => bool) => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9811
  "re_union ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9812
%(u::'A::type => bool) (ua::'A::type => bool) x::'A::type. u x | ua x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9813
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9814
lemma DEF_re_union: "re_union =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9815
(%(u::'A::type => bool) (ua::'A::type => bool) x::'A::type. u x | ua x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9816
  by (import hollight DEF_re_union)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9817
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9818
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9819
  re_intersect :: "('A::type => bool) => ('A::type => bool) => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9820
  "re_intersect ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9821
%(u::'A::type => bool) (ua::'A::type => bool) x::'A::type. u x & ua x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9822
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9823
lemma DEF_re_intersect: "re_intersect =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9824
(%(u::'A::type => bool) (ua::'A::type => bool) x::'A::type. u x & ua x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9825
  by (import hollight DEF_re_intersect)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9826
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9827
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9828
  re_null :: "'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9829
  "re_null == %x::'A::type. False"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9830
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9831
lemma DEF_re_null: "re_null = (%x::'A::type. False)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9832
  by (import hollight DEF_re_null)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9833
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9834
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9835
  re_universe :: "'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9836
  "re_universe == %x::'A::type. True"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9837
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9838
lemma DEF_re_universe: "re_universe = (%x::'A::type. True)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9839
  by (import hollight DEF_re_universe)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9840
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9841
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9842
  re_subset :: "('A::type => bool) => ('A::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9843
  "re_subset ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9844
%(u::'A::type => bool) ua::'A::type => bool. ALL x::'A::type. u x --> ua x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9845
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9846
lemma DEF_re_subset: "re_subset =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9847
(%(u::'A::type => bool) ua::'A::type => bool. ALL x::'A::type. u x --> ua x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9848
  by (import hollight DEF_re_subset)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9849
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9850
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9851
  re_compl :: "('A::type => bool) => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9852
  "re_compl == %(u::'A::type => bool) x::'A::type. ~ u x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9853
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9854
lemma DEF_re_compl: "re_compl = (%(u::'A::type => bool) x::'A::type. ~ u x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9855
  by (import hollight DEF_re_compl)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9856
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9857
lemma SUBSETA_REFL: "ALL S::'A::type => bool. re_subset S S"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9858
  by (import hollight SUBSETA_REFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9859
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9860
lemma COMPL_MEM: "ALL (S::'A::type => bool) x::'A::type. S x = (~ re_compl S x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9861
  by (import hollight COMPL_MEM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9862
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9863
lemma SUBSETA_ANTISYM: "ALL (P::'A::type => bool) Q::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9864
   (re_subset P Q & re_subset Q P) = (P = Q)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9865
  by (import hollight SUBSETA_ANTISYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9866
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9867
lemma SUBSETA_TRANS: "ALL (P::'A::type => bool) (Q::'A::type => bool) R::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9868
   re_subset P Q & re_subset Q R --> re_subset P R"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9869
  by (import hollight SUBSETA_TRANS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9870
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9871
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9872
  istopology :: "(('A::type => bool) => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9873
  "istopology ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9874
%u::('A::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9875
   u re_null &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9876
   u re_universe &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9877
   (ALL (a::'A::type => bool) b::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9878
       u a & u b --> u (re_intersect a b)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9879
   (ALL P::('A::type => bool) => bool. re_subset P u --> u (re_Union P))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9880
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9881
lemma DEF_istopology: "istopology =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9882
(%u::('A::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9883
    u re_null &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9884
    u re_universe &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9885
    (ALL (a::'A::type => bool) b::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9886
        u a & u b --> u (re_intersect a b)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9887
    (ALL P::('A::type => bool) => bool. re_subset P u --> u (re_Union P)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9888
  by (import hollight DEF_istopology)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9889
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9890
typedef (open) ('A) topology = "(Collect::((('A::type => bool) => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9891
          => (('A::type => bool) => bool) set)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9892
 (istopology::(('A::type => bool) => bool) => bool)"  morphisms "open" "topology"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9893
  apply (rule light_ex_imp_nonempty[where t="(Eps::((('A::type => bool) => bool) => bool) => ('A::type => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9894
 (istopology::(('A::type => bool) => bool) => bool)"])
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9895
  by (import hollight TYDEF_topology)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9896
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9897
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9898
  "open" :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9899
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9900
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9901
  topology :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9902
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9903
lemmas "TYDEF_topology_@intern" = typedef_hol2hollight 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9904
  [where a="a :: 'A::type topology" and r=r ,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9905
   OF type_definition_topology]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9906
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9907
lemma TOPOLOGY: "ALL L::'A::type topology.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9908
   open L re_null &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9909
   open L re_universe &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9910
   (ALL (a::'A::type => bool) b::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9911
       open L a & open L b --> open L (re_intersect a b)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9912
   (ALL P::('A::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9913
       re_subset P (open L) --> open L (re_Union P))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9914
  by (import hollight TOPOLOGY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9915
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9916
lemma TOPOLOGY_UNION: "ALL (x::'A::type topology) xa::('A::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9917
   re_subset xa (open x) --> open x (re_Union xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9918
  by (import hollight TOPOLOGY_UNION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9919
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9920
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9921
  neigh :: "'A::type topology => ('A::type => bool) * 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9922
  "neigh ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9923
%(u::'A::type topology) ua::('A::type => bool) * 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9924
   EX P::'A::type => bool. open u P & re_subset P (fst ua) & P (snd ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9925
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9926
lemma DEF_neigh: "neigh =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9927
(%(u::'A::type topology) ua::('A::type => bool) * 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9928
    EX P::'A::type => bool. open u P & re_subset P (fst ua) & P (snd ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9929
  by (import hollight DEF_neigh)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9930
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9931
lemma OPEN_OWN_NEIGH: "ALL (S::'A::type => bool) (top::'A::type topology) x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9932
   open top S & S x --> neigh top (S, x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9933
  by (import hollight OPEN_OWN_NEIGH)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9934
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9935
lemma OPEN_UNOPEN: "ALL (S::'A::type => bool) top::'A::type topology.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9936
   open top S =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9937
   (re_Union (%P::'A::type => bool. open top P & re_subset P S) = S)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9938
  by (import hollight OPEN_UNOPEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9939
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9940
lemma OPEN_SUBOPEN: "ALL (S::'A::type => bool) top::'A::type topology.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9941
   open top S =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9942
   (ALL x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9943
       S x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9944
       (EX xa::'A::type => bool. xa x & open top xa & re_subset xa S))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9945
  by (import hollight OPEN_SUBOPEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9946
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9947
lemma OPEN_NEIGH: "ALL (S::'A::type => bool) top::'A::type topology.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9948
   open top S =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9949
   (ALL x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9950
       S x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9951
       (EX xa::'A::type => bool. neigh top (xa, x) & re_subset xa S))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9952
  by (import hollight OPEN_NEIGH)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9953
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9954
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9955
  closed :: "'A::type topology => ('A::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9956
  "closed == %(u::'A::type topology) ua::'A::type => bool. open u (re_compl ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9957
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9958
lemma DEF_closed: "closed =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9959
(%(u::'A::type topology) ua::'A::type => bool. open u (re_compl ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9960
  by (import hollight DEF_closed)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9961
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9962
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9963
  limpt :: "'A::type topology => 'A::type => ('A::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9964
  "limpt ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9965
%(u::'A::type topology) (ua::'A::type) ub::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9966
   ALL N::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9967
      neigh u (N, ua) --> (EX y::'A::type. ua ~= y & ub y & N y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9968
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9969
lemma DEF_limpt: "limpt =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9970
(%(u::'A::type topology) (ua::'A::type) ub::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9971
    ALL N::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9972
       neigh u (N, ua) --> (EX y::'A::type. ua ~= y & ub y & N y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9973
  by (import hollight DEF_limpt)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9974
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9975
lemma CLOSED_LIMPT: "ALL (top::'A::type topology) S::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9976
   closed top S = (ALL x::'A::type. limpt top x S --> S x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9977
  by (import hollight CLOSED_LIMPT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9978
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9979
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9980
  ismet :: "('A::type * 'A::type => hollight.real) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9981
  "ismet ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9982
%u::'A::type * 'A::type => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9983
   (ALL (x::'A::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9984
       (u (x, y) = real_of_num (0::nat)) = (x = y)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9985
   (ALL (x::'A::type) (y::'A::type) z::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9986
       real_le (u (y, z)) (real_add (u (x, y)) (u (x, z))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9987
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9988
lemma DEF_ismet: "ismet =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9989
(%u::'A::type * 'A::type => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9990
    (ALL (x::'A::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9991
        (u (x, y) = real_of_num (0::nat)) = (x = y)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9992
    (ALL (x::'A::type) (y::'A::type) z::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9993
        real_le (u (y, z)) (real_add (u (x, y)) (u (x, z)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9994
  by (import hollight DEF_ismet)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9995
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9996
typedef (open) ('A) metric = "(Collect::(('A::type * 'A::type => hollight.real) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9997
          => ('A::type * 'A::type => hollight.real) set)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9998
 (ismet::('A::type * 'A::type => hollight.real) => bool)"  morphisms "mdist" "metric"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
  9999
  apply (rule light_ex_imp_nonempty[where t="(Eps::(('A::type * 'A::type => hollight.real) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10000
      => 'A::type * 'A::type => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10001
 (ismet::('A::type * 'A::type => hollight.real) => bool)"])
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10002
  by (import hollight TYDEF_metric)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10003
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10004
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10005
  mdist :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10006
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10007
syntax
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10008
  metric :: _ 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10009
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10010
lemmas "TYDEF_metric_@intern" = typedef_hol2hollight 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10011
  [where a="a :: 'A::type metric" and r=r ,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10012
   OF type_definition_metric]
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10013
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10014
lemma METRIC_ISMET: "ALL m::'A::type metric. ismet (mdist m)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10015
  by (import hollight METRIC_ISMET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10016
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10017
lemma METRIC_ZERO: "ALL (m::'A::type metric) (x::'A::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10018
   (mdist m (x, y) = real_of_num (0::nat)) = (x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10019
  by (import hollight METRIC_ZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10020
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10021
lemma METRIC_SAME: "ALL (m::'A::type metric) x::'A::type. mdist m (x, x) = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10022
  by (import hollight METRIC_SAME)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10023
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10024
lemma METRIC_POS: "ALL (m::'A::type metric) (x::'A::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10025
   real_le (real_of_num (0::nat)) (mdist m (x, y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10026
  by (import hollight METRIC_POS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10027
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10028
lemma METRIC_SYM: "ALL (m::'A::type metric) (x::'A::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10029
   mdist m (x, y) = mdist m (y, x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10030
  by (import hollight METRIC_SYM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10031
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10032
lemma METRIC_TRIANGLE: "ALL (m::'A::type metric) (x::'A::type) (y::'A::type) z::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10033
   real_le (mdist m (x, z)) (real_add (mdist m (x, y)) (mdist m (y, z)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10034
  by (import hollight METRIC_TRIANGLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10035
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10036
lemma METRIC_NZ: "ALL (m::'A::type metric) (x::'A::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10037
   x ~= y --> real_lt (real_of_num (0::nat)) (mdist m (x, y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10038
  by (import hollight METRIC_NZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10039
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10040
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10041
  mtop :: "'A::type metric => 'A::type topology" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10042
  "mtop ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10043
%u::'A::type metric.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10044
   topology
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10045
    (%S::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10046
        ALL x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10047
           S x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10048
           (EX e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10049
               real_lt (real_of_num (0::nat)) e &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10050
               (ALL y::'A::type. real_lt (mdist u (x, y)) e --> S y)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10051
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10052
lemma DEF_mtop: "mtop =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10053
(%u::'A::type metric.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10054
    topology
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10055
     (%S::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10056
         ALL x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10057
            S x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10058
            (EX e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10059
                real_lt (real_of_num (0::nat)) e &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10060
                (ALL y::'A::type. real_lt (mdist u (x, y)) e --> S y))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10061
  by (import hollight DEF_mtop)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10062
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10063
lemma mtop_istopology: "ALL m::'A::type metric.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10064
   istopology
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10065
    (%S::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10066
        ALL x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10067
           S x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10068
           (EX e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10069
               real_lt (real_of_num (0::nat)) e &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10070
               (ALL y::'A::type. real_lt (mdist m (x, y)) e --> S y)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10071
  by (import hollight mtop_istopology)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10072
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10073
lemma MTOP_OPEN: "ALL m::'A::type metric.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10074
   open (mtop m) (S::'A::type => bool) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10075
   (ALL x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10076
       S x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10077
       (EX e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10078
           real_lt (real_of_num (0::nat)) e &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10079
           (ALL y::'A::type. real_lt (mdist m (x, y)) e --> S y)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10080
  by (import hollight MTOP_OPEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10081
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10082
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10083
  ball :: "'A::type metric => 'A::type * hollight.real => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10084
  "ball ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10085
%(u::'A::type metric) (ua::'A::type * hollight.real) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10086
   real_lt (mdist u (fst ua, y)) (snd ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10087
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10088
lemma DEF_ball: "ball =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10089
(%(u::'A::type metric) (ua::'A::type * hollight.real) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10090
    real_lt (mdist u (fst ua, y)) (snd ua))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10091
  by (import hollight DEF_ball)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10092
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10093
lemma BALL_OPEN: "ALL (m::'A::type metric) (x::'A::type) e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10094
   real_lt (real_of_num (0::nat)) e --> open (mtop m) (ball m (x, e))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10095
  by (import hollight BALL_OPEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10096
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10097
lemma BALL_NEIGH: "ALL (m::'A::type metric) (x::'A::type) e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10098
   real_lt (real_of_num (0::nat)) e --> neigh (mtop m) (ball m (x, e), x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10099
  by (import hollight BALL_NEIGH)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10100
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10101
lemma MTOP_LIMPT: "ALL (m::'A::type metric) (x::'A::type) S::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10102
   limpt (mtop m) x S =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10103
   (ALL e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10104
       real_lt (real_of_num (0::nat)) e -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10105
       (EX y::'A::type. x ~= y & S y & real_lt (mdist m (x, y)) e))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10106
  by (import hollight MTOP_LIMPT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10107
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10108
lemma ISMET_R1: "ismet
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10109
 (GABS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10110
   (%f::hollight.real * hollight.real => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10111
       ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10112
          GEQ (f (x, y)) (real_abs (real_sub y x))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10113
  by (import hollight ISMET_R1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10114
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10115
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10116
  mr1 :: "hollight.real metric" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10117
  "mr1 ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10118
metric
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10119
 (GABS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10120
   (%f::hollight.real * hollight.real => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10121
       ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10122
          GEQ (f (x, y)) (real_abs (real_sub y x))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10123
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10124
lemma DEF_mr1: "mr1 =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10125
metric
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10126
 (GABS
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10127
   (%f::hollight.real * hollight.real => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10128
       ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10129
          GEQ (f (x, y)) (real_abs (real_sub y x))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10130
  by (import hollight DEF_mr1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10131
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10132
lemma MR1_DEF: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10133
   mdist mr1 (x, y) = real_abs (real_sub y x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10134
  by (import hollight MR1_DEF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10135
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10136
lemma MR1_ADD: "ALL (x::hollight.real) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10137
   mdist mr1 (x, real_add x d) = real_abs d"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10138
  by (import hollight MR1_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10139
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10140
lemma MR1_SUB: "ALL (x::hollight.real) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10141
   mdist mr1 (x, real_sub x d) = real_abs d"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10142
  by (import hollight MR1_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10143
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10144
lemma MR1_ADD_LE: "ALL (x::hollight.real) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10145
   real_le (real_of_num (0::nat)) d --> mdist mr1 (x, real_add x d) = d"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10146
  by (import hollight MR1_ADD_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10147
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10148
lemma MR1_SUB_LE: "ALL (x::hollight.real) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10149
   real_le (real_of_num (0::nat)) d --> mdist mr1 (x, real_sub x d) = d"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10150
  by (import hollight MR1_SUB_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10151
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10152
lemma MR1_ADD_LT: "ALL (x::hollight.real) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10153
   real_lt (real_of_num (0::nat)) d --> mdist mr1 (x, real_add x d) = d"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10154
  by (import hollight MR1_ADD_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10155
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10156
lemma MR1_SUB_LT: "ALL (x::hollight.real) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10157
   real_lt (real_of_num (0::nat)) d --> mdist mr1 (x, real_sub x d) = d"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10158
  by (import hollight MR1_SUB_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10159
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10160
lemma MR1_BETWEEN1: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10161
   real_lt x z & real_lt (mdist mr1 (x, y)) (real_sub z x) --> real_lt y z"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10162
  by (import hollight MR1_BETWEEN1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10163
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10164
lemma MR1_LIMPT: "ALL x::hollight.real. limpt (mtop mr1) x re_universe"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10165
  by (import hollight MR1_LIMPT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10166
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10167
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10168
  dorder :: "('A::type => 'A::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10169
  "dorder ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10170
%u::'A::type => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10171
   ALL (x::'A::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10172
      u x x & u y y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10173
      (EX z::'A::type. u z z & (ALL w::'A::type. u w z --> u w x & u w y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10174
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10175
lemma DEF_dorder: "dorder =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10176
(%u::'A::type => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10177
    ALL (x::'A::type) y::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10178
       u x x & u y y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10179
       (EX z::'A::type. u z z & (ALL w::'A::type. u w z --> u w x & u w y)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10180
  by (import hollight DEF_dorder)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10181
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10182
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10183
  tends :: "('B::type => 'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10184
=> 'A::type => 'A::type topology * ('B::type => 'B::type => bool) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10185
  "tends ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10186
%(u::'B::type => 'A::type) (ua::'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10187
   ub::'A::type topology * ('B::type => 'B::type => bool).
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10188
   ALL N::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10189
      neigh (fst ub) (N, ua) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10190
      (EX n::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10191
          snd ub n n & (ALL m::'B::type. snd ub m n --> N (u m)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10192
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10193
lemma DEF_tends: "tends =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10194
(%(u::'B::type => 'A::type) (ua::'A::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10195
    ub::'A::type topology * ('B::type => 'B::type => bool).
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10196
    ALL N::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10197
       neigh (fst ub) (N, ua) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10198
       (EX n::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10199
           snd ub n n & (ALL m::'B::type. snd ub m n --> N (u m))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10200
  by (import hollight DEF_tends)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10201
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10202
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10203
  bounded :: "'A::type metric * ('B::type => 'B::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10204
=> ('B::type => 'A::type) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10205
  "bounded ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10206
%(u::'A::type metric * ('B::type => 'B::type => bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10207
   ua::'B::type => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10208
   EX (k::hollight.real) (x::'A::type) N::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10209
      snd u N N &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10210
      (ALL n::'B::type. snd u n N --> real_lt (mdist (fst u) (ua n, x)) k)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10211
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10212
lemma DEF_bounded: "bounded =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10213
(%(u::'A::type metric * ('B::type => 'B::type => bool))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10214
    ua::'B::type => 'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10215
    EX (k::hollight.real) (x::'A::type) N::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10216
       snd u N N &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10217
       (ALL n::'B::type. snd u n N --> real_lt (mdist (fst u) (ua n, x)) k))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10218
  by (import hollight DEF_bounded)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10219
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10220
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10221
  tendsto :: "'A::type metric * 'A::type => 'A::type => 'A::type => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10222
  "tendsto ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10223
%(u::'A::type metric * 'A::type) (ua::'A::type) ub::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10224
   real_lt (real_of_num (0::nat)) (mdist (fst u) (snd u, ua)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10225
   real_le (mdist (fst u) (snd u, ua)) (mdist (fst u) (snd u, ub))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10226
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10227
lemma DEF_tendsto: "tendsto =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10228
(%(u::'A::type metric * 'A::type) (ua::'A::type) ub::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10229
    real_lt (real_of_num (0::nat)) (mdist (fst u) (snd u, ua)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10230
    real_le (mdist (fst u) (snd u, ua)) (mdist (fst u) (snd u, ub)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10231
  by (import hollight DEF_tendsto)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10232
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10233
lemma DORDER_LEMMA: "ALL g::'A::type => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10234
   dorder g -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10235
   (ALL (P::'A::type => bool) Q::'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10236
       (EX n::'A::type. g n n & (ALL m::'A::type. g m n --> P m)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10237
       (EX n::'A::type. g n n & (ALL m::'A::type. g m n --> Q m)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10238
       (EX n::'A::type. g n n & (ALL m::'A::type. g m n --> P m & Q m)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10239
  by (import hollight DORDER_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10240
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10241
lemma DORDER_NGE: "dorder >="
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10242
  by (import hollight DORDER_NGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10243
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10244
lemma DORDER_TENDSTO: "ALL (m::'A::type metric) x::'A::type. dorder (tendsto (m, x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10245
  by (import hollight DORDER_TENDSTO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10246
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10247
lemma MTOP_TENDS: "ALL (d::'A::type metric) (g::'B::type => 'B::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10248
   (x::'B::type => 'A::type) x0::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10249
   tends x x0 (mtop d, g) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10250
   (ALL e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10251
       real_lt (real_of_num (0::nat)) e -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10252
       (EX n::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10253
           g n n &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10254
           (ALL m::'B::type. g m n --> real_lt (mdist d (x m, x0)) e)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10255
  by (import hollight MTOP_TENDS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10256
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10257
lemma MTOP_TENDS_UNIQ: "ALL (g::'B::type => 'B::type => bool) d::'A::type metric.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10258
   dorder g -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10259
   tends (x::'B::type => 'A::type) (x0::'A::type) (mtop d, g) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10260
   tends x (x1::'A::type) (mtop d, g) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10261
   x0 = x1"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10262
  by (import hollight MTOP_TENDS_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10263
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10264
lemma SEQ_TENDS: "ALL (d::'A::type metric) (x::nat => 'A::type) x0::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10265
   tends x x0 (mtop d, >=) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10266
   (ALL xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10267
       real_lt (real_of_num (0::nat)) xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10268
       (EX xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10269
           ALL xc::nat. >= xc xb --> real_lt (mdist d (x xc, x0)) xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10270
  by (import hollight SEQ_TENDS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10271
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10272
lemma LIM_TENDS: "ALL (m1::'A::type metric) (m2::'B::type metric) (f::'A::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10273
   (x0::'A::type) y0::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10274
   limpt (mtop m1) x0 re_universe -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10275
   tends f y0 (mtop m2, tendsto (m1, x0)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10276
   (ALL e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10277
       real_lt (real_of_num (0::nat)) e -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10278
       (EX d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10279
           real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10280
           (ALL x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10281
               real_lt (real_of_num (0::nat)) (mdist m1 (x, x0)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10282
               real_le (mdist m1 (x, x0)) d -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10283
               real_lt (mdist m2 (f x, y0)) e)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10284
  by (import hollight LIM_TENDS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10285
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10286
lemma LIM_TENDS2: "ALL (m1::'A::type metric) (m2::'B::type metric) (f::'A::type => 'B::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10287
   (x0::'A::type) y0::'B::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10288
   limpt (mtop m1) x0 re_universe -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10289
   tends f y0 (mtop m2, tendsto (m1, x0)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10290
   (ALL e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10291
       real_lt (real_of_num (0::nat)) e -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10292
       (EX d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10293
           real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10294
           (ALL x::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10295
               real_lt (real_of_num (0::nat)) (mdist m1 (x, x0)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10296
               real_lt (mdist m1 (x, x0)) d -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10297
               real_lt (mdist m2 (f x, y0)) e)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10298
  by (import hollight LIM_TENDS2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10299
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10300
lemma MR1_BOUNDED: "ALL (g::'A::type => 'A::type => bool) f::'A::type => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10301
   bounded (mr1, g) f =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10302
   (EX (k::hollight.real) N::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10303
       g N N & (ALL n::'A::type. g n N --> real_lt (real_abs (f n)) k))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10304
  by (import hollight MR1_BOUNDED)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10305
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10306
lemma NET_NULL: "ALL (g::'A::type => 'A::type => bool) (x::'A::type => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10307
   x0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10308
   tends x x0 (mtop mr1, g) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10309
   tends (%n::'A::type. real_sub (x n) x0) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10310
    (mtop mr1, g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10311
  by (import hollight NET_NULL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10312
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10313
lemma NET_CONV_BOUNDED: "ALL (g::'A::type => 'A::type => bool) (x::'A::type => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10314
   x0::hollight.real. tends x x0 (mtop mr1, g) --> bounded (mr1, g) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10315
  by (import hollight NET_CONV_BOUNDED)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10316
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10317
lemma NET_CONV_NZ: "ALL (g::'A::type => 'A::type => bool) (x::'A::type => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10318
   x0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10319
   tends x x0 (mtop mr1, g) & x0 ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10320
   (EX N::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10321
       g N N & (ALL n::'A::type. g n N --> x n ~= real_of_num (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10322
  by (import hollight NET_CONV_NZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10323
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10324
lemma NET_CONV_IBOUNDED: "ALL (g::'A::type => 'A::type => bool) (x::'A::type => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10325
   x0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10326
   tends x x0 (mtop mr1, g) & x0 ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10327
   bounded (mr1, g) (%n::'A::type. real_inv (x n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10328
  by (import hollight NET_CONV_IBOUNDED)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10329
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10330
lemma NET_NULL_ADD: "ALL g::'A::type => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10331
   dorder g -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10332
   (ALL (x::'A::type => hollight.real) y::'A::type => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10333
       tends x (real_of_num (0::nat)) (mtop mr1, g) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10334
       tends y (real_of_num (0::nat)) (mtop mr1, g) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10335
       tends (%n::'A::type. real_add (x n) (y n)) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10336
        (mtop mr1, g))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10337
  by (import hollight NET_NULL_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10338
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10339
lemma NET_NULL_MUL: "ALL g::'A::type => 'A::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10340
   dorder g -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10341
   (ALL (x::'A::type => hollight.real) y::'A::type => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10342
       bounded (mr1, g) x & tends y (real_of_num (0::nat)) (mtop mr1, g) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10343
       tends (%n::'A::type. real_mul (x n) (y n)) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10344
        (mtop mr1, g))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10345
  by (import hollight NET_NULL_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10346
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10347
lemma NET_NULL_CMUL: "ALL (g::'A::type => 'A::type => bool) (k::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10348
   x::'A::type => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10349
   tends x (real_of_num (0::nat)) (mtop mr1, g) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10350
   tends (%n::'A::type. real_mul k (x n)) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10351
    (mtop mr1, g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10352
  by (import hollight NET_NULL_CMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10353
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10354
lemma NET_ADD: "ALL (g::'A::type => 'A::type => bool) (x::'A::type => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10355
   (x0::hollight.real) (y::'A::type => hollight.real) y0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10356
   dorder g -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10357
   tends x x0 (mtop mr1, g) & tends y y0 (mtop mr1, g) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10358
   tends (%n::'A::type. real_add (x n) (y n)) (real_add x0 y0) (mtop mr1, g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10359
  by (import hollight NET_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10360
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10361
lemma NET_NEG: "ALL (g::'A::type => 'A::type => bool) (x::'A::type => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10362
   x0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10363
   dorder g -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10364
   tends x x0 (mtop mr1, g) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10365
   tends (%n::'A::type. real_neg (x n)) (real_neg x0) (mtop mr1, g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10366
  by (import hollight NET_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10367
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10368
lemma NET_SUB: "ALL (g::'A::type => 'A::type => bool) (x::'A::type => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10369
   (x0::hollight.real) (y::'A::type => hollight.real) y0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10370
   dorder g -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10371
   tends x x0 (mtop mr1, g) & tends y y0 (mtop mr1, g) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10372
   tends (%xa::'A::type. real_sub (x xa) (y xa)) (real_sub x0 y0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10373
    (mtop mr1, g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10374
  by (import hollight NET_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10375
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10376
lemma NET_MUL: "ALL (g::'A::type => 'A::type => bool) (x::'A::type => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10377
   (y::'A::type => hollight.real) (x0::hollight.real) y0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10378
   dorder g -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10379
   tends x x0 (mtop mr1, g) & tends y y0 (mtop mr1, g) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10380
   tends (%n::'A::type. real_mul (x n) (y n)) (real_mul x0 y0) (mtop mr1, g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10381
  by (import hollight NET_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10382
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10383
lemma NET_INV: "ALL (g::'A::type => 'A::type => bool) (x::'A::type => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10384
   x0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10385
   dorder g -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10386
   tends x x0 (mtop mr1, g) & x0 ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10387
   tends (%n::'A::type. real_inv (x n)) (real_inv x0) (mtop mr1, g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10388
  by (import hollight NET_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10389
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10390
lemma NET_DIV: "ALL (g::'A::type => 'A::type => bool) (x::'A::type => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10391
   (x0::hollight.real) (y::'A::type => hollight.real) y0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10392
   dorder g -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10393
   tends x x0 (mtop mr1, g) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10394
   tends y y0 (mtop mr1, g) & y0 ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10395
   tends (%xa::'A::type. real_div (x xa) (y xa)) (real_div x0 y0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10396
    (mtop mr1, g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10397
  by (import hollight NET_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10398
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10399
lemma NET_ABS: "ALL (x::'A::type => hollight.real) x0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10400
   tends x x0 (mtop mr1, g::'A::type => 'A::type => bool) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10401
   tends (%n::'A::type. real_abs (x n)) (real_abs x0) (mtop mr1, g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10402
  by (import hollight NET_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10403
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10404
lemma NET_SUM: "ALL g::'q_71813::type => 'q_71813::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10405
   dorder g &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10406
   tends (%x::'q_71813::type. real_of_num (0::nat)) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10407
    (mtop mr1, g) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10408
   (ALL (x::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10409
       (ALL r::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10410
           <= x r & < r (x + n) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10411
           tends ((f::nat => 'q_71813::type => hollight.real) r)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10412
            ((l::nat => hollight.real) r) (mtop mr1, g)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10413
       tends (%xa::'q_71813::type. psum (x, n) (%r::nat. f r xa))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10414
        (psum (x, n) l) (mtop mr1, g))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10415
  by (import hollight NET_SUM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10416
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10417
lemma NET_LE: "ALL (g::'A::type => 'A::type => bool) (x::'A::type => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10418
   (x0::hollight.real) (y::'A::type => hollight.real) y0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10419
   dorder g -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10420
   tends x x0 (mtop mr1, g) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10421
   tends y y0 (mtop mr1, g) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10422
   (EX N::'A::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10423
       g N N & (ALL n::'A::type. g n N --> real_le (x n) (y n))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10424
   real_le x0 y0"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10425
  by (import hollight NET_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10426
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10427
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10428
  tends_num_real :: "(nat => hollight.real) => hollight.real => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10429
  "tends_num_real ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10430
%(u::nat => hollight.real) ua::hollight.real. tends u ua (mtop mr1, >=)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10431
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10432
lemma DEF_tends_num_real: "tends_num_real =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10433
(%(u::nat => hollight.real) ua::hollight.real. tends u ua (mtop mr1, >=))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10434
  by (import hollight DEF_tends_num_real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10435
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10436
lemma SEQ: "ALL (x::nat => hollight.real) x0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10437
   tends_num_real x x0 =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10438
   (ALL e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10439
       real_lt (real_of_num (0::nat)) e -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10440
       (EX N::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10441
           ALL n::nat. >= n N --> real_lt (real_abs (real_sub (x n) x0)) e))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10442
  by (import hollight SEQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10443
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10444
lemma SEQ_CONST: "ALL k::hollight.real. tends_num_real (%x::nat. k) k"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10445
  by (import hollight SEQ_CONST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10446
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10447
lemma SEQ_ADD: "ALL (x::nat => hollight.real) (x0::hollight.real) (y::nat => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10448
   y0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10449
   tends_num_real x x0 & tends_num_real y y0 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10450
   tends_num_real (%n::nat. real_add (x n) (y n)) (real_add x0 y0)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10451
  by (import hollight SEQ_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10452
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10453
lemma SEQ_MUL: "ALL (x::nat => hollight.real) (x0::hollight.real) (y::nat => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10454
   y0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10455
   tends_num_real x x0 & tends_num_real y y0 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10456
   tends_num_real (%n::nat. real_mul (x n) (y n)) (real_mul x0 y0)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10457
  by (import hollight SEQ_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10458
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10459
lemma SEQ_NEG: "ALL (x::nat => hollight.real) x0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10460
   tends_num_real x x0 =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10461
   tends_num_real (%n::nat. real_neg (x n)) (real_neg x0)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10462
  by (import hollight SEQ_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10463
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10464
lemma SEQ_INV: "ALL (x::nat => hollight.real) x0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10465
   tends_num_real x x0 & x0 ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10466
   tends_num_real (%n::nat. real_inv (x n)) (real_inv x0)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10467
  by (import hollight SEQ_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10468
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10469
lemma SEQ_SUB: "ALL (x::nat => hollight.real) (x0::hollight.real) (y::nat => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10470
   y0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10471
   tends_num_real x x0 & tends_num_real y y0 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10472
   tends_num_real (%n::nat. real_sub (x n) (y n)) (real_sub x0 y0)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10473
  by (import hollight SEQ_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10474
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10475
lemma SEQ_DIV: "ALL (x::nat => hollight.real) (x0::hollight.real) (y::nat => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10476
   y0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10477
   tends_num_real x x0 &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10478
   tends_num_real y y0 & y0 ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10479
   tends_num_real (%n::nat. real_div (x n) (y n)) (real_div x0 y0)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10480
  by (import hollight SEQ_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10481
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10482
lemma SEQ_UNIQ: "ALL (x::nat => hollight.real) (x1::hollight.real) x2::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10483
   tends_num_real x x1 & tends_num_real x x2 --> x1 = x2"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10484
  by (import hollight SEQ_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10485
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10486
lemma SEQ_NULL: "ALL (s::nat => hollight.real) l::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10487
   tends_num_real s l =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10488
   tends_num_real (%n::nat. real_sub (s n) l) (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10489
  by (import hollight SEQ_NULL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10490
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10491
lemma SEQ_SUM: "ALL (f::nat => nat => hollight.real) (l::nat => hollight.real) (m::nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10492
   n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10493
   (ALL x::nat. <= m x & < x (m + n) --> tends_num_real (f x) (l x)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10494
   tends_num_real (%k::nat. psum (m, n) (%r::nat. f r k)) (psum (m, n) l)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10495
  by (import hollight SEQ_SUM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10496
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10497
lemma SEQ_TRANSFORM: "ALL (x::nat => hollight.real) (xa::nat => hollight.real) (xb::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10498
   xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10499
   (ALL n::nat. <= xc n --> x n = xa n) & tends_num_real x xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10500
   tends_num_real xa xb"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10501
  by (import hollight SEQ_TRANSFORM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10502
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10503
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10504
  convergent :: "(nat => hollight.real) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10505
  "convergent == %u::nat => hollight.real. Ex (tends_num_real u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10506
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10507
lemma DEF_convergent: "convergent = (%u::nat => hollight.real. Ex (tends_num_real u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10508
  by (import hollight DEF_convergent)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10509
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10510
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10511
  cauchy :: "(nat => hollight.real) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10512
  "cauchy ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10513
%u::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10514
   ALL e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10515
      real_lt (real_of_num (0::nat)) e -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10516
      (EX N::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10517
          ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10518
             >= m N & >= n N -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10519
             real_lt (real_abs (real_sub (u m) (u n))) e)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10520
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10521
lemma DEF_cauchy: "cauchy =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10522
(%u::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10523
    ALL e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10524
       real_lt (real_of_num (0::nat)) e -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10525
       (EX N::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10526
           ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10527
              >= m N & >= n N -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10528
              real_lt (real_abs (real_sub (u m) (u n))) e))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10529
  by (import hollight DEF_cauchy)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10530
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10531
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10532
  lim :: "(nat => hollight.real) => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10533
  "lim == %u::nat => hollight.real. Eps (tends_num_real u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10534
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10535
lemma DEF_lim: "lim = (%u::nat => hollight.real. Eps (tends_num_real u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10536
  by (import hollight DEF_lim)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10537
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10538
lemma SEQ_LIM: "ALL f::nat => hollight.real. convergent f = tends_num_real f (lim f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10539
  by (import hollight SEQ_LIM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10540
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10541
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10542
  subseq :: "(nat => nat) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10543
  "subseq == %u::nat => nat. ALL (m::nat) n::nat. < m n --> < (u m) (u n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10544
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10545
lemma DEF_subseq: "subseq = (%u::nat => nat. ALL (m::nat) n::nat. < m n --> < (u m) (u n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10546
  by (import hollight DEF_subseq)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10547
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10548
lemma SUBSEQ_SUC: "ALL f::nat => nat. subseq f = (ALL n::nat. < (f n) (f (Suc n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10549
  by (import hollight SUBSEQ_SUC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10550
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10551
consts
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10552
  mono :: "(nat => hollight.real) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10553
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10554
defs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10555
  mono_def: "hollight.mono ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10556
%u::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10557
   (ALL (m::nat) n::nat. <= m n --> real_le (u m) (u n)) |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10558
   (ALL (m::nat) n::nat. <= m n --> hollight.real_ge (u m) (u n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10559
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10560
lemma DEF_mono: "hollight.mono =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10561
(%u::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10562
    (ALL (m::nat) n::nat. <= m n --> real_le (u m) (u n)) |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10563
    (ALL (m::nat) n::nat. <= m n --> hollight.real_ge (u m) (u n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10564
  by (import hollight DEF_mono)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10565
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10566
lemma MONO_SUC: "ALL f::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10567
   hollight.mono f =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10568
   ((ALL x::nat. hollight.real_ge (f (Suc x)) (f x)) |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10569
    (ALL n::nat. real_le (f (Suc n)) (f n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10570
  by (import hollight MONO_SUC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10571
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10572
lemma MAX_LEMMA: "ALL (s::nat => hollight.real) N::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10573
   EX k::hollight.real. ALL n::nat. < n N --> real_lt (real_abs (s n)) k"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10574
  by (import hollight MAX_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10575
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10576
lemma SEQ_BOUNDED: "ALL s::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10577
   bounded (mr1, >=) s =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10578
   (EX k::hollight.real. ALL n::nat. real_lt (real_abs (s n)) k)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10579
  by (import hollight SEQ_BOUNDED)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10580
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10581
lemma SEQ_BOUNDED_2: "ALL (f::nat => hollight.real) (k::hollight.real) K::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10582
   (ALL n::nat. real_le k (f n) & real_le (f n) K) --> bounded (mr1, >=) f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10583
  by (import hollight SEQ_BOUNDED_2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10584
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10585
lemma SEQ_CBOUNDED: "ALL f::nat => hollight.real. cauchy f --> bounded (mr1, >=) f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10586
  by (import hollight SEQ_CBOUNDED)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10587
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10588
lemma SEQ_ICONV: "ALL f::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10589
   bounded (mr1, >=) f &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10590
   (ALL (m::nat) n::nat. >= m n --> hollight.real_ge (f m) (f n)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10591
   convergent f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10592
  by (import hollight SEQ_ICONV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10593
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10594
lemma SEQ_NEG_CONV: "ALL f::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10595
   convergent f = convergent (%n::nat. real_neg (f n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10596
  by (import hollight SEQ_NEG_CONV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10597
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10598
lemma SEQ_NEG_BOUNDED: "ALL f::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10599
   bounded (mr1, >=) (%n::nat. real_neg (f n)) = bounded (mr1, >=) f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10600
  by (import hollight SEQ_NEG_BOUNDED)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10601
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10602
lemma SEQ_BCONV: "ALL f::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10603
   bounded (mr1, >=) f & hollight.mono f --> convergent f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10604
  by (import hollight SEQ_BCONV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10605
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10606
lemma SEQ_MONOSUB: "ALL s::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10607
   EX f::nat => nat. subseq f & hollight.mono (%n::nat. s (f n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10608
  by (import hollight SEQ_MONOSUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10609
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10610
lemma SEQ_SBOUNDED: "ALL (s::nat => hollight.real) f::nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10611
   bounded (mr1, >=) s --> bounded (mr1, >=) (%n::nat. s (f n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10612
  by (import hollight SEQ_SBOUNDED)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10613
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10614
lemma SEQ_SUBLE: "ALL (f::nat => nat) x::nat. subseq f --> <= x (f x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10615
  by (import hollight SEQ_SUBLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10616
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10617
lemma SEQ_DIRECT: "ALL f::nat => nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10618
   subseq f --> (ALL (N1::nat) N2::nat. EX x::nat. >= x N1 & >= (f x) N2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10619
  by (import hollight SEQ_DIRECT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10620
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10621
lemma SEQ_CAUCHY: "ALL f::nat => hollight.real. cauchy f = convergent f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10622
  by (import hollight SEQ_CAUCHY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10623
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10624
lemma SEQ_LE: "ALL (f::nat => hollight.real) (g::nat => hollight.real) (l::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10625
   m::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10626
   tends_num_real f l &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10627
   tends_num_real g m &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10628
   (EX N::nat. ALL n::nat. >= n N --> real_le (f n) (g n)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10629
   real_le l m"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10630
  by (import hollight SEQ_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10631
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10632
lemma SEQ_LE_0: "ALL (x::nat => hollight.real) xa::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10633
   tends_num_real x (real_of_num (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10634
   (EX xb::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10635
       ALL xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10636
          >= xc xb --> real_le (real_abs (xa xc)) (real_abs (x xc))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10637
   tends_num_real xa (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10638
  by (import hollight SEQ_LE_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10639
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10640
lemma SEQ_SUC: "ALL (f::nat => hollight.real) l::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10641
   tends_num_real f l = tends_num_real (%n::nat. f (Suc n)) l"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10642
  by (import hollight SEQ_SUC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10643
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10644
lemma SEQ_ABS: "ALL f::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10645
   tends_num_real (%n::nat. real_abs (f n)) (real_of_num (0::nat)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10646
   tends_num_real f (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10647
  by (import hollight SEQ_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10648
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10649
lemma SEQ_ABS_IMP: "ALL (f::nat => hollight.real) l::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10650
   tends_num_real f l -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10651
   tends_num_real (%n::nat. real_abs (f n)) (real_abs l)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10652
  by (import hollight SEQ_ABS_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10653
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10654
lemma SEQ_INV0: "ALL f::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10655
   (ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10656
       EX N::nat. ALL n::nat. >= n N --> hollight.real_gt (f n) y) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10657
   tends_num_real (%n::nat. real_inv (f n)) (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10658
  by (import hollight SEQ_INV0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10659
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10660
lemma SEQ_POWER_ABS: "ALL c::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10661
   real_lt (real_abs c) (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10662
   tends_num_real (real_pow (real_abs c)) (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10663
  by (import hollight SEQ_POWER_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10664
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10665
lemma SEQ_POWER: "ALL c::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10666
   real_lt (real_abs c) (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10667
   tends_num_real (real_pow c) (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10668
  by (import hollight SEQ_POWER)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10669
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10670
lemma NEST_LEMMA: "ALL (f::nat => hollight.real) g::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10671
   (ALL n::nat. hollight.real_ge (f (Suc n)) (f n)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10672
   (ALL n::nat. real_le (g (Suc n)) (g n)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10673
   (ALL n::nat. real_le (f n) (g n)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10674
   (EX (l::hollight.real) m::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10675
       real_le l m &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10676
       ((ALL n::nat. real_le (f n) l) & tends_num_real f l) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10677
       (ALL n::nat. real_le m (g n)) & tends_num_real g m)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10678
  by (import hollight NEST_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10679
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10680
lemma NEST_LEMMA_UNIQ: "ALL (f::nat => hollight.real) g::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10681
   (ALL n::nat. hollight.real_ge (f (Suc n)) (f n)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10682
   (ALL n::nat. real_le (g (Suc n)) (g n)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10683
   (ALL n::nat. real_le (f n) (g n)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10684
   tends_num_real (%n::nat. real_sub (f n) (g n)) (real_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10685
   (EX l::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10686
       ((ALL n::nat. real_le (f n) l) & tends_num_real f l) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10687
       (ALL n::nat. real_le l (g n)) & tends_num_real g l)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10688
  by (import hollight NEST_LEMMA_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10689
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10690
lemma BOLZANO_LEMMA: "ALL P::hollight.real * hollight.real => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10691
   (ALL (a::hollight.real) (b::hollight.real) c::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10692
       real_le a b & real_le b c & P (a, b) & P (b, c) --> P (a, c)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10693
   (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10694
       EX d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10695
          real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10696
          (ALL (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10697
              real_le a x & real_le x b & real_lt (real_sub b a) d -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10698
              P (a, b))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10699
   (ALL (a::hollight.real) b::hollight.real. real_le a b --> P (a, b))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10700
  by (import hollight BOLZANO_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10701
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10702
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10703
  sums :: "(nat => hollight.real) => hollight.real => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10704
  "sums ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10705
%u::nat => hollight.real. tends_num_real (%n::nat. psum (0::nat, n) u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10706
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10707
lemma DEF_sums: "sums =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10708
(%u::nat => hollight.real. tends_num_real (%n::nat. psum (0::nat, n) u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10709
  by (import hollight DEF_sums)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10710
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10711
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10712
  summable :: "(nat => hollight.real) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10713
  "summable == %u::nat => hollight.real. Ex (sums u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10714
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10715
lemma DEF_summable: "summable = (%u::nat => hollight.real. Ex (sums u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10716
  by (import hollight DEF_summable)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10717
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10718
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10719
  suminf :: "(nat => hollight.real) => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10720
  "suminf == %u::nat => hollight.real. Eps (sums u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10721
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10722
lemma DEF_suminf: "suminf = (%u::nat => hollight.real. Eps (sums u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10723
  by (import hollight DEF_suminf)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10724
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10725
lemma SUM_SUMMABLE: "ALL (f::nat => hollight.real) l::hollight.real. sums f l --> summable f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10726
  by (import hollight SUM_SUMMABLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10727
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10728
lemma SUMMABLE_SUM: "ALL f::nat => hollight.real. summable f --> sums f (suminf f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10729
  by (import hollight SUMMABLE_SUM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10730
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10731
lemma SUM_UNIQ: "ALL (f::nat => hollight.real) x::hollight.real. sums f x --> x = suminf f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10732
  by (import hollight SUM_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10733
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10734
lemma SER_UNIQ: "ALL (f::nat => hollight.real) (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10735
   sums f x & sums f y --> x = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10736
  by (import hollight SER_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10737
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10738
lemma SER_0: "ALL (f::nat => hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10739
   (ALL m::nat. <= n m --> f m = real_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10740
   sums f (psum (0::nat, n) f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10741
  by (import hollight SER_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10742
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10743
lemma SER_POS_LE: "ALL (f::nat => hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10744
   summable f &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10745
   (ALL m::nat. <= n m --> real_le (real_of_num (0::nat)) (f m)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10746
   real_le (psum (0::nat, n) f) (suminf f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10747
  by (import hollight SER_POS_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10748
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10749
lemma SER_POS_LT: "ALL (f::nat => hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10750
   summable f &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10751
   (ALL m::nat. <= n m --> real_lt (real_of_num (0::nat)) (f m)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10752
   real_lt (psum (0::nat, n) f) (suminf f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10753
  by (import hollight SER_POS_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10754
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10755
lemma SER_GROUP: "ALL (f::nat => hollight.real) k::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10756
   summable f & < (0::nat) k -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10757
   sums (%n::nat. psum (n * k, k) f) (suminf f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10758
  by (import hollight SER_GROUP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10759
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10760
lemma SER_PAIR: "ALL f::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10761
   summable f -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10762
   sums
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10763
    (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10764
        psum
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10765
         (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * n,
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10766
          NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10767
         f)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10768
    (suminf f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10769
  by (import hollight SER_PAIR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10770
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10771
lemma SER_OFFSET: "ALL f::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10772
   summable f -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10773
   (ALL k::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10774
       sums (%n::nat. f (n + k)) (real_sub (suminf f) (psum (0::nat, k) f)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10775
  by (import hollight SER_OFFSET)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10776
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10777
lemma SER_OFFSET_REV: "ALL (f::nat => hollight.real) k::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10778
   summable (%n::nat. f (n + k)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10779
   sums f (real_add (psum (0::nat, k) f) (suminf (%n::nat. f (n + k))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10780
  by (import hollight SER_OFFSET_REV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10781
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10782
lemma SER_POS_LT_PAIR: "ALL (f::nat => hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10783
   summable f &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10784
   (ALL d::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10785
       real_lt (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10786
        (real_add (f (n + NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * d))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10787
          (f (n +
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10788
              (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * d +
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10789
               NUMERAL_BIT1 (0::nat)))))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10790
   real_lt (psum (0::nat, n) f) (suminf f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10791
  by (import hollight SER_POS_LT_PAIR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10792
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10793
lemma SER_ADD: "ALL (x::nat => hollight.real) (x0::hollight.real) (y::nat => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10794
   y0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10795
   sums x x0 & sums y y0 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10796
   sums (%n::nat. real_add (x n) (y n)) (real_add x0 y0)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10797
  by (import hollight SER_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10798
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10799
lemma SER_CMUL: "ALL (x::nat => hollight.real) (x0::hollight.real) c::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10800
   sums x x0 --> sums (%n::nat. real_mul c (x n)) (real_mul c x0)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10801
  by (import hollight SER_CMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10802
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10803
lemma SER_NEG: "ALL (x::nat => hollight.real) x0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10804
   sums x x0 --> sums (%xa::nat. real_neg (x xa)) (real_neg x0)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10805
  by (import hollight SER_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10806
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10807
lemma SER_SUB: "ALL (x::nat => hollight.real) (x0::hollight.real) (y::nat => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10808
   y0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10809
   sums x x0 & sums y y0 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10810
   sums (%n::nat. real_sub (x n) (y n)) (real_sub x0 y0)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10811
  by (import hollight SER_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10812
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10813
lemma SER_CDIV: "ALL (x::nat => hollight.real) (x0::hollight.real) c::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10814
   sums x x0 --> sums (%xa::nat. real_div (x xa) c) (real_div x0 c)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10815
  by (import hollight SER_CDIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10816
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10817
lemma SER_CAUCHY: "ALL f::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10818
   summable f =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10819
   (ALL e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10820
       real_lt (real_of_num (0::nat)) e -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10821
       (EX N::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10822
           ALL (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10823
              >= m N --> real_lt (real_abs (psum (m, n) f)) e))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10824
  by (import hollight SER_CAUCHY)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10825
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10826
lemma SER_ZERO: "ALL f::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10827
   summable f --> tends_num_real f (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10828
  by (import hollight SER_ZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10829
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10830
lemma SER_COMPAR: "ALL (f::nat => hollight.real) g::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10831
   (EX x::nat. ALL xa::nat. >= xa x --> real_le (real_abs (f xa)) (g xa)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10832
   summable g -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10833
   summable f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10834
  by (import hollight SER_COMPAR)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10835
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10836
lemma SER_COMPARA: "ALL (f::nat => hollight.real) g::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10837
   (EX x::nat. ALL xa::nat. >= xa x --> real_le (real_abs (f xa)) (g xa)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10838
   summable g -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10839
   summable (%k::nat. real_abs (f k))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10840
  by (import hollight SER_COMPARA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10841
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10842
lemma SER_LE: "ALL (f::nat => hollight.real) g::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10843
   (ALL n::nat. real_le (f n) (g n)) & summable f & summable g -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10844
   real_le (suminf f) (suminf g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10845
  by (import hollight SER_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10846
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10847
lemma SER_LE2: "ALL (f::nat => hollight.real) g::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10848
   (ALL n::nat. real_le (real_abs (f n)) (g n)) & summable g -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10849
   summable f & real_le (suminf f) (suminf g)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10850
  by (import hollight SER_LE2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10851
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10852
lemma SER_ACONV: "ALL f::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10853
   summable (%n::nat. real_abs (f n)) --> summable f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10854
  by (import hollight SER_ACONV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10855
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10856
lemma SER_ABS: "ALL f::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10857
   summable (%n::nat. real_abs (f n)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10858
   real_le (real_abs (suminf f)) (suminf (%n::nat. real_abs (f n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10859
  by (import hollight SER_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10860
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10861
lemma GP_FINITE: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10862
   x ~= real_of_num (NUMERAL_BIT1 (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10863
   (ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10864
       psum (0::nat, n) (real_pow x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10865
       real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10866
        (real_sub (real_pow x n) (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10867
        (real_sub x (real_of_num (NUMERAL_BIT1 (0::nat)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10868
  by (import hollight GP_FINITE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10869
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10870
lemma GP: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10871
   real_lt (real_abs x) (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10872
   sums (real_pow x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10873
    (real_inv (real_sub (real_of_num (NUMERAL_BIT1 (0::nat))) x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10874
  by (import hollight GP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10875
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10876
lemma ABS_NEG_LEMMA: "ALL (c::hollight.real) (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10877
   real_le c (real_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10878
   real_le (real_abs x) (real_mul c (real_abs y)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10879
   x = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10880
  by (import hollight ABS_NEG_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10881
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10882
lemma SER_RATIO: "ALL (f::nat => hollight.real) (c::hollight.real) N::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10883
   real_lt c (real_of_num (NUMERAL_BIT1 (0::nat))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10884
   (ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10885
       >= n N -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10886
       real_le (real_abs (f (Suc n))) (real_mul c (real_abs (f n)))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10887
   summable f"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10888
  by (import hollight SER_RATIO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10889
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10890
lemma SEQ_TRUNCATION: "ALL (f::nat => hollight.real) (l::hollight.real) (n::nat) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10891
   sums f l & (ALL m::nat. real_le (real_abs (psum (n, m) f)) b) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10892
   real_le (real_abs (real_sub l (psum (0::nat, n) f))) b"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10893
  by (import hollight SEQ_TRUNCATION)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10894
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10895
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10896
  tends_real_real :: "(hollight.real => hollight.real) => hollight.real => hollight.real => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10897
  "tends_real_real ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10898
%(u::hollight.real => hollight.real) (ua::hollight.real) ub::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10899
   tends u ua (mtop mr1, tendsto (mr1, ub))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10900
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10901
lemma DEF_tends_real_real: "tends_real_real =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10902
(%(u::hollight.real => hollight.real) (ua::hollight.real) ub::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10903
    tends u ua (mtop mr1, tendsto (mr1, ub)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10904
  by (import hollight DEF_tends_real_real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10905
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10906
lemma LIM: "ALL (f::hollight.real => hollight.real) (y0::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10907
   x0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10908
   tends_real_real f y0 x0 =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10909
   (ALL e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10910
       real_lt (real_of_num (0::nat)) e -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10911
       (EX d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10912
           real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10913
           (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10914
               real_lt (real_of_num (0::nat)) (real_abs (real_sub x x0)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10915
               real_lt (real_abs (real_sub x x0)) d -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10916
               real_lt (real_abs (real_sub (f x) y0)) e)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10917
  by (import hollight LIM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10918
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10919
lemma LIM_CONST: "ALL k::hollight.real. All (tends_real_real (%x::hollight.real. k) k)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10920
  by (import hollight LIM_CONST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10921
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10922
lemma LIM_ADD: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10923
   (l::hollight.real) m::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10924
   tends_real_real f l (x::hollight.real) & tends_real_real g m x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10925
   tends_real_real (%x::hollight.real. real_add (f x) (g x)) (real_add l m)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10926
    x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10927
  by (import hollight LIM_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10928
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10929
lemma LIM_MUL: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10930
   (l::hollight.real) m::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10931
   tends_real_real f l (x::hollight.real) & tends_real_real g m x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10932
   tends_real_real (%x::hollight.real. real_mul (f x) (g x)) (real_mul l m)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10933
    x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10934
  by (import hollight LIM_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10935
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10936
lemma LIM_NEG: "ALL (f::hollight.real => hollight.real) l::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10937
   tends_real_real f l (x::hollight.real) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10938
   tends_real_real (%x::hollight.real. real_neg (f x)) (real_neg l) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10939
  by (import hollight LIM_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10940
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10941
lemma LIM_INV: "ALL (f::hollight.real => hollight.real) l::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10942
   tends_real_real f l (x::hollight.real) & l ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10943
   tends_real_real (%x::hollight.real. real_inv (f x)) (real_inv l) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10944
  by (import hollight LIM_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10945
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10946
lemma LIM_SUB: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10947
   (l::hollight.real) m::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10948
   tends_real_real f l (x::hollight.real) & tends_real_real g m x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10949
   tends_real_real (%x::hollight.real. real_sub (f x) (g x)) (real_sub l m)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10950
    x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10951
  by (import hollight LIM_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10952
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10953
lemma LIM_DIV: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10954
   (l::hollight.real) m::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10955
   tends_real_real f l (x::hollight.real) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10956
   tends_real_real g m x & m ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10957
   tends_real_real (%x::hollight.real. real_div (f x) (g x)) (real_div l m)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10958
    x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10959
  by (import hollight LIM_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10960
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10961
lemma LIM_NULL: "ALL (f::hollight.real => hollight.real) (l::hollight.real) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10962
   tends_real_real f l x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10963
   tends_real_real (%x::hollight.real. real_sub (f x) l)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10964
    (real_of_num (0::nat)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10965
  by (import hollight LIM_NULL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10966
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10967
lemma LIM_SUM: "ALL (f::nat => hollight.real => hollight.real) (l::nat => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10968
   (m::nat) (n::nat) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10969
   (ALL xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10970
       <= m xa & < xa (m + n) --> tends_real_real (f xa) (l xa) x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10971
   tends_real_real (%x::hollight.real. psum (m, n) (%r::nat. f r x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10972
    (psum (m, n) l) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10973
  by (import hollight LIM_SUM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10974
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10975
lemma LIM_X: "ALL x0::hollight.real. tends_real_real (%x::hollight.real. x) x0 x0"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10976
  by (import hollight LIM_X)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10977
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10978
lemma LIM_UNIQ: "ALL (f::hollight.real => hollight.real) (l::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10979
   (m::hollight.real) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10980
   tends_real_real f l x & tends_real_real f m x --> l = m"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10981
  by (import hollight LIM_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10982
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10983
lemma LIM_EQUAL: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10984
   (l::hollight.real) x0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10985
   (ALL x::hollight.real. x ~= x0 --> f x = g x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10986
   tends_real_real f l x0 = tends_real_real g l x0"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10987
  by (import hollight LIM_EQUAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10988
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10989
lemma LIM_TRANSFORM: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10990
   (x0::hollight.real) l::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10991
   tends_real_real (%x::hollight.real. real_sub (f x) (g x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10992
    (real_of_num (0::nat)) x0 &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10993
   tends_real_real g l x0 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10994
   tends_real_real f l x0"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10995
  by (import hollight LIM_TRANSFORM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10996
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10997
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10998
  diffl :: "(hollight.real => hollight.real) => hollight.real => hollight.real => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 10999
  "diffl ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11000
%(u::hollight.real => hollight.real) (ua::hollight.real) ub::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11001
   tends_real_real
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11002
    (%h::hollight.real. real_div (real_sub (u (real_add ub h)) (u ub)) h) ua
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11003
    (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11004
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11005
lemma DEF_diffl: "diffl =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11006
(%(u::hollight.real => hollight.real) (ua::hollight.real) ub::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11007
    tends_real_real
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11008
     (%h::hollight.real. real_div (real_sub (u (real_add ub h)) (u ub)) h)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11009
     ua (real_of_num (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11010
  by (import hollight DEF_diffl)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11011
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11012
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11013
  contl :: "(hollight.real => hollight.real) => hollight.real => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11014
  "contl ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11015
%(u::hollight.real => hollight.real) ua::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11016
   tends_real_real (%h::hollight.real. u (real_add ua h)) (u ua)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11017
    (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11018
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11019
lemma DEF_contl: "contl =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11020
(%(u::hollight.real => hollight.real) ua::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11021
    tends_real_real (%h::hollight.real. u (real_add ua h)) (u ua)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11022
     (real_of_num (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11023
  by (import hollight DEF_contl)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11024
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11025
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11026
  differentiable :: "(hollight.real => hollight.real) => hollight.real => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11027
  "differentiable ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11028
%(u::hollight.real => hollight.real) ua::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11029
   EX l::hollight.real. diffl u l ua"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11030
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11031
lemma DEF_differentiable: "differentiable =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11032
(%(u::hollight.real => hollight.real) ua::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11033
    EX l::hollight.real. diffl u l ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11034
  by (import hollight DEF_differentiable)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11035
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11036
lemma DIFF_UNIQ: "ALL (f::hollight.real => hollight.real) (l::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11037
   (m::hollight.real) x::hollight.real. diffl f l x & diffl f m x --> l = m"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11038
  by (import hollight DIFF_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11039
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11040
lemma DIFF_CONT: "ALL (f::hollight.real => hollight.real) (l::hollight.real) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11041
   diffl f l x --> contl f x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11042
  by (import hollight DIFF_CONT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11043
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11044
lemma CONTL_LIM: "ALL (f::hollight.real => hollight.real) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11045
   contl f x = tends_real_real f (f x) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11046
  by (import hollight CONTL_LIM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11047
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11048
lemma CONT_X: "All (contl (%x::hollight.real. x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11049
  by (import hollight CONT_X)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11050
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11051
lemma CONT_CONST: "All (contl (%x::hollight.real. k::hollight.real))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11052
  by (import hollight CONT_CONST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11053
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11054
lemma CONT_ADD: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11055
   contl (f::hollight.real => hollight.real) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11056
   contl (g::hollight.real => hollight.real) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11057
   contl (%x::hollight.real. real_add (f x) (g x)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11058
  by (import hollight CONT_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11059
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11060
lemma CONT_MUL: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11061
   contl (f::hollight.real => hollight.real) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11062
   contl (g::hollight.real => hollight.real) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11063
   contl (%x::hollight.real. real_mul (f x) (g x)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11064
  by (import hollight CONT_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11065
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11066
lemma CONT_NEG: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11067
   contl (f::hollight.real => hollight.real) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11068
   contl (%x::hollight.real. real_neg (f x)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11069
  by (import hollight CONT_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11070
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11071
lemma CONT_INV: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11072
   contl (f::hollight.real => hollight.real) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11073
   f x ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11074
   contl (%x::hollight.real. real_inv (f x)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11075
  by (import hollight CONT_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11076
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11077
lemma CONT_SUB: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11078
   contl (f::hollight.real => hollight.real) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11079
   contl (g::hollight.real => hollight.real) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11080
   contl (%x::hollight.real. real_sub (f x) (g x)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11081
  by (import hollight CONT_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11082
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11083
lemma CONT_DIV: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11084
   contl (f::hollight.real => hollight.real) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11085
   contl (g::hollight.real => hollight.real) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11086
   g x ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11087
   contl (%x::hollight.real. real_div (f x) (g x)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11088
  by (import hollight CONT_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11089
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11090
lemma CONT_COMPOSE: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11091
   x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11092
   contl f x & contl g (f x) --> contl (%x::hollight.real. g (f x)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11093
  by (import hollight CONT_COMPOSE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11094
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11095
lemma IVT: "ALL (f::hollight.real => hollight.real) (a::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11096
   (b::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11097
   real_le a b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11098
   (real_le (f a) y & real_le y (f b)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11099
   (ALL x::hollight.real. real_le a x & real_le x b --> contl f x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11100
   (EX x::hollight.real. real_le a x & real_le x b & f x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11101
  by (import hollight IVT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11102
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11103
lemma IVT2: "ALL (f::hollight.real => hollight.real) (a::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11104
   (b::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11105
   real_le a b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11106
   (real_le (f b) y & real_le y (f a)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11107
   (ALL x::hollight.real. real_le a x & real_le x b --> contl f x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11108
   (EX x::hollight.real. real_le a x & real_le x b & f x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11109
  by (import hollight IVT2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11110
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11111
lemma DIFF_CONST: "ALL k::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11112
   All (diffl (%x::hollight.real. k) (real_of_num (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11113
  by (import hollight DIFF_CONST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11114
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11115
lemma DIFF_ADD: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11116
   (l::hollight.real) (m::hollight.real) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11117
   diffl f l x & diffl g m x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11118
   diffl (%x::hollight.real. real_add (f x) (g x)) (real_add l m) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11119
  by (import hollight DIFF_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11120
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11121
lemma DIFF_MUL: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11122
   (l::hollight.real) (m::hollight.real) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11123
   diffl f l x & diffl g m x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11124
   diffl (%x::hollight.real. real_mul (f x) (g x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11125
    (real_add (real_mul l (g x)) (real_mul m (f x))) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11126
  by (import hollight DIFF_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11127
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11128
lemma DIFF_CMUL: "ALL (f::hollight.real => hollight.real) (c::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11129
   (l::hollight.real) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11130
   diffl f l x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11131
   diffl (%x::hollight.real. real_mul c (f x)) (real_mul c l) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11132
  by (import hollight DIFF_CMUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11133
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11134
lemma DIFF_NEG: "ALL (f::hollight.real => hollight.real) (l::hollight.real) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11135
   diffl f l x --> diffl (%x::hollight.real. real_neg (f x)) (real_neg l) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11136
  by (import hollight DIFF_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11137
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11138
lemma DIFF_SUB: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11139
   (l::hollight.real) (m::hollight.real) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11140
   diffl f l x & diffl g m x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11141
   diffl (%x::hollight.real. real_sub (f x) (g x)) (real_sub l m) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11142
  by (import hollight DIFF_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11143
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11144
lemma DIFF_CARAT: "ALL (f::hollight.real => hollight.real) (l::hollight.real) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11145
   diffl f l x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11146
   (EX xa::hollight.real => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11147
       (ALL z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11148
           real_sub (f z) (f x) = real_mul (xa z) (real_sub z x)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11149
       contl xa x & xa x = l)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11150
  by (import hollight DIFF_CARAT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11151
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11152
lemma DIFF_CHAIN: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11153
   (l::hollight.real) (m::hollight.real) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11154
   diffl f l (g x) & diffl g m x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11155
   diffl (%x::hollight.real. f (g x)) (real_mul l m) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11156
  by (import hollight DIFF_CHAIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11157
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11158
lemma DIFF_X: "All (diffl (%x::hollight.real. x) (real_of_num (NUMERAL_BIT1 (0::nat))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11159
  by (import hollight DIFF_X)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11160
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11161
lemma DIFF_POW: "ALL (n::nat) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11162
   diffl (%x::hollight.real. real_pow x n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11163
    (real_mul (real_of_num n) (real_pow x (n - NUMERAL_BIT1 (0::nat)))) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11164
  by (import hollight DIFF_POW)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11165
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11166
lemma DIFF_XM1: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11167
   x ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11168
   diffl real_inv
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11169
    (real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11170
      (real_pow (real_inv x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11171
    x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11172
  by (import hollight DIFF_XM1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11173
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11174
lemma DIFF_INV: "ALL (f::hollight.real => hollight.real) (l::hollight.real) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11175
   diffl f l x & f x ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11176
   diffl (%x::hollight.real. real_inv (f x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11177
    (real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11178
      (real_div l (real_pow (f x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11179
    x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11180
  by (import hollight DIFF_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11181
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11182
lemma DIFF_DIV: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11183
   (l::hollight.real) m::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11184
   diffl f l (x::hollight.real) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11185
   diffl g m x & g x ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11186
   diffl (%x::hollight.real. real_div (f x) (g x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11187
    (real_div (real_sub (real_mul l (g x)) (real_mul m (f x)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11188
      (real_pow (g x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11189
    x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11190
  by (import hollight DIFF_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11191
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11192
lemma DIFF_SUM: "ALL (f::nat => hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11193
   (f'::nat => hollight.real => hollight.real) (m::nat) (n::nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11194
   x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11195
   (ALL r::nat. <= m r & < r (m + n) --> diffl (f r) (f' r x) x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11196
   diffl (%x::hollight.real. psum (m, n) (%n::nat. f n x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11197
    (psum (m, n) (%r::nat. f' r x)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11198
  by (import hollight DIFF_SUM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11199
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11200
lemma CONT_BOUNDED: "ALL (f::hollight.real => hollight.real) (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11201
   real_le a b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11202
   (ALL x::hollight.real. real_le a x & real_le x b --> contl f x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11203
   (EX M::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11204
       ALL x::hollight.real. real_le a x & real_le x b --> real_le (f x) M)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11205
  by (import hollight CONT_BOUNDED)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11206
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11207
lemma CONT_BOUNDED_ABS: "ALL (f::hollight.real => hollight.real) (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11208
   (ALL x::hollight.real. real_le a x & real_le x b --> contl f x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11209
   (EX M::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11210
       ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11211
          real_le a x & real_le x b --> real_le (real_abs (f x)) M)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11212
  by (import hollight CONT_BOUNDED_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11213
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11214
lemma CONT_HASSUP: "ALL (f::hollight.real => hollight.real) (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11215
   real_le a b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11216
   (ALL x::hollight.real. real_le a x & real_le x b --> contl f x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11217
   (EX M::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11218
       (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11219
           real_le a x & real_le x b --> real_le (f x) M) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11220
       (ALL N::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11221
           real_lt N M -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11222
           (EX x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11223
               real_le a x & real_le x b & real_lt N (f x))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11224
  by (import hollight CONT_HASSUP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11225
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11226
lemma CONT_ATTAINS: "ALL (f::hollight.real => hollight.real) (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11227
   real_le a b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11228
   (ALL x::hollight.real. real_le a x & real_le x b --> contl f x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11229
   (EX x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11230
       (ALL xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11231
           real_le a xa & real_le xa b --> real_le (f xa) x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11232
       (EX xa::hollight.real. real_le a xa & real_le xa b & f xa = x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11233
  by (import hollight CONT_ATTAINS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11234
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11235
lemma CONT_ATTAINS2: "ALL (f::hollight.real => hollight.real) (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11236
   real_le a b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11237
   (ALL x::hollight.real. real_le a x & real_le x b --> contl f x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11238
   (EX M::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11239
       (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11240
           real_le a x & real_le x b --> real_le M (f x)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11241
       (EX x::hollight.real. real_le a x & real_le x b & f x = M))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11242
  by (import hollight CONT_ATTAINS2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11243
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11244
lemma CONT_ATTAINS_ALL: "ALL (f::hollight.real => hollight.real) (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11245
   real_le a b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11246
   (ALL x::hollight.real. real_le a x & real_le x b --> contl f x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11247
   (EX (L::hollight.real) M::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11248
       (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11249
           real_le a x & real_le x b -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11250
           real_le L (f x) & real_le (f x) M) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11251
       (ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11252
           real_le L y & real_le y M -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11253
           (EX x::hollight.real. real_le a x & real_le x b & f x = y)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11254
  by (import hollight CONT_ATTAINS_ALL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11255
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11256
lemma DIFF_LINC: "ALL (f::hollight.real => hollight.real) (x::hollight.real) l::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11257
   diffl f l x & real_lt (real_of_num (0::nat)) l -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11258
   (EX d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11259
       real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11260
       (ALL h::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11261
           real_lt (real_of_num (0::nat)) h & real_lt h d -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11262
           real_lt (f x) (f (real_add x h))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11263
  by (import hollight DIFF_LINC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11264
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11265
lemma DIFF_LDEC: "ALL (f::hollight.real => hollight.real) (x::hollight.real) l::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11266
   diffl f l x & real_lt l (real_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11267
   (EX d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11268
       real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11269
       (ALL h::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11270
           real_lt (real_of_num (0::nat)) h & real_lt h d -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11271
           real_lt (f x) (f (real_sub x h))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11272
  by (import hollight DIFF_LDEC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11273
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11274
lemma DIFF_LMAX: "ALL (f::hollight.real => hollight.real) (x::hollight.real) l::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11275
   diffl f l x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11276
   (EX d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11277
       real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11278
       (ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11279
           real_lt (real_abs (real_sub x y)) d --> real_le (f y) (f x))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11280
   l = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11281
  by (import hollight DIFF_LMAX)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11282
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11283
lemma DIFF_LMIN: "ALL (f::hollight.real => hollight.real) (x::hollight.real) l::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11284
   diffl f l x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11285
   (EX d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11286
       real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11287
       (ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11288
           real_lt (real_abs (real_sub x y)) d --> real_le (f x) (f y))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11289
   l = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11290
  by (import hollight DIFF_LMIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11291
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11292
lemma DIFF_LCONST: "ALL (f::hollight.real => hollight.real) (x::hollight.real) l::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11293
   diffl f l x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11294
   (EX d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11295
       real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11296
       (ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11297
           real_lt (real_abs (real_sub x y)) d --> f y = f x)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11298
   l = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11299
  by (import hollight DIFF_LCONST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11300
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11301
lemma INTERVAL_LEMMA_LT: "ALL (a::hollight.real) (b::hollight.real) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11302
   real_lt a x & real_lt x b -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11303
   (EX xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11304
       real_lt (real_of_num (0::nat)) xa &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11305
       (ALL xb::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11306
           real_lt (real_abs (real_sub x xb)) xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11307
           real_lt a xb & real_lt xb b))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11308
  by (import hollight INTERVAL_LEMMA_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11309
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11310
lemma INTERVAL_LEMMA: "ALL (a::hollight.real) (b::hollight.real) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11311
   real_lt a x & real_lt x b -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11312
   (EX xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11313
       real_lt (real_of_num (0::nat)) xa &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11314
       (ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11315
           real_lt (real_abs (real_sub x y)) xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11316
           real_le a y & real_le y b))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11317
  by (import hollight INTERVAL_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11318
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11319
lemma ROLLE: "ALL (f::hollight.real => hollight.real) (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11320
   real_lt a b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11321
   f a = f b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11322
   (ALL x::hollight.real. real_le a x & real_le x b --> contl f x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11323
   (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11324
       real_lt a x & real_lt x b --> differentiable f x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11325
   (EX z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11326
       real_lt a z & real_lt z b & diffl f (real_of_num (0::nat)) z)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11327
  by (import hollight ROLLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11328
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11329
lemma MVT_LEMMA: "ALL (f::hollight.real => hollight.real) (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11330
   real_sub (f a)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11331
    (real_mul (real_div (real_sub (f b) (f a)) (real_sub b a)) a) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11332
   real_sub (f b)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11333
    (real_mul (real_div (real_sub (f b) (f a)) (real_sub b a)) b)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11334
  by (import hollight MVT_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11335
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11336
lemma MVT: "ALL (f::hollight.real => hollight.real) (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11337
   real_lt a b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11338
   (ALL x::hollight.real. real_le a x & real_le x b --> contl f x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11339
   (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11340
       real_lt a x & real_lt x b --> differentiable f x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11341
   (EX (l::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11342
       real_lt a z &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11343
       real_lt z b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11344
       diffl f l z & real_sub (f b) (f a) = real_mul (real_sub b a) l)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11345
  by (import hollight MVT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11346
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11347
lemma MVT_ALT: "ALL (f::hollight.real => hollight.real) (f'::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11348
   (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11349
   real_lt a b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11350
   (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11351
       real_le a x & real_le x b --> diffl f (f' x) x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11352
   (EX z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11353
       real_lt a z &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11354
       real_lt z b & real_sub (f b) (f a) = real_mul (real_sub b a) (f' z))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11355
  by (import hollight MVT_ALT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11356
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11357
lemma DIFF_ISCONST_END: "ALL (f::hollight.real => hollight.real) (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11358
   real_lt a b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11359
   (ALL x::hollight.real. real_le a x & real_le x b --> contl f x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11360
   (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11361
       real_lt a x & real_lt x b --> diffl f (real_of_num (0::nat)) x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11362
   f b = f a"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11363
  by (import hollight DIFF_ISCONST_END)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11364
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11365
lemma DIFF_ISCONST: "ALL (f::hollight.real => hollight.real) (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11366
   real_lt a b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11367
   (ALL x::hollight.real. real_le a x & real_le x b --> contl f x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11368
   (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11369
       real_lt a x & real_lt x b --> diffl f (real_of_num (0::nat)) x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11370
   (ALL x::hollight.real. real_le a x & real_le x b --> f x = f a)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11371
  by (import hollight DIFF_ISCONST)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11372
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11373
lemma DIFF_ISCONST_END_SIMPLE: "ALL (f::hollight.real => hollight.real) (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11374
   real_lt a b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11375
   (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11376
       real_le a x & real_le x b --> diffl f (real_of_num (0::nat)) x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11377
   f b = f a"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11378
  by (import hollight DIFF_ISCONST_END_SIMPLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11379
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11380
lemma DIFF_ISCONST_ALL: "ALL (x::hollight.real => hollight.real) (xa::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11381
   xb::hollight.real. All (diffl x (real_of_num (0::nat))) --> x xa = x xb"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11382
  by (import hollight DIFF_ISCONST_ALL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11383
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11384
lemma INTERVAL_ABS: "ALL (x::hollight.real) (z::hollight.real) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11385
   (real_le (real_sub x d) z & real_le z (real_add x d)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11386
   real_le (real_abs (real_sub z x)) d"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11387
  by (import hollight INTERVAL_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11388
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11389
lemma CONT_INJ_LEMMA: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11390
   (x::hollight.real) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11391
   real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11392
   (ALL z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11393
       real_le (real_abs (real_sub z x)) d --> g (f z) = z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11394
   (ALL z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11395
       real_le (real_abs (real_sub z x)) d --> contl f z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11396
   ~ (ALL z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11397
         real_le (real_abs (real_sub z x)) d --> real_le (f z) (f x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11398
  by (import hollight CONT_INJ_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11399
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11400
lemma CONT_INJ_LEMMA2: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11401
   (x::hollight.real) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11402
   real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11403
   (ALL z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11404
       real_le (real_abs (real_sub z x)) d --> g (f z) = z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11405
   (ALL z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11406
       real_le (real_abs (real_sub z x)) d --> contl f z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11407
   ~ (ALL z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11408
         real_le (real_abs (real_sub z x)) d --> real_le (f x) (f z))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11409
  by (import hollight CONT_INJ_LEMMA2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11410
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11411
lemma CONT_INJ_RANGE: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11412
   (x::hollight.real) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11413
   real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11414
   (ALL z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11415
       real_le (real_abs (real_sub z x)) d --> g (f z) = z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11416
   (ALL z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11417
       real_le (real_abs (real_sub z x)) d --> contl f z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11418
   (EX e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11419
       real_lt (real_of_num (0::nat)) e &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11420
       (ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11421
           real_le (real_abs (real_sub y (f x))) e -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11422
           (EX z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11423
               real_le (real_abs (real_sub z x)) d & f z = y)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11424
  by (import hollight CONT_INJ_RANGE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11425
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11426
lemma CONT_INVERSE: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11427
   (x::hollight.real) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11428
   real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11429
   (ALL z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11430
       real_le (real_abs (real_sub z x)) d --> g (f z) = z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11431
   (ALL z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11432
       real_le (real_abs (real_sub z x)) d --> contl f z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11433
   contl g (f x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11434
  by (import hollight CONT_INVERSE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11435
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11436
lemma DIFF_INVERSE: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11437
   (l::hollight.real) (x::hollight.real) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11438
   real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11439
   (ALL z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11440
       real_le (real_abs (real_sub z x)) d --> g (f z) = z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11441
   (ALL z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11442
       real_le (real_abs (real_sub z x)) d --> contl f z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11443
   diffl f l x & l ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11444
   diffl g (real_inv l) (f x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11445
  by (import hollight DIFF_INVERSE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11446
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11447
lemma DIFF_INVERSE_LT: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11448
   (l::hollight.real) (x::hollight.real) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11449
   real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11450
   (ALL z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11451
       real_lt (real_abs (real_sub z x)) d --> g (f z) = z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11452
   (ALL z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11453
       real_lt (real_abs (real_sub z x)) d --> contl f z) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11454
   diffl f l x & l ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11455
   diffl g (real_inv l) (f x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11456
  by (import hollight DIFF_INVERSE_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11457
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11458
lemma IVT_DERIVATIVE_0: "ALL (f::hollight.real => hollight.real) (f'::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11459
   (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11460
   real_le a b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11461
   (ALL x::hollight.real. real_le a x & real_le x b --> diffl f (f' x) x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11462
   hollight.real_gt (f' a) (real_of_num (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11463
   real_lt (f' b) (real_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11464
   (EX z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11465
       real_lt a z & real_lt z b & f' z = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11466
  by (import hollight IVT_DERIVATIVE_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11467
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11468
lemma IVT_DERIVATIVE_POS: "ALL (x::hollight.real => hollight.real) (xa::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11469
   (xb::hollight.real) (xc::hollight.real) xd::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11470
   real_le xb xc &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11471
   (ALL xd::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11472
       real_le xb xd & real_le xd xc --> diffl x (xa xd) xd) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11473
   hollight.real_gt (xa xb) xd & real_lt (xa xc) xd -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11474
   (EX z::hollight.real. real_lt xb z & real_lt z xc & xa z = xd)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11475
  by (import hollight IVT_DERIVATIVE_POS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11476
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11477
lemma IVT_DERIVATIVE_NEG: "ALL (x::hollight.real => hollight.real) (xa::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11478
   (xb::hollight.real) (xc::hollight.real) xd::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11479
   real_le xb xc &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11480
   (ALL xd::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11481
       real_le xb xd & real_le xd xc --> diffl x (xa xd) xd) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11482
   real_lt (xa xb) xd & hollight.real_gt (xa xc) xd -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11483
   (EX z::hollight.real. real_lt xb z & real_lt z xc & xa z = xd)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11484
  by (import hollight IVT_DERIVATIVE_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11485
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11486
lemma SEQ_CONT_UNIFORM: "ALL (s::nat => hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11487
   (f::hollight.real => hollight.real) x0::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11488
   (ALL e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11489
       real_lt (real_of_num (0::nat)) e -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11490
       (EX (N::nat) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11491
           real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11492
           (ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11493
               real_lt (real_abs (real_sub x x0)) d & >= n N -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11494
               real_lt (real_abs (real_sub (s n x) (f x))) e))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11495
   (EX N::nat. ALL n::nat. >= n N --> contl (s n) x0) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11496
   contl f x0"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11497
  by (import hollight SEQ_CONT_UNIFORM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11498
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11499
lemma SER_COMPARA_UNIFORM: "ALL (s::hollight.real => nat => hollight.real) (x0::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11500
   g::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11501
   (EX (N::nat) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11502
       real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11503
       (ALL (n::nat) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11504
           real_lt (real_abs (real_sub x x0)) d & >= n N -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11505
           real_le (real_abs (s x n)) (g n))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11506
   summable g -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11507
   (EX (f::hollight.real => hollight.real) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11508
       real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11509
       (ALL e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11510
           real_lt (real_of_num (0::nat)) e -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11511
           (EX N::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11512
               ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11513
                  real_lt (real_abs (real_sub x x0)) d & >= n N -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11514
                  real_lt
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11515
                   (real_abs (real_sub (psum (0::nat, n) (s x)) (f x))) e)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11516
  by (import hollight SER_COMPARA_UNIFORM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11517
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11518
lemma SER_COMPARA_UNIFORM_WEAK: "ALL (s::hollight.real => nat => hollight.real) (x0::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11519
   g::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11520
   (EX (N::nat) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11521
       real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11522
       (ALL (n::nat) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11523
           real_lt (real_abs (real_sub x x0)) d & >= n N -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11524
           real_le (real_abs (s x n)) (g n))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11525
   summable g -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11526
   (EX f::hollight.real => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11527
       ALL e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11528
          real_lt (real_of_num (0::nat)) e -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11529
          (EX (N::nat) d::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11530
              real_lt (real_of_num (0::nat)) d &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11531
              (ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11532
                  real_lt (real_abs (real_sub x x0)) d & >= n N -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11533
                  real_lt
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11534
                   (real_abs (real_sub (psum (0::nat, n) (s x)) (f x))) e)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11535
  by (import hollight SER_COMPARA_UNIFORM_WEAK)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11536
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11537
lemma POWDIFF_LEMMA: "ALL (n::nat) (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11538
   psum (0::nat, Suc n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11539
    (%p::nat. real_mul (real_pow x p) (real_pow y (Suc n - p))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11540
   real_mul y
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11541
    (psum (0::nat, Suc n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11542
      (%p::nat. real_mul (real_pow x p) (real_pow y (n - p))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11543
  by (import hollight POWDIFF_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11544
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11545
lemma POWDIFF: "ALL (n::nat) (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11546
   real_sub (real_pow x (Suc n)) (real_pow y (Suc n)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11547
   real_mul (real_sub x y)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11548
    (psum (0::nat, Suc n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11549
      (%p::nat. real_mul (real_pow x p) (real_pow y (n - p))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11550
  by (import hollight POWDIFF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11551
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11552
lemma POWREV: "ALL (n::nat) (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11553
   psum (0::nat, Suc n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11554
    (%xa::nat. real_mul (real_pow x xa) (real_pow y (n - xa))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11555
   psum (0::nat, Suc n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11556
    (%xa::nat. real_mul (real_pow x (n - xa)) (real_pow y xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11557
  by (import hollight POWREV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11558
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11559
lemma POWSER_INSIDEA: "ALL (f::nat => hollight.real) (x::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11560
   summable (%n::nat. real_mul (f n) (real_pow x n)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11561
   real_lt (real_abs z) (real_abs x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11562
   summable (%n::nat. real_mul (real_abs (f n)) (real_pow z n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11563
  by (import hollight POWSER_INSIDEA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11564
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11565
lemma POWSER_INSIDE: "ALL (f::nat => hollight.real) (x::hollight.real) z::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11566
   summable (%n::nat. real_mul (f n) (real_pow x n)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11567
   real_lt (real_abs z) (real_abs x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11568
   summable (%n::nat. real_mul (f n) (real_pow z n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11569
  by (import hollight POWSER_INSIDE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11570
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11571
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11572
  diffs :: "(nat => hollight.real) => nat => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11573
  "diffs ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11574
%(u::nat => hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11575
   real_mul (real_of_num (Suc n)) (u (Suc n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11576
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11577
lemma DEF_diffs: "diffs =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11578
(%(u::nat => hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11579
    real_mul (real_of_num (Suc n)) (u (Suc n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11580
  by (import hollight DEF_diffs)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11581
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11582
lemma DIFFS_NEG: "ALL c::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11583
   diffs (%n::nat. real_neg (c n)) = (%x::nat. real_neg (diffs c x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11584
  by (import hollight DIFFS_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11585
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11586
lemma DIFFS_LEMMA: "ALL (n::nat) (c::nat => hollight.real) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11587
   psum (0::nat, n) (%n::nat. real_mul (diffs c n) (real_pow x n)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11588
   real_add
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11589
    (psum (0::nat, n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11590
      (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11591
          real_mul (real_of_num n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11592
           (real_mul (c n) (real_pow x (n - NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11593
    (real_mul (real_of_num n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11594
      (real_mul (c n) (real_pow x (n - NUMERAL_BIT1 (0::nat)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11595
  by (import hollight DIFFS_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11596
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11597
lemma DIFFS_LEMMA2: "ALL (n::nat) (c::nat => hollight.real) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11598
   psum (0::nat, n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11599
    (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11600
        real_mul (real_of_num n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11601
         (real_mul (c n) (real_pow x (n - NUMERAL_BIT1 (0::nat))))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11602
   real_sub
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11603
    (psum (0::nat, n) (%n::nat. real_mul (diffs c n) (real_pow x n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11604
    (real_mul (real_of_num n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11605
      (real_mul (c n) (real_pow x (n - NUMERAL_BIT1 (0::nat)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11606
  by (import hollight DIFFS_LEMMA2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11607
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11608
lemma DIFFS_EQUIV: "ALL (c::nat => hollight.real) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11609
   summable (%n::nat. real_mul (diffs c n) (real_pow x n)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11610
   sums
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11611
    (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11612
        real_mul (real_of_num n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11613
         (real_mul (c n) (real_pow x (n - NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11614
    (suminf (%n::nat. real_mul (diffs c n) (real_pow x n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11615
  by (import hollight DIFFS_EQUIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11616
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11617
lemma TERMDIFF_LEMMA1: "ALL (m::nat) (z::hollight.real) h::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11618
   psum (0::nat, m)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11619
    (%p::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11620
        real_sub (real_mul (real_pow (real_add z h) (m - p)) (real_pow z p))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11621
         (real_pow z m)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11622
   psum (0::nat, m)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11623
    (%p::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11624
        real_mul (real_pow z p)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11625
         (real_sub (real_pow (real_add z h) (m - p)) (real_pow z (m - p))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11626
  by (import hollight TERMDIFF_LEMMA1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11627
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11628
lemma TERMDIFF_LEMMA2: "ALL (z::hollight.real) h::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11629
   h ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11630
   real_sub
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11631
    (real_div (real_sub (real_pow (real_add z h) (n::nat)) (real_pow z n))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11632
      h)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11633
    (real_mul (real_of_num n) (real_pow z (n - NUMERAL_BIT1 (0::nat)))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11634
   real_mul h
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11635
    (psum (0::nat, n - NUMERAL_BIT1 (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11636
      (%p::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11637
          real_mul (real_pow z p)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11638
           (psum (0::nat, n - NUMERAL_BIT1 (0::nat) - p)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11639
             (%q::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11640
                 real_mul (real_pow (real_add z h) q)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11641
                  (real_pow z
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11642
                    (n - NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) - p - q))))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11643
  by (import hollight TERMDIFF_LEMMA2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11645
lemma TERMDIFF_LEMMA3: "ALL (z::hollight.real) (h::hollight.real) (n::nat) K::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11646
   h ~= real_of_num (0::nat) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11647
   real_le (real_abs z) K & real_le (real_abs (real_add z h)) K -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11648
   real_le
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11649
    (real_abs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11650
      (real_sub
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11651
        (real_div (real_sub (real_pow (real_add z h) n) (real_pow z n)) h)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11652
        (real_mul (real_of_num n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11653
          (real_pow z (n - NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11654
    (real_mul (real_of_num n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11655
      (real_mul (real_of_num (n - NUMERAL_BIT1 (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11656
        (real_mul (real_pow K (n - NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11657
          (real_abs h))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11658
  by (import hollight TERMDIFF_LEMMA3)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11659
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11660
lemma TERMDIFF_LEMMA4: "ALL (f::hollight.real => hollight.real) (K::hollight.real) k::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11661
   real_lt (real_of_num (0::nat)) k &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11662
   (ALL h::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11663
       real_lt (real_of_num (0::nat)) (real_abs h) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11664
       real_lt (real_abs h) k -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11665
       real_le (real_abs (f h)) (real_mul K (real_abs h))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11666
   tends_real_real f (real_of_num (0::nat)) (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11667
  by (import hollight TERMDIFF_LEMMA4)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11668
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11669
lemma TERMDIFF_LEMMA5: "ALL (f::nat => hollight.real) (g::hollight.real => nat => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11670
   k::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11671
   real_lt (real_of_num (0::nat)) k &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11672
   summable f &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11673
   (ALL h::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11674
       real_lt (real_of_num (0::nat)) (real_abs h) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11675
       real_lt (real_abs h) k -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11676
       (ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11677
           real_le (real_abs (g h n)) (real_mul (f n) (real_abs h)))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11678
   tends_real_real (%h::hollight.real. suminf (g h)) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11679
    (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11680
  by (import hollight TERMDIFF_LEMMA5)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11681
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11682
lemma TERMDIFF: "ALL (c::nat => hollight.real) K::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11683
   summable (%n::nat. real_mul (c n) (real_pow K n)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11684
   summable (%n::nat. real_mul (diffs c n) (real_pow K n)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11685
   summable (%n::nat. real_mul (diffs (diffs c) n) (real_pow K n)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11686
   real_lt (real_abs (x::hollight.real)) (real_abs K) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11687
   diffl
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11688
    (%x::hollight.real. suminf (%n::nat. real_mul (c n) (real_pow x n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11689
    (suminf (%n::nat. real_mul (diffs c n) (real_pow x n))) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11690
  by (import hollight TERMDIFF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11691
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11692
lemma SEQ_NPOW: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11693
   real_lt (real_abs x) (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11694
   tends_num_real (%n::nat. real_mul (real_of_num n) (real_pow x n))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11695
    (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11696
  by (import hollight SEQ_NPOW)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11697
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11698
lemma TERMDIFF_CONVERGES: "ALL K::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11699
   (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11700
       real_lt (real_abs x) K -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11701
       summable
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11702
        (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11703
            real_mul ((c::nat => hollight.real) n) (real_pow x n))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11704
   (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11705
       real_lt (real_abs x) K -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11706
       summable (%n::nat. real_mul (diffs c n) (real_pow x n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11707
  by (import hollight TERMDIFF_CONVERGES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11708
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11709
lemma TERMDIFF_STRONG: "ALL (c::nat => hollight.real) (K::hollight.real) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11710
   summable (%n::nat. real_mul (c n) (real_pow K n)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11711
   real_lt (real_abs x) (real_abs K) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11712
   diffl
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11713
    (%x::hollight.real. suminf (%n::nat. real_mul (c n) (real_pow x n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11714
    (suminf (%n::nat. real_mul (diffs c n) (real_pow x n))) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11715
  by (import hollight TERMDIFF_STRONG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11716
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11717
lemma POWSER_0: "ALL a::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11718
   sums (%n::nat. real_mul (a n) (real_pow (real_of_num (0::nat)) n))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11719
    (a (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11720
  by (import hollight POWSER_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11721
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11722
lemma POWSER_LIMIT_0: "ALL (f::hollight.real => hollight.real) (a::nat => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11723
   s::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11724
   real_lt (real_of_num (0::nat)) s &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11725
   (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11726
       real_lt (real_abs x) s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11727
       sums (%n::nat. real_mul (a n) (real_pow x n)) (f x)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11728
   tends_real_real f (a (0::nat)) (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11729
  by (import hollight POWSER_LIMIT_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11730
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11731
lemma POWSER_LIMIT_0_STRONG: "ALL (f::hollight.real => hollight.real) (a::nat => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11732
   s::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11733
   real_lt (real_of_num (0::nat)) s &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11734
   (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11735
       real_lt (real_of_num (0::nat)) (real_abs x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11736
       real_lt (real_abs x) s -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11737
       sums (%n::nat. real_mul (a n) (real_pow x n)) (f x)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11738
   tends_real_real f (a (0::nat)) (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11739
  by (import hollight POWSER_LIMIT_0_STRONG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11740
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11741
lemma POWSER_EQUAL_0: "ALL (f::hollight.real => hollight.real) (a::nat => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11742
   (b::nat => hollight.real) P::hollight.real => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11743
   (ALL e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11744
       real_lt (real_of_num (0::nat)) e -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11745
       (EX x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11746
           P x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11747
           real_lt (real_of_num (0::nat)) (real_abs x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11748
           real_lt (real_abs x) e)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11749
   (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11750
       real_lt (real_of_num (0::nat)) (real_abs x) & P x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11751
       sums (%n::nat. real_mul (a n) (real_pow x n)) (f x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11752
       sums (%n::nat. real_mul (b n) (real_pow x n)) (f x)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11753
   a (0::nat) = b (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11754
  by (import hollight POWSER_EQUAL_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11755
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11756
lemma POWSER_EQUAL: "ALL (f::hollight.real => hollight.real) (a::nat => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11757
   (b::nat => hollight.real) P::hollight.real => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11758
   (ALL e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11759
       real_lt (real_of_num (0::nat)) e -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11760
       (EX x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11761
           P x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11762
           real_lt (real_of_num (0::nat)) (real_abs x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11763
           real_lt (real_abs x) e)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11764
   (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11765
       P x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11766
       sums (%n::nat. real_mul (a n) (real_pow x n)) (f x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11767
       sums (%n::nat. real_mul (b n) (real_pow x n)) (f x)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11768
   a = b"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11769
  by (import hollight POWSER_EQUAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11770
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11771
lemma MULT_DIV_2: "ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11772
   DIV (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11773
    (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11774
   n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11775
  by (import hollight MULT_DIV_2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11776
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11777
lemma EVEN_DIV2: "ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11778
   ~ EVEN n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11779
   DIV (Suc n) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11780
   Suc (DIV (n - NUMERAL_BIT1 (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11781
         (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11782
  by (import hollight EVEN_DIV2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11783
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11784
lemma POW_ZERO: "ALL (n::nat) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11785
   real_pow x n = real_of_num (0::nat) --> x = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11786
  by (import hollight POW_ZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11787
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11788
lemma POW_ZERO_EQ: "ALL (n::nat) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11789
   (real_pow x (Suc n) = real_of_num (0::nat)) = (x = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11790
  by (import hollight POW_ZERO_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11791
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11792
lemma POW_LT: "ALL (n::nat) (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11793
   real_le (real_of_num (0::nat)) x & real_lt x y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11794
   real_lt (real_pow x (Suc n)) (real_pow y (Suc n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11795
  by (import hollight POW_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11796
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11797
lemma POW_EQ: "ALL (n::nat) (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11798
   real_le (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11799
   real_le (real_of_num (0::nat)) y &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11800
   real_pow x (Suc n) = real_pow y (Suc n) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11801
   x = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11802
  by (import hollight POW_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11803
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11804
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11805
  exp :: "hollight.real => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11806
  "exp ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11807
%u::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11808
   suminf
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11809
    (%n::nat. real_mul (real_inv (real_of_num (FACT n))) (real_pow u n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11810
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11811
lemma DEF_exp: "exp =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11812
(%u::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11813
    suminf
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11814
     (%n::nat. real_mul (real_inv (real_of_num (FACT n))) (real_pow u n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11815
  by (import hollight DEF_exp)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11816
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11817
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11818
  sin :: "hollight.real => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11819
  "sin ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11820
%u::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11821
   suminf
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11822
    (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11823
        real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11824
         (COND (EVEN n) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11825
           (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11826
             (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11827
               (DIV (n - NUMERAL_BIT1 (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11828
                 (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11829
             (real_of_num (FACT n))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11830
         (real_pow u n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11831
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11832
lemma DEF_sin: "sin =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11833
(%u::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11834
    suminf
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11835
     (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11836
         real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11837
          (COND (EVEN n) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11838
            (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11839
              (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11840
                (DIV (n - NUMERAL_BIT1 (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11841
                  (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11842
              (real_of_num (FACT n))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11843
          (real_pow u n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11844
  by (import hollight DEF_sin)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11845
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11846
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11847
  cos :: "hollight.real => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11848
  "cos ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11849
%u::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11850
   suminf
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11851
    (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11852
        real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11853
         (COND (EVEN n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11854
           (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11855
             (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11856
               (DIV n (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11857
             (real_of_num (FACT n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11858
           (real_of_num (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11859
         (real_pow u n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11860
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11861
lemma DEF_cos: "cos =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11862
(%u::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11863
    suminf
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11864
     (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11865
         real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11866
          (COND (EVEN n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11867
            (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11868
              (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11869
                (DIV n (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11870
              (real_of_num (FACT n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11871
            (real_of_num (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11872
          (real_pow u n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11873
  by (import hollight DEF_cos)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11874
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11875
lemma REAL_EXP_CONVERGES: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11876
   sums (%n::nat. real_mul (real_inv (real_of_num (FACT n))) (real_pow x n))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11877
    (exp x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11878
  by (import hollight REAL_EXP_CONVERGES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11879
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11880
lemma SIN_CONVERGES: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11881
   sums
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11882
    (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11883
        real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11884
         (COND (EVEN n) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11885
           (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11886
             (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11887
               (DIV (n - NUMERAL_BIT1 (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11888
                 (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11889
             (real_of_num (FACT n))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11890
         (real_pow x n))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11891
    (sin x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11892
  by (import hollight SIN_CONVERGES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11893
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11894
lemma COS_CONVERGES: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11895
   sums
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11896
    (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11897
        real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11898
         (COND (EVEN n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11899
           (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11900
             (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11901
               (DIV n (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11902
             (real_of_num (FACT n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11903
           (real_of_num (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11904
         (real_pow x n))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11905
    (cos x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11906
  by (import hollight COS_CONVERGES)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11907
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11908
lemma REAL_EXP_FDIFF: "diffs (%n::nat. real_inv (real_of_num (FACT n))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11909
(%n::nat. real_inv (real_of_num (FACT n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11910
  by (import hollight REAL_EXP_FDIFF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11911
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11912
lemma SIN_FDIFF: "diffs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11913
 (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11914
     COND (EVEN n) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11915
      (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11916
        (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11917
          (DIV (n - NUMERAL_BIT1 (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11918
            (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11919
        (real_of_num (FACT n)))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11920
(%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11921
    COND (EVEN n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11922
     (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11923
       (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11924
         (DIV n (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11925
       (real_of_num (FACT n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11926
     (real_of_num (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11927
  by (import hollight SIN_FDIFF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11928
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11929
lemma COS_FDIFF: "diffs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11930
 (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11931
     COND (EVEN n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11932
      (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11933
        (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11934
          (DIV n (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11935
        (real_of_num (FACT n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11936
      (real_of_num (0::nat))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11937
(%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11938
    real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11939
     (COND (EVEN n) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11940
       (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11941
         (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11942
           (DIV (n - NUMERAL_BIT1 (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11943
             (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11944
         (real_of_num (FACT n)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11945
  by (import hollight COS_FDIFF)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11946
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11947
lemma SIN_NEGLEMMA: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11948
   real_neg (sin x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11949
   suminf
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11950
    (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11951
        real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11952
         (real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11953
           (COND (EVEN n) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11954
             (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11955
               (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11956
                 (DIV (n - NUMERAL_BIT1 (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11957
                   (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11958
               (real_of_num (FACT n))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11959
           (real_pow x n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11960
  by (import hollight SIN_NEGLEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11961
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11962
lemma DIFF_EXP: "ALL x::hollight.real. diffl exp (exp x) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11963
  by (import hollight DIFF_EXP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11964
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11965
lemma DIFF_SIN: "ALL x::hollight.real. diffl sin (cos x) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11966
  by (import hollight DIFF_SIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11967
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11968
lemma DIFF_COS: "ALL x::hollight.real. diffl cos (real_neg (sin x)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11969
  by (import hollight DIFF_COS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11970
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11971
lemma DIFF_COMPOSITE: "(diffl (f::hollight.real => hollight.real) (l::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11972
  (x::hollight.real) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11973
 f x ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11974
 diffl (%x::hollight.real. real_inv (f x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11975
  (real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11976
    (real_div l (real_pow (f x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11977
  x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11978
(diffl f l x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11979
 diffl (g::hollight.real => hollight.real) (m::hollight.real) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11980
 g x ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11981
 diffl (%x::hollight.real. real_div (f x) (g x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11982
  (real_div (real_sub (real_mul l (g x)) (real_mul m (f x)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11983
    (real_pow (g x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11984
  x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11985
(diffl f l x & diffl g m x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11986
 diffl (%x::hollight.real. real_add (f x) (g x)) (real_add l m) x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11987
(diffl f l x & diffl g m x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11988
 diffl (%x::hollight.real. real_mul (f x) (g x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11989
  (real_add (real_mul l (g x)) (real_mul m (f x))) x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11990
(diffl f l x & diffl g m x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11991
 diffl (%x::hollight.real. real_sub (f x) (g x)) (real_sub l m) x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11992
(diffl f l x --> diffl (%x::hollight.real. real_neg (f x)) (real_neg l) x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11993
(diffl g m x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11994
 diffl (%x::hollight.real. real_pow (g x) (n::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11995
  (real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11996
    (real_mul (real_of_num n) (real_pow (g x) (n - NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11997
    m)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11998
  x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 11999
(diffl g m x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12000
 diffl (%x::hollight.real. exp (g x)) (real_mul (exp (g x)) m) x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12001
(diffl g m x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12002
 diffl (%x::hollight.real. sin (g x)) (real_mul (cos (g x)) m) x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12003
(diffl g m x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12004
 diffl (%x::hollight.real. cos (g x)) (real_mul (real_neg (sin (g x))) m) x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12005
  by (import hollight DIFF_COMPOSITE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12006
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12007
lemma REAL_EXP_0: "exp (real_of_num (0::nat)) = real_of_num (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12008
  by (import hollight REAL_EXP_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12009
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12010
lemma REAL_EXP_LE_X: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12011
   real_le (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12012
   real_le (real_add (real_of_num (NUMERAL_BIT1 (0::nat))) x) (exp x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12013
  by (import hollight REAL_EXP_LE_X)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12014
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12015
lemma REAL_EXP_LT_1: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12016
   real_lt (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12017
   real_lt (real_of_num (NUMERAL_BIT1 (0::nat))) (exp x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12018
  by (import hollight REAL_EXP_LT_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12019
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12020
lemma REAL_EXP_ADD_MUL: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12021
   real_mul (exp (real_add x y)) (exp (real_neg x)) = exp y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12022
  by (import hollight REAL_EXP_ADD_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12023
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12024
lemma REAL_EXP_NEG_MUL: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12025
   real_mul (exp x) (exp (real_neg x)) = real_of_num (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12026
  by (import hollight REAL_EXP_NEG_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12027
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12028
lemma REAL_EXP_NEG_MUL2: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12029
   real_mul (exp (real_neg x)) (exp x) = real_of_num (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12030
  by (import hollight REAL_EXP_NEG_MUL2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12031
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12032
lemma REAL_EXP_NEG: "ALL x::hollight.real. exp (real_neg x) = real_inv (exp x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12033
  by (import hollight REAL_EXP_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12034
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12035
lemma REAL_EXP_ADD: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12036
   exp (real_add x y) = real_mul (exp x) (exp y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12037
  by (import hollight REAL_EXP_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12038
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12039
lemma REAL_EXP_POS_LE: "ALL x::hollight.real. real_le (real_of_num (0::nat)) (exp x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12040
  by (import hollight REAL_EXP_POS_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12041
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12042
lemma REAL_EXP_NZ: "ALL x::hollight.real. exp x ~= real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12043
  by (import hollight REAL_EXP_NZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12044
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12045
lemma REAL_EXP_POS_LT: "ALL x::hollight.real. real_lt (real_of_num (0::nat)) (exp x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12046
  by (import hollight REAL_EXP_POS_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12047
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12048
lemma REAL_EXP_N: "ALL (n::nat) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12049
   exp (real_mul (real_of_num n) x) = real_pow (exp x) n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12050
  by (import hollight REAL_EXP_N)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12051
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12052
lemma REAL_EXP_SUB: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12053
   exp (real_sub x y) = real_div (exp x) (exp y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12054
  by (import hollight REAL_EXP_SUB)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12055
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12056
lemma REAL_EXP_MONO_IMP: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12057
   real_lt x y --> real_lt (exp x) (exp y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12058
  by (import hollight REAL_EXP_MONO_IMP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12059
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12060
lemma REAL_EXP_MONO_LT: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12061
   real_lt (exp x) (exp y) = real_lt x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12062
  by (import hollight REAL_EXP_MONO_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12063
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12064
lemma REAL_EXP_MONO_LE: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12065
   real_le (exp x) (exp y) = real_le x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12066
  by (import hollight REAL_EXP_MONO_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12067
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12068
lemma REAL_EXP_INJ: "ALL (x::hollight.real) y::hollight.real. (exp x = exp y) = (x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12069
  by (import hollight REAL_EXP_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12070
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12071
lemma REAL_EXP_TOTAL_LEMMA: "ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12072
   real_le (real_of_num (NUMERAL_BIT1 (0::nat))) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12073
   (EX x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12074
       real_le (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12075
       real_le x (real_sub y (real_of_num (NUMERAL_BIT1 (0::nat)))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12076
       exp x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12077
  by (import hollight REAL_EXP_TOTAL_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12078
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12079
lemma REAL_EXP_TOTAL: "ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12080
   real_lt (real_of_num (0::nat)) y --> (EX x::hollight.real. exp x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12081
  by (import hollight REAL_EXP_TOTAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12082
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12083
lemma REAL_EXP_BOUND_LEMMA: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12084
   real_le (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12085
   real_le x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12086
    (real_inv (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12087
   real_le (exp x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12088
    (real_add (real_of_num (NUMERAL_BIT1 (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12089
      (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12090
  by (import hollight REAL_EXP_BOUND_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12091
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12092
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12093
  ln :: "hollight.real => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12094
  "ln == %u::hollight.real. SOME ua::hollight.real. exp ua = u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12095
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12096
lemma DEF_ln: "ln = (%u::hollight.real. SOME ua::hollight.real. exp ua = u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12097
  by (import hollight DEF_ln)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12098
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12099
lemma LN_EXP: "ALL x::hollight.real. ln (exp x) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12100
  by (import hollight LN_EXP)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12101
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12102
lemma REAL_EXP_LN: "ALL x::hollight.real. (exp (ln x) = x) = real_lt (real_of_num (0::nat)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12103
  by (import hollight REAL_EXP_LN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12104
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12105
lemma LN_MUL: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12106
   real_lt (real_of_num (0::nat)) x & real_lt (real_of_num (0::nat)) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12107
   ln (real_mul x y) = real_add (ln x) (ln y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12108
  by (import hollight LN_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12109
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12110
lemma LN_INJ: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12111
   real_lt (real_of_num (0::nat)) x & real_lt (real_of_num (0::nat)) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12112
   (ln x = ln y) = (x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12113
  by (import hollight LN_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12114
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12115
lemma LN_1: "ln (real_of_num (NUMERAL_BIT1 (0::nat))) = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12116
  by (import hollight LN_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12117
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12118
lemma LN_INV: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12119
   real_lt (real_of_num (0::nat)) x --> ln (real_inv x) = real_neg (ln x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12120
  by (import hollight LN_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12121
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12122
lemma LN_DIV: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12123
   real_lt (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12124
   real_lt (real_of_num (0::nat)) (y::hollight.real) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12125
   ln (real_div x y) = real_sub (ln x) (ln y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12126
  by (import hollight LN_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12127
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12128
lemma LN_MONO_LT: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12129
   real_lt (real_of_num (0::nat)) x & real_lt (real_of_num (0::nat)) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12130
   real_lt (ln x) (ln y) = real_lt x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12131
  by (import hollight LN_MONO_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12132
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12133
lemma LN_MONO_LE: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12134
   real_lt (real_of_num (0::nat)) x & real_lt (real_of_num (0::nat)) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12135
   real_le (ln x) (ln y) = real_le x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12136
  by (import hollight LN_MONO_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12137
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12138
lemma LN_POW: "ALL (n::nat) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12139
   real_lt (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12140
   ln (real_pow x n) = real_mul (real_of_num n) (ln x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12141
  by (import hollight LN_POW)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12142
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12143
lemma LN_LE: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12144
   real_le (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12145
   real_le (ln (real_add (real_of_num (NUMERAL_BIT1 (0::nat))) x)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12146
  by (import hollight LN_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12147
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12148
lemma LN_LT_X: "ALL x::hollight.real. real_lt (real_of_num (0::nat)) x --> real_lt (ln x) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12149
  by (import hollight LN_LT_X)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12150
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12151
lemma LN_POS: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12152
   real_le (real_of_num (NUMERAL_BIT1 (0::nat))) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12153
   real_le (real_of_num (0::nat)) (ln x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12154
  by (import hollight LN_POS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12155
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12156
lemma LN_POS_LT: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12157
   real_lt (real_of_num (NUMERAL_BIT1 (0::nat))) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12158
   real_lt (real_of_num (0::nat)) (ln x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12159
  by (import hollight LN_POS_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12160
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12161
lemma DIFF_LN: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12162
   real_lt (real_of_num (0::nat)) x --> diffl ln (real_inv x) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12163
  by (import hollight DIFF_LN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12164
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12165
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12166
  root :: "nat => hollight.real => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12167
  "root ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12168
%(u::nat) ua::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12169
   SOME ub::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12170
      (real_lt (real_of_num (0::nat)) ua -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12171
       real_lt (real_of_num (0::nat)) ub) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12172
      real_pow ub u = ua"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12173
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12174
lemma DEF_root: "root =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12175
(%(u::nat) ua::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12176
    SOME ub::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12177
       (real_lt (real_of_num (0::nat)) ua -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12178
        real_lt (real_of_num (0::nat)) ub) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12179
       real_pow ub u = ua)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12180
  by (import hollight DEF_root)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12181
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12182
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12183
  sqrt :: "hollight.real => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12184
  "sqrt ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12185
%u::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12186
   SOME y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12187
      real_le (real_of_num (0::nat)) y &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12188
      real_pow y (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12189
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12190
lemma DEF_sqrt: "sqrt =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12191
(%u::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12192
    SOME y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12193
       real_le (real_of_num (0::nat)) y &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12194
       real_pow y (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12195
  by (import hollight DEF_sqrt)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12196
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12197
lemma sqrt: "sqrt (x::hollight.real) = root (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12198
  by (import hollight sqrt)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12199
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12200
lemma ROOT_LT_LEMMA: "ALL (n::nat) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12201
   real_lt (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12202
   real_pow (exp (real_div (ln x) (real_of_num (Suc n)))) (Suc n) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12203
  by (import hollight ROOT_LT_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12204
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12205
lemma ROOT_LN: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12206
   real_lt (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12207
   (ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12208
       root (Suc n) x = exp (real_div (ln x) (real_of_num (Suc n))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12209
  by (import hollight ROOT_LN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12210
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12211
lemma ROOT_0: "ALL n::nat. root (Suc n) (real_of_num (0::nat)) = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12212
  by (import hollight ROOT_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12213
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12214
lemma ROOT_1: "ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12215
   root (Suc n) (real_of_num (NUMERAL_BIT1 (0::nat))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12216
   real_of_num (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12217
  by (import hollight ROOT_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12218
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12219
lemma ROOT_POW_POS: "ALL (n::nat) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12220
   real_le (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12221
   real_pow (root (Suc n) x) (Suc n) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12222
  by (import hollight ROOT_POW_POS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12223
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12224
lemma POW_ROOT_POS: "ALL (n::nat) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12225
   real_le (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12226
   root (Suc n) (real_pow x (Suc n)) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12227
  by (import hollight POW_ROOT_POS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12228
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12229
lemma ROOT_POS_POSITIVE: "ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12230
   real_le (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12231
   real_le (real_of_num (0::nat)) (root (Suc n) x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12232
  by (import hollight ROOT_POS_POSITIVE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12233
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12234
lemma ROOT_POS_UNIQ: "ALL (n::nat) (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12235
   real_le (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12236
   real_le (real_of_num (0::nat)) y & real_pow y (Suc n) = x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12237
   root (Suc n) x = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12238
  by (import hollight ROOT_POS_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12239
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12240
lemma ROOT_MUL: "ALL (n::nat) (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12241
   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12242
   root (Suc n) (real_mul x y) = real_mul (root (Suc n) x) (root (Suc n) y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12243
  by (import hollight ROOT_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12244
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12245
lemma ROOT_INV: "ALL (n::nat) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12246
   real_le (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12247
   root (Suc n) (real_inv x) = real_inv (root (Suc n) x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12248
  by (import hollight ROOT_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12249
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12250
lemma ROOT_DIV: "ALL (x::nat) (xa::hollight.real) xb::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12251
   real_le (real_of_num (0::nat)) xa & real_le (real_of_num (0::nat)) xb -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12252
   root (Suc x) (real_div xa xb) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12253
   real_div (root (Suc x) xa) (root (Suc x) xb)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12254
  by (import hollight ROOT_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12255
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12256
lemma ROOT_MONO_LT: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12257
   real_le (real_of_num (0::nat)) x & real_lt x y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12258
   real_lt (root (Suc (n::nat)) x) (root (Suc n) y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12259
  by (import hollight ROOT_MONO_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12260
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12261
lemma ROOT_MONO_LE: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12262
   real_le (real_of_num (0::nat)) x & real_le x y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12263
   real_le (root (Suc (n::nat)) x) (root (Suc n) y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12264
  by (import hollight ROOT_MONO_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12265
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12266
lemma ROOT_MONO_LT_EQ: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12267
   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12268
   real_lt (root (Suc (n::nat)) x) (root (Suc n) y) = real_lt x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12269
  by (import hollight ROOT_MONO_LT_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12270
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12271
lemma ROOT_MONO_LE_EQ: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12272
   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12273
   real_le (root (Suc (n::nat)) x) (root (Suc n) y) = real_le x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12274
  by (import hollight ROOT_MONO_LE_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12275
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12276
lemma ROOT_INJ: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12277
   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12278
   (root (Suc (n::nat)) x = root (Suc n) xa) = (x = xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12279
  by (import hollight ROOT_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12280
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12281
lemma SQRT_0: "sqrt (real_of_num (0::nat)) = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12282
  by (import hollight SQRT_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12283
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12284
lemma SQRT_1: "sqrt (real_of_num (NUMERAL_BIT1 (0::nat))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12285
real_of_num (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12286
  by (import hollight SQRT_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12287
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12288
lemma SQRT_POS_LT: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12289
   real_lt (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12290
   real_lt (real_of_num (0::nat)) (sqrt x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12291
  by (import hollight SQRT_POS_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12292
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12293
lemma SQRT_POS_LE: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12294
   real_le (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12295
   real_le (real_of_num (0::nat)) (sqrt x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12296
  by (import hollight SQRT_POS_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12297
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12298
lemma SQRT_POW2: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12299
   (real_pow (sqrt x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12300
   real_le (real_of_num (0::nat)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12301
  by (import hollight SQRT_POW2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12302
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12303
lemma SQRT_POW_2: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12304
   real_le (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12305
   real_pow (sqrt x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12306
  by (import hollight SQRT_POW_2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12307
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12308
lemma POW_2_SQRT: "real_le (real_of_num (0::nat)) (x::hollight.real) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12309
sqrt (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12310
  by (import hollight POW_2_SQRT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12311
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12312
lemma SQRT_POS_UNIQ: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12313
   real_le (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12314
   real_le (real_of_num (0::nat)) xa &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12315
   real_pow xa (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12316
   sqrt x = xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12317
  by (import hollight SQRT_POS_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12318
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12319
lemma SQRT_MUL: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12320
   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12321
   sqrt (real_mul x xa) = real_mul (sqrt x) (sqrt xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12322
  by (import hollight SQRT_MUL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12323
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12324
lemma SQRT_INV: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12325
   real_le (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12326
   sqrt (real_inv x) = real_inv (sqrt x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12327
  by (import hollight SQRT_INV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12328
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12329
lemma SQRT_DIV: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12330
   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12331
   sqrt (real_div x xa) = real_div (sqrt x) (sqrt xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12332
  by (import hollight SQRT_DIV)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12333
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12334
lemma SQRT_MONO_LT: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12335
   real_le (real_of_num (0::nat)) x & real_lt x xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12336
   real_lt (sqrt x) (sqrt xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12337
  by (import hollight SQRT_MONO_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12338
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12339
lemma SQRT_MONO_LE: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12340
   real_le (real_of_num (0::nat)) x & real_le x xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12341
   real_le (sqrt x) (sqrt xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12342
  by (import hollight SQRT_MONO_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12343
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12344
lemma SQRT_MONO_LT_EQ: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12345
   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12346
   real_lt (sqrt x) (sqrt xa) = real_lt x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12347
  by (import hollight SQRT_MONO_LT_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12348
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12349
lemma SQRT_MONO_LE_EQ: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12350
   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12351
   real_le (sqrt x) (sqrt xa) = real_le x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12352
  by (import hollight SQRT_MONO_LE_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12353
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12354
lemma SQRT_INJ: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12355
   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) xa -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12356
   (sqrt x = sqrt xa) = (x = xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12357
  by (import hollight SQRT_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12358
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12359
lemma SQRT_EVEN_POW2: "ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12360
   EVEN n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12361
   sqrt (real_pow (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12362
   real_pow (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12363
    (DIV n (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12364
  by (import hollight SQRT_EVEN_POW2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12365
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12366
lemma REAL_DIV_SQRT: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12367
   real_le (real_of_num (0::nat)) x --> real_div x (sqrt x) = sqrt x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12368
  by (import hollight REAL_DIV_SQRT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12369
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12370
lemma POW_2_SQRT_ABS: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12371
   sqrt (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) = real_abs x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12372
  by (import hollight POW_2_SQRT_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12373
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12374
lemma SQRT_EQ_0: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12375
   real_le (real_of_num (0::nat)) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12376
   (sqrt x = real_of_num (0::nat)) = (x = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12377
  by (import hollight SQRT_EQ_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12378
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12379
lemma REAL_LE_LSQRT: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12380
   real_le (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12381
   real_le (real_of_num (0::nat)) y &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12382
   real_le x (real_pow y (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12383
   real_le (sqrt x) y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12384
  by (import hollight REAL_LE_LSQRT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12385
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12386
lemma REAL_LE_POW_2: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12387
   real_le (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12388
    (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12389
  by (import hollight REAL_LE_POW_2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12390
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12391
lemma REAL_LE_RSQRT: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12392
   real_le (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12393
   real_le x (sqrt y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12394
  by (import hollight REAL_LE_RSQRT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12395
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12396
lemma SIN_0: "sin (real_of_num (0::nat)) = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12397
  by (import hollight SIN_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12398
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12399
lemma COS_0: "cos (real_of_num (0::nat)) = real_of_num (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12400
  by (import hollight COS_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12401
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12402
lemma SIN_CIRCLE: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12403
   real_add (real_pow (sin x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12404
    (real_pow (cos x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12405
   real_of_num (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12406
  by (import hollight SIN_CIRCLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12407
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12408
lemma SIN_BOUND: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12409
   real_le (real_abs (sin x)) (real_of_num (NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12410
  by (import hollight SIN_BOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12411
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12412
lemma SIN_BOUNDS: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12413
   real_le (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) (sin x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12414
   real_le (sin x) (real_of_num (NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12415
  by (import hollight SIN_BOUNDS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12416
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12417
lemma COS_BOUND: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12418
   real_le (real_abs (cos x)) (real_of_num (NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12419
  by (import hollight COS_BOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12420
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12421
lemma COS_BOUNDS: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12422
   real_le (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) (cos x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12423
   real_le (cos x) (real_of_num (NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12424
  by (import hollight COS_BOUNDS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12425
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12426
lemma SIN_COS_ADD: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12427
   real_add
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12428
    (real_pow
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12429
      (real_sub (sin (real_add x y))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12430
        (real_add (real_mul (sin x) (cos y)) (real_mul (cos x) (sin y))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12431
      (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12432
    (real_pow
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12433
      (real_sub (cos (real_add x y))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12434
        (real_sub (real_mul (cos x) (cos y)) (real_mul (sin x) (sin y))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12435
      (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12436
   real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12437
  by (import hollight SIN_COS_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12438
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12439
lemma SIN_COS_NEG: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12440
   real_add
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12441
    (real_pow (real_add (sin (real_neg x)) (sin x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12442
      (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12443
    (real_pow (real_sub (cos (real_neg x)) (cos x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12444
      (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12445
   real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12446
  by (import hollight SIN_COS_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12447
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12448
lemma SIN_ADD: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12449
   sin (real_add x y) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12450
   real_add (real_mul (sin x) (cos y)) (real_mul (cos x) (sin y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12451
  by (import hollight SIN_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12452
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12453
lemma COS_ADD: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12454
   cos (real_add x y) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12455
   real_sub (real_mul (cos x) (cos y)) (real_mul (sin x) (sin y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12456
  by (import hollight COS_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12457
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12458
lemma SIN_NEG: "ALL x::hollight.real. sin (real_neg x) = real_neg (sin x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12459
  by (import hollight SIN_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12460
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12461
lemma COS_NEG: "ALL x::hollight.real. cos (real_neg x) = cos x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12462
  by (import hollight COS_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12463
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12464
lemma SIN_DOUBLE: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12465
   sin (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12466
   real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12467
    (real_mul (sin x) (cos x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12468
  by (import hollight SIN_DOUBLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12469
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12470
lemma COS_DOUBLE: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12471
   cos (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12472
   real_sub (real_pow (cos x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12473
    (real_pow (sin x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12474
  by (import hollight COS_DOUBLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12475
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12476
lemma COS_ABS: "ALL x::hollight.real. cos (real_abs x) = cos x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12477
  by (import hollight COS_ABS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12478
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12479
lemma SIN_PAIRED: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12480
   sums
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12481
    (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12482
        real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12483
         (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12484
           (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12485
           (real_of_num
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12486
             (FACT
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12487
               (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * n +
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12488
                NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12489
         (real_pow x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12490
           (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * n +
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12491
            NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12492
    (sin x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12493
  by (import hollight SIN_PAIRED)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12494
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12495
lemma SIN_POS: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12496
   real_lt (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12497
   real_lt x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12498
   real_lt (real_of_num (0::nat)) (sin x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12499
  by (import hollight SIN_POS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12500
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12501
lemma COS_PAIRED: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12502
   sums
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12503
    (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12504
        real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12505
         (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12506
           (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12507
           (real_of_num (FACT (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * n))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12508
         (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12509
    (cos x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12510
  by (import hollight COS_PAIRED)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12511
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12512
lemma COS_2: "real_lt (cos (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12513
 (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12514
  by (import hollight COS_2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12515
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12516
lemma COS_ISZERO: "EX! x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12517
   real_le (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12518
   real_le x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12519
   cos x = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12520
  by (import hollight COS_ISZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12521
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12522
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12523
  pi :: "hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12524
  "pi ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12525
real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12526
 (SOME x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12527
     real_le (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12528
     real_le x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12529
     cos x = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12530
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12531
lemma DEF_pi: "pi =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12532
real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12533
 (SOME x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12534
     real_le (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12535
     real_le x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12536
     cos x = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12537
  by (import hollight DEF_pi)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12538
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12539
lemma PI2: "real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12540
(SOME x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12541
    real_le (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12542
    real_le x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12543
    cos x = real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12544
  by (import hollight PI2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12545
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12546
lemma COS_PI2: "cos (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12547
real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12548
  by (import hollight COS_PI2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12549
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12550
lemma PI2_BOUNDS: "real_lt (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12551
 (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12552
real_lt (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12553
 (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12554
  by (import hollight PI2_BOUNDS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12555
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12556
lemma PI_POS: "real_lt (real_of_num (0::nat)) pi"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12557
  by (import hollight PI_POS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12558
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12559
lemma SIN_PI2: "sin (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12560
real_of_num (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12561
  by (import hollight SIN_PI2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12562
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12563
lemma COS_PI: "cos pi = real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12564
  by (import hollight COS_PI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12565
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12566
lemma SIN_PI: "sin pi = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12567
  by (import hollight SIN_PI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12568
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12569
lemma SIN_COS: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12570
   sin x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12571
   cos (real_sub
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12572
         (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12573
         x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12574
  by (import hollight SIN_COS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12575
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12576
lemma COS_SIN: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12577
   cos x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12578
   sin (real_sub
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12579
         (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12580
         x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12581
  by (import hollight COS_SIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12582
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12583
lemma SIN_PERIODIC_PI: "ALL x::hollight.real. sin (real_add x pi) = real_neg (sin x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12584
  by (import hollight SIN_PERIODIC_PI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12585
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12586
lemma COS_PERIODIC_PI: "ALL x::hollight.real. cos (real_add x pi) = real_neg (cos x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12587
  by (import hollight COS_PERIODIC_PI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12588
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12589
lemma SIN_PERIODIC: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12590
   sin (real_add x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12591
         (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12592
           pi)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12593
   sin x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12594
  by (import hollight SIN_PERIODIC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12595
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12596
lemma COS_PERIODIC: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12597
   cos (real_add x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12598
         (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12599
           pi)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12600
   cos x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12601
  by (import hollight COS_PERIODIC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12602
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12603
lemma COS_NPI: "ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12604
   cos (real_mul (real_of_num n) pi) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12605
   real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12606
  by (import hollight COS_NPI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12607
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12608
lemma SIN_NPI: "ALL n::nat. sin (real_mul (real_of_num n) pi) = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12609
  by (import hollight SIN_NPI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12610
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12611
lemma SIN_POS_PI2: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12612
   real_lt (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12613
   real_lt x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12614
    (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12615
   real_lt (real_of_num (0::nat)) (sin x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12616
  by (import hollight SIN_POS_PI2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12617
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12618
lemma COS_POS_PI2: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12619
   real_lt (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12620
   real_lt x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12621
    (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12622
   real_lt (real_of_num (0::nat)) (cos x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12623
  by (import hollight COS_POS_PI2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12624
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12625
lemma COS_POS_PI: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12626
   real_lt
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12627
    (real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12628
      (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12629
    x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12630
   real_lt x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12631
    (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12632
   real_lt (real_of_num (0::nat)) (cos x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12633
  by (import hollight COS_POS_PI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12634
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12635
lemma SIN_POS_PI: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12636
   real_lt (real_of_num (0::nat)) x & real_lt x pi -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12637
   real_lt (real_of_num (0::nat)) (sin x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12638
  by (import hollight SIN_POS_PI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12639
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12640
lemma SIN_POS_PI_LE: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12641
   real_le (real_of_num (0::nat)) x & real_le x pi -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12642
   real_le (real_of_num (0::nat)) (sin x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12643
  by (import hollight SIN_POS_PI_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12644
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12645
lemma COS_TOTAL: "ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12646
   real_le (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) y &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12647
   real_le y (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12648
   (EX! x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12649
       real_le (real_of_num (0::nat)) x & real_le x pi & cos x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12650
  by (import hollight COS_TOTAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12651
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12652
lemma SIN_TOTAL: "ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12653
   real_le (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) y &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12654
   real_le y (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12655
   (EX! x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12656
       real_le
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12657
        (real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12658
          (real_div pi
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12659
            (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12660
        x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12661
       real_le x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12662
        (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12663
       sin x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12664
  by (import hollight SIN_TOTAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12665
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12666
lemma COS_ZERO_LEMMA: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12667
   real_le (real_of_num (0::nat)) x & cos x = real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12668
   (EX n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12669
       ~ EVEN n &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12670
       x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12671
       real_mul (real_of_num n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12672
        (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12673
  by (import hollight COS_ZERO_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12674
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12675
lemma SIN_ZERO_LEMMA: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12676
   real_le (real_of_num (0::nat)) x & sin x = real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12677
   (EX n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12678
       EVEN n &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12679
       x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12680
       real_mul (real_of_num n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12681
        (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12682
  by (import hollight SIN_ZERO_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12683
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12684
lemma COS_ZERO: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12685
   (cos x = real_of_num (0::nat)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12686
   ((EX n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12687
        ~ EVEN n &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12688
        x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12689
        real_mul (real_of_num n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12690
         (real_div pi
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12691
           (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))) |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12692
    (EX n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12693
        ~ EVEN n &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12694
        x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12695
        real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12696
         (real_mul (real_of_num n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12697
           (real_div pi
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12698
             (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12699
  by (import hollight COS_ZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12700
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12701
lemma SIN_ZERO: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12702
   (sin x = real_of_num (0::nat)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12703
   ((EX n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12704
        EVEN n &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12705
        x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12706
        real_mul (real_of_num n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12707
         (real_div pi
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12708
           (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))) |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12709
    (EX n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12710
        EVEN n &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12711
        x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12712
        real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12713
         (real_mul (real_of_num n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12714
           (real_div pi
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12715
             (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12716
  by (import hollight SIN_ZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12717
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12718
lemma SIN_ZERO_PI: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12719
   (sin x = real_of_num (0::nat)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12720
   ((EX n::nat. x = real_mul (real_of_num n) pi) |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12721
    (EX n::nat. x = real_neg (real_mul (real_of_num n) pi)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12722
  by (import hollight SIN_ZERO_PI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12723
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12724
lemma COS_ONE_2PI: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12725
   (cos x = real_of_num (NUMERAL_BIT1 (0::nat))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12726
   ((EX n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12727
        x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12728
        real_mul (real_of_num n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12729
         (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12730
           pi)) |
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12731
    (EX n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12732
        x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12733
        real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12734
         (real_mul (real_of_num n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12735
           (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12736
             pi))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12737
  by (import hollight COS_ONE_2PI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12738
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12739
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12740
  tan :: "hollight.real => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12741
  "tan == %u::hollight.real. real_div (sin u) (cos u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12742
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12743
lemma DEF_tan: "tan = (%u::hollight.real. real_div (sin u) (cos u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12744
  by (import hollight DEF_tan)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12745
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12746
lemma TAN_0: "tan (real_of_num (0::nat)) = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12747
  by (import hollight TAN_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12748
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12749
lemma TAN_PI: "tan pi = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12750
  by (import hollight TAN_PI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12751
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12752
lemma TAN_NPI: "ALL n::nat. tan (real_mul (real_of_num n) pi) = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12753
  by (import hollight TAN_NPI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12754
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12755
lemma TAN_NEG: "ALL x::hollight.real. tan (real_neg x) = real_neg (tan x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12756
  by (import hollight TAN_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12757
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12758
lemma TAN_PERIODIC: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12759
   tan (real_add x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12760
         (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12761
           pi)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12762
   tan x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12763
  by (import hollight TAN_PERIODIC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12764
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12765
lemma TAN_PERIODIC_PI: "ALL x::hollight.real. tan (real_add x pi) = tan x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12766
  by (import hollight TAN_PERIODIC_PI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12767
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12768
lemma TAN_PERIODIC_NPI: "ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12769
   tan (real_add x (real_mul (real_of_num n) pi)) = tan x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12770
  by (import hollight TAN_PERIODIC_NPI)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12771
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12772
lemma TAN_ADD: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12773
   cos x ~= real_of_num (0::nat) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12774
   cos y ~= real_of_num (0::nat) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12775
   cos (real_add x y) ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12776
   tan (real_add x y) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12777
   real_div (real_add (tan x) (tan y))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12778
    (real_sub (real_of_num (NUMERAL_BIT1 (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12779
      (real_mul (tan x) (tan y)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12780
  by (import hollight TAN_ADD)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12781
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12782
lemma TAN_DOUBLE: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12783
   cos x ~= real_of_num (0::nat) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12784
   cos (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) x) ~=
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12785
   real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12786
   tan (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12787
   real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12788
    (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) (tan x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12789
    (real_sub (real_of_num (NUMERAL_BIT1 (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12790
      (real_pow (tan x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12791
  by (import hollight TAN_DOUBLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12792
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12793
lemma TAN_POS_PI2: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12794
   real_lt (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12795
   real_lt x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12796
    (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12797
   real_lt (real_of_num (0::nat)) (tan x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12798
  by (import hollight TAN_POS_PI2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12799
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12800
lemma DIFF_TAN: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12801
   cos x ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12802
   diffl tan
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12803
    (real_inv (real_pow (cos x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12804
  by (import hollight DIFF_TAN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12805
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12806
lemma DIFF_TAN_COMPOSITE: "diffl (g::hollight.real => hollight.real) (m::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12807
 (x::hollight.real) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12808
cos (g x) ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12809
diffl (%x::hollight.real. tan (g x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12810
 (real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12811
   (real_inv (real_pow (cos (g x)) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12812
   m)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12813
 x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12814
  by (import hollight DIFF_TAN_COMPOSITE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12815
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12816
lemma TAN_TOTAL_LEMMA: "ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12817
   real_lt (real_of_num (0::nat)) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12818
   (EX x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12819
       real_lt (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12820
       real_lt x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12821
        (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12822
       real_lt y (tan x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12823
  by (import hollight TAN_TOTAL_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12824
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12825
lemma TAN_TOTAL_POS: "ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12826
   real_le (real_of_num (0::nat)) y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12827
   (EX x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12828
       real_le (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12829
       real_lt x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12830
        (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12831
       tan x = y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12832
  by (import hollight TAN_TOTAL_POS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12833
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12834
lemma TAN_TOTAL: "ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12835
   EX! x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12836
      real_lt
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12837
       (real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12838
         (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12839
       x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12840
      real_lt x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12841
       (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12842
      tan x = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12843
  by (import hollight TAN_TOTAL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12844
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12845
lemma PI2_PI4: "real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12846
real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12847
 (real_div pi
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12848
   (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12849
  by (import hollight PI2_PI4)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12850
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12851
lemma TAN_PI4: "tan (real_div pi
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12852
      (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12853
real_of_num (NUMERAL_BIT1 (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12854
  by (import hollight TAN_PI4)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12855
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12856
lemma TAN_COT: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12857
   tan (real_sub
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12858
         (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12859
         x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12860
   real_inv (tan x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12861
  by (import hollight TAN_COT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12862
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12863
lemma TAN_BOUND_PI2: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12864
   real_lt (real_abs x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12865
    (real_div pi
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12866
      (real_of_num
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12867
        (NUMERAL_BIT0 (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12868
   real_lt (real_abs (tan x)) (real_of_num (NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12869
  by (import hollight TAN_BOUND_PI2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12870
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12871
lemma TAN_ABS_GE_X: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12872
   real_lt (real_abs x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12873
    (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12874
   real_le (real_abs x) (real_abs (tan x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12875
  by (import hollight TAN_ABS_GE_X)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12876
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12877
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12878
  asn :: "hollight.real => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12879
  "asn ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12880
%u::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12881
   SOME x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12882
      real_le
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12883
       (real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12884
         (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12885
       x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12886
      real_le x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12887
       (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12888
      sin x = u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12889
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12890
lemma DEF_asn: "asn =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12891
(%u::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12892
    SOME x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12893
       real_le
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12894
        (real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12895
          (real_div pi
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12896
            (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12897
        x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12898
       real_le x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12899
        (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12900
       sin x = u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12901
  by (import hollight DEF_asn)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12902
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12903
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12904
  acs :: "hollight.real => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12905
  "acs ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12906
%u::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12907
   SOME x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12908
      real_le (real_of_num (0::nat)) x & real_le x pi & cos x = u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12909
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12910
lemma DEF_acs: "acs =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12911
(%u::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12912
    SOME x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12913
       real_le (real_of_num (0::nat)) x & real_le x pi & cos x = u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12914
  by (import hollight DEF_acs)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12915
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12916
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12917
  atn :: "hollight.real => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12918
  "atn ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12919
%u::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12920
   SOME x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12921
      real_lt
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12922
       (real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12923
         (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12924
       x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12925
      real_lt x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12926
       (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12927
      tan x = u"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12928
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12929
lemma DEF_atn: "atn =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12930
(%u::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12931
    SOME x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12932
       real_lt
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12933
        (real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12934
          (real_div pi
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12935
            (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12936
        x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12937
       real_lt x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12938
        (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12939
       tan x = u)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12940
  by (import hollight DEF_atn)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12941
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12942
lemma ASN: "ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12943
   real_le (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) y &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12944
   real_le y (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12945
   real_le
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12946
    (real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12947
      (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12948
    (asn y) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12949
   real_le (asn y)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12950
    (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12951
   sin (asn y) = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12952
  by (import hollight ASN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12953
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12954
lemma ASN_SIN: "ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12955
   real_le (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) y &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12956
   real_le y (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12957
   sin (asn y) = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12958
  by (import hollight ASN_SIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12959
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12960
lemma ASN_BOUNDS: "ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12961
   real_le (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) y &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12962
   real_le y (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12963
   real_le
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12964
    (real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12965
      (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12966
    (asn y) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12967
   real_le (asn y)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12968
    (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12969
  by (import hollight ASN_BOUNDS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12970
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12971
lemma ASN_BOUNDS_LT: "ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12972
   real_lt (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) y &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12973
   real_lt y (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12974
   real_lt
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12975
    (real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12976
      (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12977
    (asn y) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12978
   real_lt (asn y)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12979
    (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12980
  by (import hollight ASN_BOUNDS_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12981
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12982
lemma SIN_ASN: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12983
   real_le
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12984
    (real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12985
      (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12986
    x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12987
   real_le x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12988
    (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12989
   asn (sin x) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12990
  by (import hollight SIN_ASN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12991
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12992
lemma ACS: "ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12993
   real_le (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) y &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12994
   real_le y (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12995
   real_le (real_of_num (0::nat)) (acs y) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12996
   real_le (acs y) pi & cos (acs y) = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12997
  by (import hollight ACS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12998
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 12999
lemma ACS_COS: "ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13000
   real_le (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) y &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13001
   real_le y (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13002
   cos (acs y) = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13003
  by (import hollight ACS_COS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13004
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13005
lemma ACS_BOUNDS: "ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13006
   real_le (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) y &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13007
   real_le y (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13008
   real_le (real_of_num (0::nat)) (acs y) & real_le (acs y) pi"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13009
  by (import hollight ACS_BOUNDS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13010
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13011
lemma ACS_BOUNDS_LT: "ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13012
   real_lt (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) y &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13013
   real_lt y (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13014
   real_lt (real_of_num (0::nat)) (acs y) & real_lt (acs y) pi"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13015
  by (import hollight ACS_BOUNDS_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13016
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13017
lemma COS_ACS: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13018
   real_le (real_of_num (0::nat)) x & real_le x pi --> acs (cos x) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13019
  by (import hollight COS_ACS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13020
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13021
lemma ATN: "ALL y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13022
   real_lt
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13023
    (real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13024
      (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13025
    (atn y) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13026
   real_lt (atn y)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13027
    (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13028
   tan (atn y) = y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13029
  by (import hollight ATN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13030
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13031
lemma ATN_TAN: "ALL x::hollight.real. tan (atn x) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13032
  by (import hollight ATN_TAN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13033
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13034
lemma ATN_BOUNDS: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13035
   real_lt
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13036
    (real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13037
      (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13038
    (atn x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13039
   real_lt (atn x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13040
    (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13041
  by (import hollight ATN_BOUNDS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13042
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13043
lemma TAN_ATN: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13044
   real_lt
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13045
    (real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13046
      (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13047
    x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13048
   real_lt x
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13049
    (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13050
   atn (tan x) = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13051
  by (import hollight TAN_ATN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13052
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13053
lemma ATN_0: "atn (real_of_num (0::nat)) = real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13054
  by (import hollight ATN_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13055
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13056
lemma ATN_1: "atn (real_of_num (NUMERAL_BIT1 (0::nat))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13057
real_div pi
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13058
 (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13059
  by (import hollight ATN_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13060
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13061
lemma ATN_NEG: "ALL x::hollight.real. atn (real_neg x) = real_neg (atn x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13062
  by (import hollight ATN_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13063
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13064
lemma COS_ATN_NZ: "ALL x::hollight.real. cos (atn x) ~= real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13065
  by (import hollight COS_ATN_NZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13066
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13067
lemma TAN_SEC: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13068
   cos x ~= real_of_num (0::nat) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13069
   real_add (real_of_num (NUMERAL_BIT1 (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13070
    (real_pow (tan x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13071
   real_pow (real_inv (cos x)) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13072
  by (import hollight TAN_SEC)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13073
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13074
lemma DIFF_ATN: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13075
   diffl atn
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13076
    (real_inv
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13077
      (real_add (real_of_num (NUMERAL_BIT1 (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13078
        (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13079
    x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13080
  by (import hollight DIFF_ATN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13081
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13082
lemma DIFF_ATN_COMPOSITE: "diffl (g::hollight.real => hollight.real) (m::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13083
 (x::hollight.real) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13084
diffl (%x::hollight.real. atn (g x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13085
 (real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13086
   (real_inv
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13087
     (real_add (real_of_num (NUMERAL_BIT1 (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13088
       (real_pow (g x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13089
   m)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13090
 x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13091
  by (import hollight DIFF_ATN_COMPOSITE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13092
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13093
lemma ATN_MONO_LT: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13094
   real_lt x y --> real_lt (atn x) (atn y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13095
  by (import hollight ATN_MONO_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13096
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13097
lemma ATN_MONO_LT_EQ: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13098
   real_lt (atn x) (atn y) = real_lt x y"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13099
  by (import hollight ATN_MONO_LT_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13100
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13101
lemma ATN_MONO_LE_EQ: "ALL (x::hollight.real) xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13102
   real_le (atn x) (atn xa) = real_le x xa"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13103
  by (import hollight ATN_MONO_LE_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13104
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13105
lemma ATN_INJ: "ALL (x::hollight.real) xa::hollight.real. (atn x = atn xa) = (x = xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13106
  by (import hollight ATN_INJ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13107
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13108
lemma ATN_POS_LT: "real_lt (real_of_num (0::nat)) (atn (x::hollight.real)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13109
real_lt (real_of_num (0::nat)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13110
  by (import hollight ATN_POS_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13111
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13112
lemma ATN_POS_LE: "real_le (real_of_num (0::nat)) (atn (x::hollight.real)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13113
real_le (real_of_num (0::nat)) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13114
  by (import hollight ATN_POS_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13115
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13116
lemma ATN_LT_PI4_POS: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13117
   real_lt x (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13118
   real_lt (atn x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13119
    (real_div pi
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13120
      (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13121
  by (import hollight ATN_LT_PI4_POS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13122
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13123
lemma ATN_LT_PI4_NEG: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13124
   real_lt (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) x -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13125
   real_lt
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13126
    (real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13127
      (real_div pi
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13128
        (real_of_num
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13129
          (NUMERAL_BIT0 (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13130
    (atn x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13131
  by (import hollight ATN_LT_PI4_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13132
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13133
lemma ATN_LT_PI4: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13134
   real_lt (real_abs x) (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13135
   real_lt (real_abs (atn x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13136
    (real_div pi
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13137
      (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13138
  by (import hollight ATN_LT_PI4)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13139
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13140
lemma ATN_LE_PI4: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13141
   real_le (real_abs x) (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13142
   real_le (real_abs (atn x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13143
    (real_div pi
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13144
      (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13145
  by (import hollight ATN_LE_PI4)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13146
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13147
lemma COS_SIN_SQRT: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13148
   real_le (real_of_num (0::nat)) (cos x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13149
   cos x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13150
   sqrt
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13151
    (real_sub (real_of_num (NUMERAL_BIT1 (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13152
      (real_pow (sin x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13153
  by (import hollight COS_SIN_SQRT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13154
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13155
lemma COS_ASN_NZ: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13156
   real_lt (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13157
   real_lt x (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13158
   cos (asn x) ~= real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13159
  by (import hollight COS_ASN_NZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13160
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13161
lemma DIFF_ASN_COS: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13162
   real_lt (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13163
   real_lt x (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13164
   diffl asn (real_inv (cos (asn x))) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13165
  by (import hollight DIFF_ASN_COS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13166
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13167
lemma DIFF_ASN: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13168
   real_lt (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13169
   real_lt x (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13170
   diffl asn
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13171
    (real_inv
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13172
      (sqrt
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13173
        (real_sub (real_of_num (NUMERAL_BIT1 (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13174
          (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13175
    x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13176
  by (import hollight DIFF_ASN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13177
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13178
lemma SIN_COS_SQRT: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13179
   real_le (real_of_num (0::nat)) (sin x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13180
   sin x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13181
   sqrt
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13182
    (real_sub (real_of_num (NUMERAL_BIT1 (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13183
      (real_pow (cos x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13184
  by (import hollight SIN_COS_SQRT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13185
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13186
lemma SIN_ACS_NZ: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13187
   real_lt (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13188
   real_lt x (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13189
   sin (acs x) ~= real_of_num (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13190
  by (import hollight SIN_ACS_NZ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13191
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13192
lemma DIFF_ACS_SIN: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13193
   real_lt (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13194
   real_lt x (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13195
   diffl acs (real_inv (real_neg (sin (acs x)))) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13196
  by (import hollight DIFF_ACS_SIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13197
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13198
lemma DIFF_ACS: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13199
   real_lt (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13200
   real_lt x (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13201
   diffl acs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13202
    (real_neg
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13203
      (real_inv
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13204
        (sqrt
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13205
          (real_sub (real_of_num (NUMERAL_BIT1 (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13206
            (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13207
    x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13208
  by (import hollight DIFF_ACS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13209
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13210
lemma CIRCLE_SINCOS: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13211
   real_add (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13212
    (real_pow y (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13213
   real_of_num (NUMERAL_BIT1 (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13214
   (EX t::hollight.real. x = cos t & y = sin t)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13215
  by (import hollight CIRCLE_SINCOS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13216
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13217
lemma ACS_MONO_LT: "ALL (x::hollight.real) y::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13218
   real_lt (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13219
   real_lt x y & real_lt y (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13220
   real_lt (acs y) (acs x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13221
  by (import hollight ACS_MONO_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13222
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13223
lemma LESS_SUC_EQ: "ALL (m::nat) n::nat. < m (Suc n) = <= m n"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13224
  by (import hollight LESS_SUC_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13225
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13226
lemma LESS_1: "ALL x::nat. < x (NUMERAL_BIT1 (0::nat)) = (x = (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13227
  by (import hollight LESS_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13228
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13229
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13230
  division :: "hollight.real * hollight.real => (nat => hollight.real) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13231
  "division ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13232
%(u::hollight.real * hollight.real) ua::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13233
   ua (0::nat) = fst u &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13234
   (EX N::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13235
       (ALL n::nat. < n N --> real_lt (ua n) (ua (Suc n))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13236
       (ALL n::nat. >= n N --> ua n = snd u))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13237
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13238
lemma DEF_division: "division =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13239
(%(u::hollight.real * hollight.real) ua::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13240
    ua (0::nat) = fst u &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13241
    (EX N::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13242
        (ALL n::nat. < n N --> real_lt (ua n) (ua (Suc n))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13243
        (ALL n::nat. >= n N --> ua n = snd u)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13244
  by (import hollight DEF_division)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13245
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13246
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13247
  dsize :: "(nat => hollight.real) => nat" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13248
  "dsize ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13249
%u::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13250
   SOME N::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13251
      (ALL n::nat. < n N --> real_lt (u n) (u (Suc n))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13252
      (ALL n::nat. >= n N --> u n = u N)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13253
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13254
lemma DEF_dsize: "dsize =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13255
(%u::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13256
    SOME N::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13257
       (ALL n::nat. < n N --> real_lt (u n) (u (Suc n))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13258
       (ALL n::nat. >= n N --> u n = u N))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13259
  by (import hollight DEF_dsize)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13260
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13261
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13262
  tdiv :: "hollight.real * hollight.real
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13263
=> (nat => hollight.real) * (nat => hollight.real) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13264
  "tdiv ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13265
%(u::hollight.real * hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13266
   ua::(nat => hollight.real) * (nat => hollight.real).
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13267
   division (fst u, snd u) (fst ua) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13268
   (ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13269
       real_le (fst ua n) (snd ua n) & real_le (snd ua n) (fst ua (Suc n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13270
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13271
lemma DEF_tdiv: "tdiv =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13272
(%(u::hollight.real * hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13273
    ua::(nat => hollight.real) * (nat => hollight.real).
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13274
    division (fst u, snd u) (fst ua) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13275
    (ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13276
        real_le (fst ua n) (snd ua n) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13277
        real_le (snd ua n) (fst ua (Suc n))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13278
  by (import hollight DEF_tdiv)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13279
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13280
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13281
  gauge :: "(hollight.real => bool) => (hollight.real => hollight.real) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13282
  "gauge ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13283
%(u::hollight.real => bool) ua::hollight.real => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13284
   ALL x::hollight.real. u x --> real_lt (real_of_num (0::nat)) (ua x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13285
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13286
lemma DEF_gauge: "gauge =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13287
(%(u::hollight.real => bool) ua::hollight.real => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13288
    ALL x::hollight.real. u x --> real_lt (real_of_num (0::nat)) (ua x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13289
  by (import hollight DEF_gauge)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13290
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13291
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13292
  fine :: "(hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13293
=> (nat => hollight.real) * (nat => hollight.real) => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13294
  "fine ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13295
%(u::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13296
   ua::(nat => hollight.real) * (nat => hollight.real).
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13297
   ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13298
      < n (dsize (fst ua)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13299
      real_lt (real_sub (fst ua (Suc n)) (fst ua n)) (u (snd ua n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13300
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13301
lemma DEF_fine: "fine =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13302
(%(u::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13303
    ua::(nat => hollight.real) * (nat => hollight.real).
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13304
    ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13305
       < n (dsize (fst ua)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13306
       real_lt (real_sub (fst ua (Suc n)) (fst ua n)) (u (snd ua n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13307
  by (import hollight DEF_fine)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13308
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13309
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13310
  rsum :: "(nat => hollight.real) * (nat => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13311
=> (hollight.real => hollight.real) => hollight.real" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13312
  "rsum ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13313
%(u::(nat => hollight.real) * (nat => hollight.real))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13314
   ua::hollight.real => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13315
   psum (0::nat, dsize (fst u))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13316
    (%n::nat. real_mul (ua (snd u n)) (real_sub (fst u (Suc n)) (fst u n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13317
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13318
lemma DEF_rsum: "rsum =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13319
(%(u::(nat => hollight.real) * (nat => hollight.real))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13320
    ua::hollight.real => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13321
    psum (0::nat, dsize (fst u))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13322
     (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13323
         real_mul (ua (snd u n)) (real_sub (fst u (Suc n)) (fst u n))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13324
  by (import hollight DEF_rsum)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13325
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13326
constdefs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13327
  defint :: "hollight.real * hollight.real
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13328
=> (hollight.real => hollight.real) => hollight.real => bool" 
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13329
  "defint ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13330
%(u::hollight.real * hollight.real) (ua::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13331
   ub::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13332
   ALL e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13333
      real_lt (real_of_num (0::nat)) e -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13334
      (EX g::hollight.real => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13335
          gauge (%x::hollight.real. real_le (fst u) x & real_le x (snd u))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13336
           g &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13337
          (ALL (D::nat => hollight.real) p::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13338
              tdiv (fst u, snd u) (D, p) & fine g (D, p) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13339
              real_lt (real_abs (real_sub (rsum (D, p) ua) ub)) e))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13340
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13341
lemma DEF_defint: "defint =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13342
(%(u::hollight.real * hollight.real) (ua::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13343
    ub::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13344
    ALL e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13345
       real_lt (real_of_num (0::nat)) e -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13346
       (EX g::hollight.real => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13347
           gauge (%x::hollight.real. real_le (fst u) x & real_le x (snd u))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13348
            g &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13349
           (ALL (D::nat => hollight.real) p::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13350
               tdiv (fst u, snd u) (D, p) & fine g (D, p) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13351
               real_lt (real_abs (real_sub (rsum (D, p) ua) ub)) e)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13352
  by (import hollight DEF_defint)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13353
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13354
lemma DIVISION_0: "ALL (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13355
   a = b --> dsize (%n::nat. COND (n = (0::nat)) a b) = (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13356
  by (import hollight DIVISION_0)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13357
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13358
lemma DIVISION_1: "ALL (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13359
   real_lt a b -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13360
   dsize (%n::nat. COND (n = (0::nat)) a b) = NUMERAL_BIT1 (0::nat)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13361
  by (import hollight DIVISION_1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13362
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13363
lemma DIVISION_SINGLE: "ALL (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13364
   real_le a b --> division (a, b) (%n::nat. COND (n = (0::nat)) a b)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13365
  by (import hollight DIVISION_SINGLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13366
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13367
lemma DIVISION_LHS: "ALL (D::nat => hollight.real) (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13368
   division (a, b) D --> D (0::nat) = a"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13369
  by (import hollight DIVISION_LHS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13370
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13371
lemma DIVISION_THM: "ALL (D::nat => hollight.real) (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13372
   division (a, b) D =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13373
   (D (0::nat) = a &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13374
    (ALL n::nat. < n (dsize D) --> real_lt (D n) (D (Suc n))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13375
    (ALL n::nat. >= n (dsize D) --> D n = b))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13376
  by (import hollight DIVISION_THM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13377
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13378
lemma DIVISION_RHS: "ALL (D::nat => hollight.real) (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13379
   division (a, b) D --> D (dsize D) = b"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13380
  by (import hollight DIVISION_RHS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13381
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13382
lemma DIVISION_LT_GEN: "ALL (D::nat => hollight.real) (a::hollight.real) (b::hollight.real) (m::nat)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13383
   n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13384
   division (a, b) D & < m n & <= n (dsize D) --> real_lt (D m) (D n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13385
  by (import hollight DIVISION_LT_GEN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13386
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13387
lemma DIVISION_LT: "ALL (D::nat => hollight.real) (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13388
   division (a, b) D -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13389
   (ALL n::nat. < n (dsize D) --> real_lt (D (0::nat)) (D (Suc n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13390
  by (import hollight DIVISION_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13391
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13392
lemma DIVISION_LE: "ALL (D::nat => hollight.real) (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13393
   division (a, b) D --> real_le a b"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13394
  by (import hollight DIVISION_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13395
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13396
lemma DIVISION_GT: "ALL (D::nat => hollight.real) (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13397
   division (a, b) D -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13398
   (ALL n::nat. < n (dsize D) --> real_lt (D n) (D (dsize D)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13399
  by (import hollight DIVISION_GT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13400
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13401
lemma DIVISION_EQ: "ALL (D::nat => hollight.real) (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13402
   division (a, b) D --> (a = b) = (dsize D = (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13403
  by (import hollight DIVISION_EQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13404
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13405
lemma DIVISION_LBOUND: "ALL (x::nat => hollight.real) (xa::hollight.real) (xb::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13406
   xc::nat. division (xa, xb) x --> real_le xa (x xc)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13407
  by (import hollight DIVISION_LBOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13408
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13409
lemma DIVISION_LBOUND_LT: "ALL (x::nat => hollight.real) (xa::hollight.real) (xb::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13410
   xc::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13411
   division (xa, xb) x & dsize x ~= (0::nat) --> real_lt xa (x (Suc xc))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13412
  by (import hollight DIVISION_LBOUND_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13413
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13414
lemma DIVISION_UBOUND: "ALL (x::nat => hollight.real) (xa::hollight.real) (xb::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13415
   xc::nat. division (xa, xb) x --> real_le (x xc) xb"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13416
  by (import hollight DIVISION_UBOUND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13417
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13418
lemma DIVISION_UBOUND_LT: "ALL (D::nat => hollight.real) (a::hollight.real) (b::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13419
   division (a, b) D & < n (dsize D) --> real_lt (D n) b"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13420
  by (import hollight DIVISION_UBOUND_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13421
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13422
lemma DIVISION_APPEND_LEMMA1: "ALL (a::hollight.real) (b::hollight.real) (c::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13423
   (D1::nat => hollight.real) D2::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13424
   division (a, b) D1 & division (b, c) D2 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13425
   (ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13426
       < n (dsize D1 + dsize D2) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13427
       real_lt (COND (< n (dsize D1)) (D1 n) (D2 (n - dsize D1)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13428
        (COND (< (Suc n) (dsize D1)) (D1 (Suc n))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13429
          (D2 (Suc n - dsize D1)))) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13430
   (ALL n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13431
       >= n (dsize D1 + dsize D2) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13432
       COND (< n (dsize D1)) (D1 n) (D2 (n - dsize D1)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13433
       COND (< (dsize D1 + dsize D2) (dsize D1)) (D1 (dsize D1 + dsize D2))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13434
        (D2 (dsize D1 + dsize D2 - dsize D1)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13435
  by (import hollight DIVISION_APPEND_LEMMA1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13436
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13437
lemma DIVISION_APPEND_LEMMA2: "ALL (a::hollight.real) (b::hollight.real) (c::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13438
   (D1::nat => hollight.real) D2::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13439
   division (a, b) D1 & division (b, c) D2 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13440
   dsize (%n::nat. COND (< n (dsize D1)) (D1 n) (D2 (n - dsize D1))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13441
   dsize D1 + dsize D2"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13442
  by (import hollight DIVISION_APPEND_LEMMA2)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13443
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13444
lemma DIVISION_APPEND: "ALL (a::hollight.real) (b::hollight.real) c::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13445
   (EX (D1::nat => hollight.real) p1::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13446
       tdiv (a, b) (D1, p1) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13447
       fine (g::hollight.real => hollight.real) (D1, p1)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13448
   (EX (D2::nat => hollight.real) p2::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13449
       tdiv (b, c) (D2, p2) & fine g (D2, p2)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13450
   (EX (x::nat => hollight.real) p::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13451
       tdiv (a, c) (x, p) & fine g (x, p))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13452
  by (import hollight DIVISION_APPEND)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13453
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13454
lemma DIVISION_EXISTS: "ALL (a::hollight.real) (b::hollight.real) g::hollight.real => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13455
   real_le a b & gauge (%x::hollight.real. real_le a x & real_le x b) g -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13456
   (EX (D::nat => hollight.real) p::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13457
       tdiv (a, b) (D, p) & fine g (D, p))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13458
  by (import hollight DIVISION_EXISTS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13459
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13460
lemma GAUGE_MIN: "ALL (E::hollight.real => bool) (g1::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13461
   g2::hollight.real => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13462
   gauge E g1 & gauge E g2 -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13463
   gauge E (%x::hollight.real. COND (real_lt (g1 x) (g2 x)) (g1 x) (g2 x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13464
  by (import hollight GAUGE_MIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13465
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13466
lemma FINE_MIN: "ALL (g1::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13467
   (g2::hollight.real => hollight.real) (D::nat => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13468
   p::nat => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13469
   fine (%x::hollight.real. COND (real_lt (g1 x) (g2 x)) (g1 x) (g2 x))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13470
    (D, p) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13471
   fine g1 (D, p) & fine g2 (D, p)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13472
  by (import hollight FINE_MIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13473
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13474
lemma DINT_UNIQ: "ALL (a::hollight.real) (b::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13475
   (f::hollight.real => hollight.real) (k1::hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13476
   k2::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13477
   real_le a b & defint (a, b) f k1 & defint (a, b) f k2 --> k1 = k2"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13478
  by (import hollight DINT_UNIQ)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13479
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13480
lemma INTEGRAL_NULL: "ALL (f::hollight.real => hollight.real) a::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13481
   defint (a, a) f (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13482
  by (import hollight INTEGRAL_NULL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13483
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13484
lemma STRADDLE_LEMMA: "ALL (f::hollight.real => hollight.real) (f'::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13485
   (a::hollight.real) (b::hollight.real) e::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13486
   (ALL x::hollight.real. real_le a x & real_le x b --> diffl f (f' x) x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13487
   real_lt (real_of_num (0::nat)) e -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13488
   (EX x::hollight.real => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13489
       gauge (%x::hollight.real. real_le a x & real_le x b) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13490
       (ALL (xa::hollight.real) (u::hollight.real) v::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13491
           real_le a u &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13492
           real_le u xa &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13493
           real_le xa v & real_le v b & real_lt (real_sub v u) (x xa) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13494
           real_le
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13495
            (real_abs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13496
              (real_sub (real_sub (f v) (f u))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13497
                (real_mul (f' xa) (real_sub v u))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13498
            (real_mul e (real_sub v u))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13499
  by (import hollight STRADDLE_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13500
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13501
lemma FTC1: "ALL (f::hollight.real => hollight.real) (f'::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13502
   (a::hollight.real) b::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13503
   real_le a b &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13504
   (ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13505
       real_le a x & real_le x b --> diffl f (f' x) x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13506
   defint (a, b) f' (real_sub (f b) (f a))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13507
  by (import hollight FTC1)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13508
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13509
lemma MCLAURIN: "ALL (f::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13510
   (diff::nat => hollight.real => hollight.real) (h::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13511
   real_lt (real_of_num (0::nat)) h &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13512
   < (0::nat) n &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13513
   diff (0::nat) = f &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13514
   (ALL (m::nat) t::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13515
       < m n & real_le (real_of_num (0::nat)) t & real_le t h -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13516
       diffl (diff m) (diff (Suc m) t) t) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13517
   (EX t::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13518
       real_lt (real_of_num (0::nat)) t &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13519
       real_lt t h &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13520
       f h =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13521
       real_add
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13522
        (psum (0::nat, n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13523
          (%m::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13524
              real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13525
               (real_div (diff m (real_of_num (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13526
                 (real_of_num (FACT m)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13527
               (real_pow h m)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13528
        (real_mul (real_div (diff n t) (real_of_num (FACT n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13529
          (real_pow h n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13530
  by (import hollight MCLAURIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13531
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13532
lemma MCLAURIN_NEG: "ALL (f::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13533
   (diff::nat => hollight.real => hollight.real) (h::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13534
   real_lt h (real_of_num (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13535
   < (0::nat) n &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13536
   diff (0::nat) = f &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13537
   (ALL (m::nat) t::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13538
       < m n & real_le h t & real_le t (real_of_num (0::nat)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13539
       diffl (diff m) (diff (Suc m) t) t) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13540
   (EX t::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13541
       real_lt h t &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13542
       real_lt t (real_of_num (0::nat)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13543
       f h =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13544
       real_add
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13545
        (psum (0::nat, n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13546
          (%m::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13547
              real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13548
               (real_div (diff m (real_of_num (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13549
                 (real_of_num (FACT m)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13550
               (real_pow h m)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13551
        (real_mul (real_div (diff n t) (real_of_num (FACT n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13552
          (real_pow h n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13553
  by (import hollight MCLAURIN_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13554
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13555
lemma MCLAURIN_BI_LE: "ALL (f::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13556
   (diff::nat => hollight.real => hollight.real) (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13557
   diff (0::nat) = f &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13558
   (ALL (m::nat) t::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13559
       < m n & real_le (real_abs t) (real_abs x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13560
       diffl (diff m) (diff (Suc m) t) t) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13561
   (EX xa::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13562
       real_le (real_abs xa) (real_abs x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13563
       f x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13564
       real_add
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13565
        (psum (0::nat, n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13566
          (%m::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13567
              real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13568
               (real_div (diff m (real_of_num (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13569
                 (real_of_num (FACT m)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13570
               (real_pow x m)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13571
        (real_mul (real_div (diff n xa) (real_of_num (FACT n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13572
          (real_pow x n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13573
  by (import hollight MCLAURIN_BI_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13574
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13575
lemma MCLAURIN_ALL_LT: "ALL (f::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13576
   diff::nat => hollight.real => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13577
   diff (0::nat) = f &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13578
   (ALL (m::nat) x::hollight.real. diffl (diff m) (diff (Suc m) x) x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13579
   (ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13580
       x ~= real_of_num (0::nat) & < (0::nat) n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13581
       (EX t::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13582
           real_lt (real_of_num (0::nat)) (real_abs t) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13583
           real_lt (real_abs t) (real_abs x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13584
           f x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13585
           real_add
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13586
            (psum (0::nat, n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13587
              (%m::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13588
                  real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13589
                   (real_div (diff m (real_of_num (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13590
                     (real_of_num (FACT m)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13591
                   (real_pow x m)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13592
            (real_mul (real_div (diff n t) (real_of_num (FACT n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13593
              (real_pow x n))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13594
  by (import hollight MCLAURIN_ALL_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13595
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13596
lemma MCLAURIN_ZERO: "ALL (diff::nat => hollight.real => hollight.real) (n::nat) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13597
   x = real_of_num (0::nat) & < (0::nat) n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13598
   psum (0::nat, n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13599
    (%m::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13600
        real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13601
         (real_div (diff m (real_of_num (0::nat))) (real_of_num (FACT m)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13602
         (real_pow x m)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13603
   diff (0::nat) (real_of_num (0::nat))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13604
  by (import hollight MCLAURIN_ZERO)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13605
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13606
lemma MCLAURIN_ALL_LE: "ALL (f::hollight.real => hollight.real)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13607
   diff::nat => hollight.real => hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13608
   diff (0::nat) = f &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13609
   (ALL (m::nat) x::hollight.real. diffl (diff m) (diff (Suc m) x) x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13610
   (ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13611
       EX t::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13612
          real_le (real_abs t) (real_abs x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13613
          f x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13614
          real_add
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13615
           (psum (0::nat, n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13616
             (%m::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13617
                 real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13618
                  (real_div (diff m (real_of_num (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13619
                    (real_of_num (FACT m)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13620
                  (real_pow x m)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13621
           (real_mul (real_div (diff n t) (real_of_num (FACT n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13622
             (real_pow x n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13623
  by (import hollight MCLAURIN_ALL_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13624
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13625
lemma MCLAURIN_EXP_LEMMA: "exp = exp & (ALL (x::nat) xa::hollight.real. diffl exp (exp xa) xa)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13626
  by (import hollight MCLAURIN_EXP_LEMMA)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13627
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13628
lemma MCLAURIN_EXP_LT: "ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13629
   x ~= real_of_num (0::nat) & < (0::nat) n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13630
   (EX t::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13631
       real_lt (real_of_num (0::nat)) (real_abs t) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13632
       real_lt (real_abs t) (real_abs x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13633
       exp x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13634
       real_add
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13635
        (psum (0::nat, n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13636
          (%m::nat. real_div (real_pow x m) (real_of_num (FACT m))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13637
        (real_mul (real_div (exp t) (real_of_num (FACT n))) (real_pow x n)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13638
  by (import hollight MCLAURIN_EXP_LT)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13639
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13640
lemma MCLAURIN_EXP_LE: "ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13641
   EX t::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13642
      real_le (real_abs t) (real_abs x) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13643
      exp x =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13644
      real_add
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13645
       (psum (0::nat, n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13646
         (%m::nat. real_div (real_pow x m) (real_of_num (FACT m))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13647
       (real_mul (real_div (exp t) (real_of_num (FACT n))) (real_pow x n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13648
  by (import hollight MCLAURIN_EXP_LE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13649
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13650
lemma DIFF_LN_COMPOSITE: "ALL (g::hollight.real => hollight.real) (m::hollight.real) x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13651
   diffl g m x & real_lt (real_of_num (0::nat)) (g x) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13652
   diffl (%x::hollight.real. ln (g x)) (real_mul (real_inv (g x)) m) x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13653
  by (import hollight DIFF_LN_COMPOSITE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13654
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13655
lemma MCLAURIN_LN_POS: "ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13656
   real_lt (real_of_num (0::nat)) x & < (0::nat) n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13657
   (EX t::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13658
       real_lt (real_of_num (0::nat)) t &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13659
       real_lt t x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13660
       ln (real_add (real_of_num (NUMERAL_BIT1 (0::nat))) x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13661
       real_add
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13662
        (psum (0::nat, n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13663
          (%m::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13664
              real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13665
               (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13666
                 (Suc m))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13667
               (real_div (real_pow x m) (real_of_num m))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13668
        (real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13669
          (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13670
            (Suc n))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13671
          (real_div (real_pow x n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13672
            (real_mul (real_of_num n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13673
              (real_pow (real_add (real_of_num (NUMERAL_BIT1 (0::nat))) t)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13674
                n)))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13675
  by (import hollight MCLAURIN_LN_POS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13676
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13677
lemma MCLAURIN_LN_NEG: "ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13678
   real_lt (real_of_num (0::nat)) x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13679
   real_lt x (real_of_num (NUMERAL_BIT1 (0::nat))) & < (0::nat) n -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13680
   (EX t::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13681
       real_lt (real_of_num (0::nat)) t &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13682
       real_lt t x &
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13683
       real_neg (ln (real_sub (real_of_num (NUMERAL_BIT1 (0::nat))) x)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13684
       real_add
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13685
        (psum (0::nat, n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13686
          (%m::nat. real_div (real_pow x m) (real_of_num m)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13687
        (real_div (real_pow x n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13688
          (real_mul (real_of_num n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13689
            (real_pow (real_sub (real_of_num (NUMERAL_BIT1 (0::nat))) t)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13690
              n))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13691
  by (import hollight MCLAURIN_LN_NEG)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13692
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13693
lemma MCLAURIN_SIN: "ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13694
   real_le
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13695
    (real_abs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13696
      (real_sub (sin x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13697
        (psum (0::nat, n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13698
          (%m::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13699
              real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13700
               (COND (EVEN m) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13701
                 (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13702
                   (real_pow
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13703
                     (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13704
                     (DIV (m - NUMERAL_BIT1 (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13705
                       (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13706
                   (real_of_num (FACT m))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13707
               (real_pow x m)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13708
    (real_mul (real_inv (real_of_num (FACT n))) (real_pow (real_abs x) n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13709
  by (import hollight MCLAURIN_SIN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13710
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13711
lemma MCLAURIN_COS: "ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13712
   real_le
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13713
    (real_abs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13714
      (real_sub (cos x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13715
        (psum (0::nat, n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13716
          (%m::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13717
              real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13718
               (COND (EVEN m)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13719
                 (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13720
                   (real_pow
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13721
                     (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13722
                     (DIV m (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13723
                   (real_of_num (FACT m)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13724
                 (real_of_num (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13725
               (real_pow x m)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13726
    (real_mul (real_inv (real_of_num (FACT n))) (real_pow (real_abs x) n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13727
  by (import hollight MCLAURIN_COS)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13728
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13729
lemma REAL_ATN_POWSER_SUMMABLE: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13730
   real_lt (real_abs x) (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13731
   summable
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13732
    (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13733
        real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13734
         (COND (EVEN n) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13735
           (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13736
             (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13737
               (DIV (n - NUMERAL_BIT1 (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13738
                 (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13739
             (real_of_num n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13740
         (real_pow x n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13741
  by (import hollight REAL_ATN_POWSER_SUMMABLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13742
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13743
lemma REAL_ATN_POWSER_DIFFS_SUMMABLE: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13744
   real_lt (real_abs x) (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13745
   summable
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13746
    (%xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13747
        real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13748
         (diffs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13749
           (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13750
               COND (EVEN n) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13751
                (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13752
                  (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13753
                    (DIV (n - NUMERAL_BIT1 (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13754
                      (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13755
                  (real_of_num n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13756
           xa)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13757
         (real_pow x xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13758
  by (import hollight REAL_ATN_POWSER_DIFFS_SUMMABLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13759
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13760
lemma REAL_ATN_POWSER_DIFFS_SUM: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13761
   real_lt (real_abs x) (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13762
   sums
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13763
    (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13764
        real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13765
         (diffs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13766
           (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13767
               COND (EVEN n) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13768
                (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13769
                  (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13770
                    (DIV (n - NUMERAL_BIT1 (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13771
                      (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13772
                  (real_of_num n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13773
           n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13774
         (real_pow x n))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13775
    (real_inv
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13776
      (real_add (real_of_num (NUMERAL_BIT1 (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13777
        (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13778
  by (import hollight REAL_ATN_POWSER_DIFFS_SUM)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13779
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13780
lemma REAL_ATN_POWSER_DIFFS_DIFFS_SUMMABLE: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13781
   real_lt (real_abs x) (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13782
   summable
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13783
    (%xa::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13784
        real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13785
         (diffs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13786
           (diffs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13787
             (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13788
                 COND (EVEN n) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13789
                  (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13790
                    (real_pow
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13791
                      (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13792
                      (DIV (n - NUMERAL_BIT1 (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13793
                        (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13794
                    (real_of_num n))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13795
           xa)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13796
         (real_pow x xa))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13797
  by (import hollight REAL_ATN_POWSER_DIFFS_DIFFS_SUMMABLE)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13798
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13799
lemma REAL_ATN_POWSER_DIFFL: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13800
   real_lt (real_abs x) (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13801
   diffl
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13802
    (%x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13803
        suminf
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13804
         (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13805
             real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13806
              (COND (EVEN n) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13807
                (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13808
                  (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13809
                    (DIV (n - NUMERAL_BIT1 (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13810
                      (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13811
                  (real_of_num n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13812
              (real_pow x n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13813
    (real_inv
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13814
      (real_add (real_of_num (NUMERAL_BIT1 (0::nat)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13815
        (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13816
    x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13817
  by (import hollight REAL_ATN_POWSER_DIFFL)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13818
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13819
lemma REAL_ATN_POWSER: "ALL x::hollight.real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13820
   real_lt (real_abs x) (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13821
   sums
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13822
    (%n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13823
        real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13824
         (COND (EVEN n) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13825
           (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13826
             (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13827
               (DIV (n - NUMERAL_BIT1 (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13828
                 (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13829
             (real_of_num n)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13830
         (real_pow x n))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13831
    (atn x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13832
  by (import hollight REAL_ATN_POWSER)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13833
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13834
lemma MCLAURIN_ATN: "ALL (x::hollight.real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13835
   real_lt (real_abs x) (real_of_num (NUMERAL_BIT1 (0::nat))) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13836
   real_le
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13837
    (real_abs
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13838
      (real_sub (atn x)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13839
        (psum (0::nat, n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13840
          (%m::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13841
              real_mul
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13842
               (COND (EVEN m) (real_of_num (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13843
                 (real_div
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13844
                   (real_pow
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13845
                     (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13846
                     (DIV (m - NUMERAL_BIT1 (0::nat))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13847
                       (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13848
                   (real_of_num m)))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13849
               (real_pow x m)))))
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13850
    (real_div (real_pow (real_abs x) n)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13851
      (real_sub (real_of_num (NUMERAL_BIT1 (0::nat))) (real_abs x)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13852
  by (import hollight MCLAURIN_ATN)
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13853
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13854
;end_setup
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13855
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13856
end
bd59bfd4bf37 fixed disambiguation problem
obua
parents:
diff changeset
 13857