src/HOL/Import/HOL/HOL4Real.thy
author haftmann
Wed, 06 Sep 2006 13:48:02 +0200
changeset 20485 3078fd2eec7b
parent 17694 b7870c2bd7df
child 25919 8b1c0d434824
permissions -rw-r--r--
got rid of Numeral.bin type
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
15647
b1f486a9c56b Updated import configuration.
skalberg
parents: 15071
diff changeset
     1
(* AUTOMATICALLY GENERATED, DO NOT EDIT! *)
b1f486a9c56b Updated import configuration.
skalberg
parents: 15071
diff changeset
     2
17566
484ff733f29c new header syntax;
wenzelm
parents: 17188
diff changeset
     3
theory HOL4Real imports HOL4Base begin
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
     4
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
     5
;setup_theory realax
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
     6
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
     7
lemma HREAL_RDISTRIB: "ALL (x::hreal) (y::hreal) z::hreal.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
     8
   hreal_mul (hreal_add x y) z = hreal_add (hreal_mul x z) (hreal_mul y z)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
     9
  by (import realax HREAL_RDISTRIB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    10
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    11
lemma HREAL_EQ_ADDL: "ALL (x::hreal) y::hreal. x ~= hreal_add x y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    12
  by (import realax HREAL_EQ_ADDL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    13
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    14
lemma HREAL_EQ_LADD: "ALL (x::hreal) (y::hreal) z::hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    15
   (hreal_add x y = hreal_add x z) = (y = z)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    16
  by (import realax HREAL_EQ_LADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    17
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    18
lemma HREAL_LT_REFL: "ALL x::hreal. ~ hreal_lt x x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    19
  by (import realax HREAL_LT_REFL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    20
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    21
lemma HREAL_LT_ADDL: "ALL (x::hreal) y::hreal. hreal_lt x (hreal_add x y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    22
  by (import realax HREAL_LT_ADDL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    23
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    24
lemma HREAL_LT_NE: "ALL (x::hreal) y::hreal. hreal_lt x y --> x ~= y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    25
  by (import realax HREAL_LT_NE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    26
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    27
lemma HREAL_LT_ADDR: "ALL (x::hreal) y::hreal. ~ hreal_lt (hreal_add x y) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    28
  by (import realax HREAL_LT_ADDR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    29
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    30
lemma HREAL_LT_GT: "ALL (x::hreal) y::hreal. hreal_lt x y --> ~ hreal_lt y x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    31
  by (import realax HREAL_LT_GT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    32
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    33
lemma HREAL_LT_ADD2: "ALL (x1::hreal) (x2::hreal) (y1::hreal) y2::hreal.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    34
   hreal_lt x1 y1 & hreal_lt x2 y2 -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    35
   hreal_lt (hreal_add x1 x2) (hreal_add y1 y2)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    36
  by (import realax HREAL_LT_ADD2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    37
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    38
lemma HREAL_LT_LADD: "ALL (x::hreal) (y::hreal) z::hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    39
   hreal_lt (hreal_add x y) (hreal_add x z) = hreal_lt y z"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    40
  by (import realax HREAL_LT_LADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    41
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    42
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    43
  treal_0 :: "hreal * hreal" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    44
  "treal_0 == (hreal_1, hreal_1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    45
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    46
lemma treal_0: "treal_0 = (hreal_1, hreal_1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    47
  by (import realax treal_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    48
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    49
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    50
  treal_1 :: "hreal * hreal" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    51
  "treal_1 == (hreal_add hreal_1 hreal_1, hreal_1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    52
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    53
lemma treal_1: "treal_1 = (hreal_add hreal_1 hreal_1, hreal_1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    54
  by (import realax treal_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    55
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    56
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    57
  treal_neg :: "hreal * hreal => hreal * hreal" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    58
  "treal_neg == %(x::hreal, y::hreal). (y, x)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    59
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    60
lemma treal_neg: "ALL (x::hreal) y::hreal. treal_neg (x, y) = (y, x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    61
  by (import realax treal_neg)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    62
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    63
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    64
  treal_add :: "hreal * hreal => hreal * hreal => hreal * hreal" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    65
  "treal_add ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    66
%(x1::hreal, y1::hreal) (x2::hreal, y2::hreal).
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    67
   (hreal_add x1 x2, hreal_add y1 y2)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    68
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    69
lemma treal_add: "ALL (x1::hreal) (y1::hreal) (x2::hreal) y2::hreal.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    70
   treal_add (x1, y1) (x2, y2) = (hreal_add x1 x2, hreal_add y1 y2)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    71
  by (import realax treal_add)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    72
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    73
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    74
  treal_mul :: "hreal * hreal => hreal * hreal => hreal * hreal" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    75
  "treal_mul ==
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    76
%(x1::hreal, y1::hreal) (x2::hreal, y2::hreal).
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    77
   (hreal_add (hreal_mul x1 x2) (hreal_mul y1 y2),
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    78
    hreal_add (hreal_mul x1 y2) (hreal_mul y1 x2))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    79
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    80
lemma treal_mul: "ALL (x1::hreal) (y1::hreal) (x2::hreal) y2::hreal.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    81
   treal_mul (x1, y1) (x2, y2) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    82
   (hreal_add (hreal_mul x1 x2) (hreal_mul y1 y2),
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    83
    hreal_add (hreal_mul x1 y2) (hreal_mul y1 x2))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    84
  by (import realax treal_mul)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    85
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    86
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    87
  treal_lt :: "hreal * hreal => hreal * hreal => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    88
  "treal_lt ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    89
%(x1::hreal, y1::hreal) (x2::hreal, y2::hreal).
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    90
   hreal_lt (hreal_add x1 y2) (hreal_add x2 y1)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    91
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    92
lemma treal_lt: "ALL (x1::hreal) (y1::hreal) (x2::hreal) y2::hreal.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    93
   treal_lt (x1, y1) (x2, y2) = hreal_lt (hreal_add x1 y2) (hreal_add x2 y1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    94
  by (import realax treal_lt)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    95
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    96
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    97
  treal_inv :: "hreal * hreal => hreal * hreal" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    98
  "treal_inv ==
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
    99
%(x::hreal, y::hreal).
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   100
   if x = y then treal_0
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   101
   else if hreal_lt y x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   102
        then (hreal_add (hreal_inv (hreal_sub x y)) hreal_1, hreal_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   103
        else (hreal_1, hreal_add (hreal_inv (hreal_sub y x)) hreal_1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   104
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   105
lemma treal_inv: "ALL (x::hreal) y::hreal.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   106
   treal_inv (x, y) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   107
   (if x = y then treal_0
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   108
    else if hreal_lt y x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   109
         then (hreal_add (hreal_inv (hreal_sub x y)) hreal_1, hreal_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   110
         else (hreal_1, hreal_add (hreal_inv (hreal_sub y x)) hreal_1))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   111
  by (import realax treal_inv)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   112
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   113
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   114
  treal_eq :: "hreal * hreal => hreal * hreal => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   115
  "treal_eq ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   116
%(x1::hreal, y1::hreal) (x2::hreal, y2::hreal).
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   117
   hreal_add x1 y2 = hreal_add x2 y1"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   118
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   119
lemma treal_eq: "ALL (x1::hreal) (y1::hreal) (x2::hreal) y2::hreal.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   120
   treal_eq (x1, y1) (x2, y2) = (hreal_add x1 y2 = hreal_add x2 y1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   121
  by (import realax treal_eq)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   122
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   123
lemma TREAL_EQ_REFL: "ALL x::hreal * hreal. treal_eq x x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   124
  by (import realax TREAL_EQ_REFL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   125
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   126
lemma TREAL_EQ_SYM: "ALL (x::hreal * hreal) y::hreal * hreal. treal_eq x y = treal_eq y x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   127
  by (import realax TREAL_EQ_SYM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   128
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   129
lemma TREAL_EQ_TRANS: "ALL (x::hreal * hreal) (y::hreal * hreal) z::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   130
   treal_eq x y & treal_eq y z --> treal_eq x z"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   131
  by (import realax TREAL_EQ_TRANS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   132
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   133
lemma TREAL_EQ_EQUIV: "ALL (p::hreal * hreal) q::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   134
   treal_eq p q = (treal_eq p = treal_eq q)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   135
  by (import realax TREAL_EQ_EQUIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   136
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   137
lemma TREAL_EQ_AP: "ALL (p::hreal * hreal) q::hreal * hreal. p = q --> treal_eq p q"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   138
  by (import realax TREAL_EQ_AP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   139
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   140
lemma TREAL_10: "~ treal_eq treal_1 treal_0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   141
  by (import realax TREAL_10)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   142
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   143
lemma TREAL_ADD_SYM: "ALL (x::hreal * hreal) y::hreal * hreal. treal_add x y = treal_add y x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   144
  by (import realax TREAL_ADD_SYM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   145
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   146
lemma TREAL_MUL_SYM: "ALL (x::hreal * hreal) y::hreal * hreal. treal_mul x y = treal_mul y x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   147
  by (import realax TREAL_MUL_SYM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   148
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   149
lemma TREAL_ADD_ASSOC: "ALL (x::hreal * hreal) (y::hreal * hreal) z::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   150
   treal_add x (treal_add y z) = treal_add (treal_add x y) z"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   151
  by (import realax TREAL_ADD_ASSOC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   152
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   153
lemma TREAL_MUL_ASSOC: "ALL (x::hreal * hreal) (y::hreal * hreal) z::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   154
   treal_mul x (treal_mul y z) = treal_mul (treal_mul x y) z"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   155
  by (import realax TREAL_MUL_ASSOC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   156
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   157
lemma TREAL_LDISTRIB: "ALL (x::hreal * hreal) (y::hreal * hreal) z::hreal * hreal.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   158
   treal_mul x (treal_add y z) = treal_add (treal_mul x y) (treal_mul x z)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   159
  by (import realax TREAL_LDISTRIB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   160
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   161
lemma TREAL_ADD_LID: "ALL x::hreal * hreal. treal_eq (treal_add treal_0 x) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   162
  by (import realax TREAL_ADD_LID)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   163
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   164
lemma TREAL_MUL_LID: "ALL x::hreal * hreal. treal_eq (treal_mul treal_1 x) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   165
  by (import realax TREAL_MUL_LID)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   166
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   167
lemma TREAL_ADD_LINV: "ALL x::hreal * hreal. treal_eq (treal_add (treal_neg x) x) treal_0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   168
  by (import realax TREAL_ADD_LINV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   169
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   170
lemma TREAL_INV_0: "treal_eq (treal_inv treal_0) treal_0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   171
  by (import realax TREAL_INV_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   172
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   173
lemma TREAL_MUL_LINV: "ALL x::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   174
   ~ treal_eq x treal_0 --> treal_eq (treal_mul (treal_inv x) x) treal_1"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   175
  by (import realax TREAL_MUL_LINV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   176
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   177
lemma TREAL_LT_TOTAL: "ALL (x::hreal * hreal) y::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   178
   treal_eq x y | treal_lt x y | treal_lt y x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   179
  by (import realax TREAL_LT_TOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   180
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   181
lemma TREAL_LT_REFL: "ALL x::hreal * hreal. ~ treal_lt x x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   182
  by (import realax TREAL_LT_REFL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   183
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   184
lemma TREAL_LT_TRANS: "ALL (x::hreal * hreal) (y::hreal * hreal) z::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   185
   treal_lt x y & treal_lt y z --> treal_lt x z"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   186
  by (import realax TREAL_LT_TRANS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   187
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   188
lemma TREAL_LT_ADD: "ALL (x::hreal * hreal) (y::hreal * hreal) z::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   189
   treal_lt y z --> treal_lt (treal_add x y) (treal_add x z)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   190
  by (import realax TREAL_LT_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   191
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   192
lemma TREAL_LT_MUL: "ALL (x::hreal * hreal) y::hreal * hreal.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   193
   treal_lt treal_0 x & treal_lt treal_0 y -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   194
   treal_lt treal_0 (treal_mul x y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   195
  by (import realax TREAL_LT_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   196
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   197
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   198
  treal_of_hreal :: "hreal => hreal * hreal" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   199
  "treal_of_hreal == %x::hreal. (hreal_add x hreal_1, hreal_1)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   200
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   201
lemma treal_of_hreal: "ALL x::hreal. treal_of_hreal x = (hreal_add x hreal_1, hreal_1)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   202
  by (import realax treal_of_hreal)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   203
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   204
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   205
  hreal_of_treal :: "hreal * hreal => hreal" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   206
  "hreal_of_treal == %(x::hreal, y::hreal). SOME d::hreal. x = hreal_add y d"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   207
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   208
lemma hreal_of_treal: "ALL (x::hreal) y::hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   209
   hreal_of_treal (x, y) = (SOME d::hreal. x = hreal_add y d)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   210
  by (import realax hreal_of_treal)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   211
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   212
lemma TREAL_BIJ: "(ALL h::hreal. hreal_of_treal (treal_of_hreal h) = h) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   213
(ALL r::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   214
    treal_lt treal_0 r = treal_eq (treal_of_hreal (hreal_of_treal r)) r)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   215
  by (import realax TREAL_BIJ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   216
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   217
lemma TREAL_ISO: "ALL (h::hreal) i::hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   218
   hreal_lt h i --> treal_lt (treal_of_hreal h) (treal_of_hreal i)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   219
  by (import realax TREAL_ISO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   220
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   221
lemma TREAL_BIJ_WELLDEF: "ALL (h::hreal * hreal) i::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   222
   treal_eq h i --> hreal_of_treal h = hreal_of_treal i"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   223
  by (import realax TREAL_BIJ_WELLDEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   224
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   225
lemma TREAL_NEG_WELLDEF: "ALL (x1::hreal * hreal) x2::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   226
   treal_eq x1 x2 --> treal_eq (treal_neg x1) (treal_neg x2)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   227
  by (import realax TREAL_NEG_WELLDEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   228
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   229
lemma TREAL_ADD_WELLDEFR: "ALL (x1::hreal * hreal) (x2::hreal * hreal) y::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   230
   treal_eq x1 x2 --> treal_eq (treal_add x1 y) (treal_add x2 y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   231
  by (import realax TREAL_ADD_WELLDEFR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   232
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   233
lemma TREAL_ADD_WELLDEF: "ALL (x1::hreal * hreal) (x2::hreal * hreal) (y1::hreal * hreal)
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   234
   y2::hreal * hreal.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   235
   treal_eq x1 x2 & treal_eq y1 y2 -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   236
   treal_eq (treal_add x1 y1) (treal_add x2 y2)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   237
  by (import realax TREAL_ADD_WELLDEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   238
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   239
lemma TREAL_MUL_WELLDEFR: "ALL (x1::hreal * hreal) (x2::hreal * hreal) y::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   240
   treal_eq x1 x2 --> treal_eq (treal_mul x1 y) (treal_mul x2 y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   241
  by (import realax TREAL_MUL_WELLDEFR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   242
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   243
lemma TREAL_MUL_WELLDEF: "ALL (x1::hreal * hreal) (x2::hreal * hreal) (y1::hreal * hreal)
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   244
   y2::hreal * hreal.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   245
   treal_eq x1 x2 & treal_eq y1 y2 -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   246
   treal_eq (treal_mul x1 y1) (treal_mul x2 y2)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   247
  by (import realax TREAL_MUL_WELLDEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   248
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   249
lemma TREAL_LT_WELLDEFR: "ALL (x1::hreal * hreal) (x2::hreal * hreal) y::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   250
   treal_eq x1 x2 --> treal_lt x1 y = treal_lt x2 y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   251
  by (import realax TREAL_LT_WELLDEFR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   252
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   253
lemma TREAL_LT_WELLDEFL: "ALL (x::hreal * hreal) (y1::hreal * hreal) y2::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   254
   treal_eq y1 y2 --> treal_lt x y1 = treal_lt x y2"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   255
  by (import realax TREAL_LT_WELLDEFL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   256
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   257
lemma TREAL_LT_WELLDEF: "ALL (x1::hreal * hreal) (x2::hreal * hreal) (y1::hreal * hreal)
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   258
   y2::hreal * hreal.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   259
   treal_eq x1 x2 & treal_eq y1 y2 --> treal_lt x1 y1 = treal_lt x2 y2"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   260
  by (import realax TREAL_LT_WELLDEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   261
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   262
lemma TREAL_INV_WELLDEF: "ALL (x1::hreal * hreal) x2::hreal * hreal.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   263
   treal_eq x1 x2 --> treal_eq (treal_inv x1) (treal_inv x2)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   264
  by (import realax TREAL_INV_WELLDEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   265
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   266
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   267
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   268
;setup_theory real
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   269
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   270
lemma REAL_0: "(op =::real => real => bool) (0::real) (0::real)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   271
  by (import real REAL_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   272
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   273
lemma REAL_1: "(op =::real => real => bool) (1::real) (1::real)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   274
  by (import real REAL_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   275
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   276
lemma REAL_ADD_LID_UNIQ: "ALL (x::real) y::real. (x + y = y) = (x = 0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   277
  by (import real REAL_ADD_LID_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   278
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   279
lemma REAL_ADD_RID_UNIQ: "ALL (x::real) y::real. (x + y = x) = (y = 0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   280
  by (import real REAL_ADD_RID_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   281
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   282
lemma REAL_LNEG_UNIQ: "ALL (x::real) y::real. (x + y = 0) = (x = - y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   283
  by (import real REAL_LNEG_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   284
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   285
lemma REAL_LT_ANTISYM: "ALL (x::real) y::real. ~ (x < y & y < x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   286
  by (import real REAL_LT_ANTISYM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   287
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   288
lemma REAL_LTE_TOTAL: "ALL (x::real) y::real. x < y | y <= x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   289
  by (import real REAL_LTE_TOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   290
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   291
lemma REAL_LET_ANTISYM: "ALL (x::real) y::real. ~ (x < y & y <= x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   292
  by (import real REAL_LET_ANTISYM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   293
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   294
lemma REAL_LTE_ANTSYM: "ALL (x::real) y::real. ~ (x <= y & y < x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   295
  by (import real REAL_LTE_ANTSYM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   296
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   297
lemma REAL_LT_NEGTOTAL: "ALL x::real. x = 0 | 0 < x | 0 < - x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   298
  by (import real REAL_LT_NEGTOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   299
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   300
lemma REAL_LE_NEGTOTAL: "ALL x::real. 0 <= x | 0 <= - x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   301
  by (import real REAL_LE_NEGTOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   302
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   303
lemma REAL_LT_ADDNEG: "ALL (x::real) (y::real) z::real. (y < x + - z) = (y + z < x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   304
  by (import real REAL_LT_ADDNEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   305
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   306
lemma REAL_LT_ADDNEG2: "ALL (x::real) (y::real) z::real. (x + - y < z) = (x < z + y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   307
  by (import real REAL_LT_ADDNEG2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   308
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   309
lemma REAL_LT_ADD1: "ALL (x::real) y::real. x <= y --> x < y + 1"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   310
  by (import real REAL_LT_ADD1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   311
14796
1e83aa391ade updated;
wenzelm
parents: 14694
diff changeset
   312
lemma REAL_SUB_ADD2: "ALL (x::real) y::real. y + (x - y) = x"
1e83aa391ade updated;
wenzelm
parents: 14694
diff changeset
   313
  by (import real REAL_SUB_ADD2)
1e83aa391ade updated;
wenzelm
parents: 14694
diff changeset
   314
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   315
lemma REAL_SUB_LT: "ALL (x::real) y::real. (0 < x - y) = (y < x)"
15647
b1f486a9c56b Updated import configuration.
skalberg
parents: 15071
diff changeset
   316
  by (import real REAL_SUB_LT)
b1f486a9c56b Updated import configuration.
skalberg
parents: 15071
diff changeset
   317
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   318
lemma REAL_SUB_LE: "ALL (x::real) y::real. (0 <= x - y) = (y <= x)"
15647
b1f486a9c56b Updated import configuration.
skalberg
parents: 15071
diff changeset
   319
  by (import real REAL_SUB_LE)
b1f486a9c56b Updated import configuration.
skalberg
parents: 15071
diff changeset
   320
14796
1e83aa391ade updated;
wenzelm
parents: 14694
diff changeset
   321
lemma REAL_ADD_SUB: "ALL (x::real) y::real. x + y - x = y"
1e83aa391ade updated;
wenzelm
parents: 14694
diff changeset
   322
  by (import real REAL_ADD_SUB)
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   323
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   324
lemma REAL_NEG_EQ: "ALL (x::real) y::real. (- x = y) = (x = - y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   325
  by (import real REAL_NEG_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   326
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   327
lemma REAL_NEG_MINUS1: "ALL x::real. - x = - 1 * x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   328
  by (import real REAL_NEG_MINUS1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   329
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   330
lemma REAL_LT_LMUL_0: "ALL (x::real) y::real. 0 < x --> (0 < x * y) = (0 < y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   331
  by (import real REAL_LT_LMUL_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   332
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   333
lemma REAL_LT_RMUL_0: "ALL (x::real) y::real. 0 < y --> (0 < x * y) = (0 < x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   334
  by (import real REAL_LT_RMUL_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   335
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   336
lemma REAL_LT_LMUL: "ALL (x::real) (y::real) z::real. 0 < x --> (x * y < x * z) = (y < z)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   337
  by (import real REAL_LT_LMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   338
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   339
lemma REAL_LINV_UNIQ: "ALL (x::real) y::real. x * y = 1 --> x = inverse y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   340
  by (import real REAL_LINV_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   341
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   342
lemma REAL_LE_INV: "(All::(real => bool) => bool)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   343
 (%x::real.
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   344
     (op -->::bool => bool => bool)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   345
      ((op <=::real => real => bool) (0::real) x)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   346
      ((op <=::real => real => bool) (0::real) ((inverse::real => real) x)))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   347
  by (import real REAL_LE_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   348
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   349
lemma REAL_LE_ADDR: "ALL (x::real) y::real. (x <= x + y) = (0 <= y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   350
  by (import real REAL_LE_ADDR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   351
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   352
lemma REAL_LE_ADDL: "ALL (x::real) y::real. (y <= x + y) = (0 <= x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   353
  by (import real REAL_LE_ADDL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   354
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   355
lemma REAL_LT_ADDR: "ALL (x::real) y::real. (x < x + y) = (0 < y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   356
  by (import real REAL_LT_ADDR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   357
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   358
lemma REAL_LT_ADDL: "ALL (x::real) y::real. (y < x + y) = (0 < x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   359
  by (import real REAL_LT_ADDL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   360
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   361
lemma REAL_LT_NZ: "ALL n::nat. (real n ~= 0) = (0 < real n)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   362
  by (import real REAL_LT_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   363
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   364
lemma REAL_NZ_IMP_LT: "ALL n::nat. n ~= 0 --> 0 < real n"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   365
  by (import real REAL_NZ_IMP_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   366
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   367
lemma REAL_LT_RDIV_0: "ALL (y::real) z::real. 0 < z --> (0 < y / z) = (0 < y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   368
  by (import real REAL_LT_RDIV_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   369
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   370
lemma REAL_LT_RDIV: "ALL (x::real) (y::real) z::real. 0 < z --> (x / z < y / z) = (x < y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   371
  by (import real REAL_LT_RDIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   372
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   373
lemma REAL_LT_FRACTION_0: "ALL (n::nat) d::real. n ~= 0 --> (0 < d / real n) = (0 < d)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   374
  by (import real REAL_LT_FRACTION_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   375
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   376
lemma REAL_LT_MULTIPLE: "ALL (x::nat) xa::real. 1 < x --> (xa < real x * xa) = (0 < xa)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   377
  by (import real REAL_LT_MULTIPLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   378
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   379
lemma REAL_LT_FRACTION: "ALL (n::nat) d::real. 1 < n --> (d / real n < d) = (0 < d)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   380
  by (import real REAL_LT_FRACTION)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   381
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   382
lemma REAL_LT_HALF2: "ALL d::real. (d / 2 < d) = (0 < d)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   383
  by (import real REAL_LT_HALF2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   384
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   385
lemma REAL_DIV_LMUL: "ALL (x::real) y::real. y ~= 0 --> y * (x / y) = x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   386
  by (import real REAL_DIV_LMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   387
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   388
lemma REAL_DIV_RMUL: "ALL (x::real) y::real. y ~= 0 --> x / y * y = x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   389
  by (import real REAL_DIV_RMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   390
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   391
lemma REAL_DOWN: "(All::(real => bool) => bool)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   392
 (%x::real.
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   393
     (op -->::bool => bool => bool)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   394
      ((op <::real => real => bool) (0::real) x)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   395
      ((Ex::(real => bool) => bool)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   396
        (%xa::real.
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   397
            (op &::bool => bool => bool)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   398
             ((op <::real => real => bool) (0::real) xa)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   399
             ((op <::real => real => bool) xa x))))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   400
  by (import real REAL_DOWN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   401
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   402
lemma REAL_SUB_SUB: "ALL (x::real) y::real. x - y - x = - y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   403
  by (import real REAL_SUB_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   404
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   405
lemma REAL_ADD2_SUB2: "ALL (a::real) (b::real) (c::real) d::real. a + b - (c + d) = a - c + (b - d)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   406
  by (import real REAL_ADD2_SUB2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   407
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   408
lemma REAL_SUB_LNEG: "ALL (x::real) y::real. - x - y = - (x + y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   409
  by (import real REAL_SUB_LNEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   410
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   411
lemma REAL_SUB_NEG2: "ALL (x::real) y::real. - x - - y = y - x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   412
  by (import real REAL_SUB_NEG2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   413
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   414
lemma REAL_SUB_TRIANGLE: "ALL (a::real) (b::real) c::real. a - b + (b - c) = a - c"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   415
  by (import real REAL_SUB_TRIANGLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   416
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   417
lemma REAL_INV_MUL: "ALL (x::real) y::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   418
   x ~= 0 & y ~= 0 --> inverse (x * y) = inverse x * inverse y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   419
  by (import real REAL_INV_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   420
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   421
lemma REAL_SUB_INV2: "ALL (x::real) y::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   422
   x ~= 0 & y ~= 0 --> inverse x - inverse y = (y - x) / (x * y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   423
  by (import real REAL_SUB_INV2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   424
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   425
lemma REAL_SUB_SUB2: "ALL (x::real) y::real. x - (x - y) = y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   426
  by (import real REAL_SUB_SUB2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   427
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   428
lemma REAL_ADD_SUB2: "ALL (x::real) y::real. x - (x + y) = - y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   429
  by (import real REAL_ADD_SUB2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   430
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   431
lemma REAL_LE_MUL2: "ALL (x1::real) (x2::real) (y1::real) y2::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   432
   0 <= x1 & 0 <= y1 & x1 <= x2 & y1 <= y2 --> x1 * y1 <= x2 * y2"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   433
  by (import real REAL_LE_MUL2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   434
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   435
lemma REAL_LE_DIV: "ALL (x::real) xa::real. 0 <= x & 0 <= xa --> 0 <= x / xa"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   436
  by (import real REAL_LE_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   437
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   438
lemma REAL_LT_1: "ALL (x::real) y::real. 0 <= x & x < y --> x / y < 1"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   439
  by (import real REAL_LT_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   440
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   441
lemma REAL_POS_NZ: "(All::(real => bool) => bool)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   442
 (%x::real.
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   443
     (op -->::bool => bool => bool)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   444
      ((op <::real => real => bool) (0::real) x)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   445
      ((Not::bool => bool) ((op =::real => real => bool) x (0::real))))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   446
  by (import real REAL_POS_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   447
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   448
lemma REAL_EQ_LMUL_IMP: "ALL (x::real) (xa::real) xb::real. x ~= 0 & x * xa = x * xb --> xa = xb"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   449
  by (import real REAL_EQ_LMUL_IMP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   450
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   451
lemma REAL_FACT_NZ: "ALL n::nat. real (FACT n) ~= 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   452
  by (import real REAL_FACT_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   453
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   454
lemma REAL_DIFFSQ: "ALL (x::real) y::real. (x + y) * (x - y) = x * x - y * y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   455
  by (import real REAL_DIFFSQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   456
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   457
lemma REAL_POASQ: "ALL x::real. (0 < x * x) = (x ~= 0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   458
  by (import real REAL_POASQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   459
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   460
lemma REAL_SUMSQ: "ALL (x::real) y::real. (x * x + y * y = 0) = (x = 0 & y = 0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   461
  by (import real REAL_SUMSQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   462
17188
a26a4fc323ed Updated import.
obua
parents: 16417
diff changeset
   463
lemma REAL_DIV_MUL2: "ALL (x::real) z::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   464
   x ~= 0 & z ~= 0 --> (ALL y::real. y / z = x * y / (x * z))"
17188
a26a4fc323ed Updated import.
obua
parents: 16417
diff changeset
   465
  by (import real REAL_DIV_MUL2)
a26a4fc323ed Updated import.
obua
parents: 16417
diff changeset
   466
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   467
lemma REAL_MIDDLE1: "ALL (a::real) b::real. a <= b --> a <= (a + b) / 2"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   468
  by (import real REAL_MIDDLE1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   469
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   470
lemma REAL_MIDDLE2: "ALL (a::real) b::real. a <= b --> (a + b) / 2 <= b"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   471
  by (import real REAL_MIDDLE2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   472
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   473
lemma ABS_LT_MUL2: "ALL (w::real) (x::real) (y::real) z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   474
   abs w < y & abs x < z --> abs (w * x) < y * z"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   475
  by (import real ABS_LT_MUL2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   476
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   477
lemma ABS_REFL: "ALL x::real. (abs x = x) = (0 <= x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   478
  by (import real ABS_REFL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   479
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   480
lemma ABS_BETWEEN: "ALL (x::real) (y::real) d::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   481
   (0 < d & x - d < y & y < x + d) = (abs (y - x) < d)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   482
  by (import real ABS_BETWEEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   483
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   484
lemma ABS_BOUND: "ALL (x::real) (y::real) d::real. abs (x - y) < d --> y < x + d"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   485
  by (import real ABS_BOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   486
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   487
lemma ABS_STILLNZ: "ALL (x::real) y::real. abs (x - y) < abs y --> x ~= 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   488
  by (import real ABS_STILLNZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   489
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   490
lemma ABS_CASES: "ALL x::real. x = 0 | 0 < abs x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   491
  by (import real ABS_CASES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   492
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   493
lemma ABS_BETWEEN1: "ALL (x::real) (y::real) z::real. x < z & abs (y - x) < z - x --> y < z"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   494
  by (import real ABS_BETWEEN1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   495
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   496
lemma ABS_SIGN: "ALL (x::real) y::real. abs (x - y) < y --> 0 < x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   497
  by (import real ABS_SIGN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   498
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   499
lemma ABS_SIGN2: "ALL (x::real) y::real. abs (x - y) < - y --> x < 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   500
  by (import real ABS_SIGN2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   501
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   502
lemma ABS_CIRCLE: "ALL (x::real) (y::real) h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   503
   abs h < abs y - abs x --> abs (x + h) < abs y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   504
  by (import real ABS_CIRCLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   505
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   506
lemma ABS_BETWEEN2: "ALL (x0::real) (x::real) (y0::real) y::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   507
   x0 < y0 & abs (x - x0) < (y0 - x0) / 2 & abs (y - y0) < (y0 - x0) / 2 -->
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   508
   x < y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   509
  by (import real ABS_BETWEEN2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   510
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   511
lemma POW_PLUS1: "ALL e>0. ALL n::nat. 1 + real n * e <= (1 + e) ^ n"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   512
  by (import real POW_PLUS1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   513
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   514
lemma POW_M1: "(All::(nat => bool) => bool)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   515
 (%n::nat.
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   516
     (op =::real => real => bool)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   517
      ((abs::real => real)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   518
        ((op ^::real => nat => real) ((uminus::real => real) (1::real)) n))
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   519
      (1::real))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   520
  by (import real POW_M1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   521
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   522
lemma REAL_LE1_POW2: "(All::(real => bool) => bool)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   523
 (%x::real.
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   524
     (op -->::bool => bool => bool)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   525
      ((op <=::real => real => bool) (1::real) x)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   526
      ((op <=::real => real => bool) (1::real)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   527
        ((op ^::real => nat => real) x
20485
3078fd2eec7b got rid of Numeral.bin type
haftmann
parents: 17694
diff changeset
   528
          ((number_of \<Colon> int => nat)
3078fd2eec7b got rid of Numeral.bin type
haftmann
parents: 17694
diff changeset
   529
            ((op BIT \<Colon> int => bit => int)
3078fd2eec7b got rid of Numeral.bin type
haftmann
parents: 17694
diff changeset
   530
              ((op BIT \<Colon> int => bit => int) (Numeral.Pls \<Colon> int) (bit.B1::bit))
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   531
              (bit.B0::bit))))))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   532
  by (import real REAL_LE1_POW2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   533
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   534
lemma REAL_LT1_POW2: "(All::(real => bool) => bool)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   535
 (%x::real.
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   536
     (op -->::bool => bool => bool)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   537
      ((op <::real => real => bool) (1::real) x)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   538
      ((op <::real => real => bool) (1::real)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   539
        ((op ^::real => nat => real) x
20485
3078fd2eec7b got rid of Numeral.bin type
haftmann
parents: 17694
diff changeset
   540
          ((number_of \<Colon> int => nat)
3078fd2eec7b got rid of Numeral.bin type
haftmann
parents: 17694
diff changeset
   541
            ((op BIT \<Colon> int => bit => int)
3078fd2eec7b got rid of Numeral.bin type
haftmann
parents: 17694
diff changeset
   542
              ((op BIT \<Colon> int => bit => int) (Numeral.Pls \<Colon> int) (bit.B1::bit))
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   543
              (bit.B0::bit))))))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   544
  by (import real REAL_LT1_POW2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   545
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   546
lemma POW_POS_LT: "ALL (x::real) n::nat. 0 < x --> 0 < x ^ Suc n"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   547
  by (import real POW_POS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   548
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   549
lemma POW_LT: "ALL (n::nat) (x::real) y::real. 0 <= x & x < y --> x ^ Suc n < y ^ Suc n"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   550
  by (import real POW_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   551
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   552
lemma POW_ZERO_EQ: "ALL (n::nat) x::real. (x ^ Suc n = 0) = (x = 0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   553
  by (import real POW_ZERO_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   554
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   555
lemma REAL_POW_LT2: "ALL (n::nat) (x::real) y::real. n ~= 0 & 0 <= x & x < y --> x ^ n < y ^ n"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   556
  by (import real REAL_POW_LT2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   557
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   558
lemma REAL_POW_MONO_LT: "ALL (m::nat) (n::nat) x::real. 1 < x & m < n --> x ^ m < x ^ n"
17188
a26a4fc323ed Updated import.
obua
parents: 16417
diff changeset
   559
  by (import real REAL_POW_MONO_LT)
a26a4fc323ed Updated import.
obua
parents: 16417
diff changeset
   560
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   561
lemma REAL_SUP_SOMEPOS: "ALL P::real => bool.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   562
   (EX x::real. P x & 0 < x) & (EX z::real. ALL x::real. P x --> x < z) -->
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   563
   (EX s::real. ALL y::real. (EX x::real. P x & y < x) = (y < s))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   564
  by (import real REAL_SUP_SOMEPOS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   565
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   566
lemma SUP_LEMMA1: "ALL (P::real => bool) (s::real) d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   567
   (ALL y::real. (EX x::real. P (x + d) & y < x) = (y < s)) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   568
   (ALL y::real. (EX x::real. P x & y < x) = (y < s + d))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   569
  by (import real SUP_LEMMA1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   570
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   571
lemma SUP_LEMMA2: "ALL P::real => bool. Ex P --> (EX (d::real) x::real. P (x + d) & 0 < x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   572
  by (import real SUP_LEMMA2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   573
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   574
lemma SUP_LEMMA3: "ALL d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   575
   (EX z::real. ALL x::real. (P::real => bool) x --> x < z) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   576
   (EX x::real. ALL xa::real. P (xa + d) --> xa < x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   577
  by (import real SUP_LEMMA3)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   578
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   579
lemma REAL_SUP_EXISTS: "ALL P::real => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   580
   Ex P & (EX z::real. ALL x::real. P x --> x < z) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   581
   (EX x::real. ALL y::real. (EX x::real. P x & y < x) = (y < x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   582
  by (import real REAL_SUP_EXISTS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   583
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   584
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   585
  sup :: "(real => bool) => real" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   586
  "sup ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   587
%P::real => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   588
   SOME s::real. ALL y::real. (EX x::real. P x & y < x) = (y < s)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   589
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   590
lemma sup: "ALL P::real => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   591
   sup P = (SOME s::real. ALL y::real. (EX x::real. P x & y < x) = (y < s))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   592
  by (import real sup)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   593
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   594
lemma REAL_SUP: "ALL P::real => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   595
   Ex P & (EX z::real. ALL x::real. P x --> x < z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   596
   (ALL y::real. (EX x::real. P x & y < x) = (y < sup P))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   597
  by (import real REAL_SUP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   598
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   599
lemma REAL_SUP_UBOUND: "ALL P::real => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   600
   Ex P & (EX z::real. ALL x::real. P x --> x < z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   601
   (ALL y::real. P y --> y <= sup P)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   602
  by (import real REAL_SUP_UBOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   603
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   604
lemma SETOK_LE_LT: "ALL P::real => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   605
   (Ex P & (EX z::real. ALL x::real. P x --> x <= z)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   606
   (Ex P & (EX z::real. ALL x::real. P x --> x < z))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   607
  by (import real SETOK_LE_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   608
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   609
lemma REAL_SUP_LE: "ALL P::real => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   610
   Ex P & (EX z::real. ALL x::real. P x --> x <= z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   611
   (ALL y::real. (EX x::real. P x & y < x) = (y < sup P))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   612
  by (import real REAL_SUP_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   613
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   614
lemma REAL_SUP_UBOUND_LE: "ALL P::real => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   615
   Ex P & (EX z::real. ALL x::real. P x --> x <= z) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   616
   (ALL y::real. P y --> y <= sup P)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   617
  by (import real REAL_SUP_UBOUND_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   618
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   619
lemma REAL_ARCH_LEAST: "ALL y>0. ALL x>=0. EX n::nat. real n * y <= x & x < real (Suc n) * y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   620
  by (import real REAL_ARCH_LEAST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   621
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   622
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   623
  sumc :: "nat => nat => (nat => real) => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   624
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   625
specification (sumc) sumc: "(ALL (n::nat) f::nat => real. sumc n 0 f = 0) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   626
(ALL (n::nat) (m::nat) f::nat => real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   627
    sumc n (Suc m) f = sumc n m f + f (n + m))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   628
  by (import real sumc)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   629
14694
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
   630
consts
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   631
  sum :: "nat * nat => (nat => real) => real" 
14694
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
   632
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
   633
defs
15647
b1f486a9c56b Updated import configuration.
skalberg
parents: 15071
diff changeset
   634
  sum_def: "(op ==::(nat * nat => (nat => real) => real)
b1f486a9c56b Updated import configuration.
skalberg
parents: 15071
diff changeset
   635
        => (nat * nat => (nat => real) => real) => prop)
b1f486a9c56b Updated import configuration.
skalberg
parents: 15071
diff changeset
   636
 (real.sum::nat * nat => (nat => real) => real)
b1f486a9c56b Updated import configuration.
skalberg
parents: 15071
diff changeset
   637
 ((split::(nat => nat => (nat => real) => real)
b1f486a9c56b Updated import configuration.
skalberg
parents: 15071
diff changeset
   638
          => nat * nat => (nat => real) => real)
b1f486a9c56b Updated import configuration.
skalberg
parents: 15071
diff changeset
   639
   (sumc::nat => nat => (nat => real) => real))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   640
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   641
lemma SUM_DEF: "ALL (m::nat) (n::nat) f::nat => real. real.sum (m, n) f = sumc m n f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   642
  by (import real SUM_DEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   643
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   644
lemma sum: "ALL (x::nat => real) (xa::nat) xb::nat.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   645
   real.sum (xa, 0) x = 0 &
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   646
   real.sum (xa, Suc xb) x = real.sum (xa, xb) x + x (xa + xb)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   647
  by (import real sum)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   648
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   649
lemma SUM_TWO: "ALL (f::nat => real) (n::nat) p::nat.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   650
   real.sum (0, n) f + real.sum (n, p) f = real.sum (0, n + p) f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   651
  by (import real SUM_TWO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   652
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   653
lemma SUM_DIFF: "ALL (f::nat => real) (m::nat) n::nat.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   654
   real.sum (m, n) f = real.sum (0, m + n) f - real.sum (0, m) f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   655
  by (import real SUM_DIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   656
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   657
lemma ABS_SUM: "ALL (f::nat => real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   658
   abs (real.sum (m, n) f) <= real.sum (m, n) (%n::nat. abs (f n))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   659
  by (import real ABS_SUM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   660
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   661
lemma SUM_LE: "ALL (f::nat => real) (g::nat => real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   662
   (ALL r::nat. m <= r & r < n + m --> f r <= g r) -->
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   663
   real.sum (m, n) f <= real.sum (m, n) g"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   664
  by (import real SUM_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   665
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   666
lemma SUM_EQ: "ALL (f::nat => real) (g::nat => real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   667
   (ALL r::nat. m <= r & r < n + m --> f r = g r) -->
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   668
   real.sum (m, n) f = real.sum (m, n) g"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   669
  by (import real SUM_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   670
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   671
lemma SUM_POS: "ALL f::nat => real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   672
   (ALL n::nat. 0 <= f n) --> (ALL (m::nat) n::nat. 0 <= real.sum (m, n) f)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   673
  by (import real SUM_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   674
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   675
lemma SUM_POS_GEN: "ALL (f::nat => real) m::nat.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   676
   (ALL n::nat. m <= n --> 0 <= f n) -->
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   677
   (ALL n::nat. 0 <= real.sum (m, n) f)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   678
  by (import real SUM_POS_GEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   679
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   680
lemma SUM_ABS: "ALL (f::nat => real) (m::nat) x::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   681
   abs (real.sum (m, x) (%m::nat. abs (f m))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   682
   real.sum (m, x) (%m::nat. abs (f m))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   683
  by (import real SUM_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   684
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   685
lemma SUM_ABS_LE: "ALL (f::nat => real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   686
   abs (real.sum (m, n) f) <= real.sum (m, n) (%n::nat. abs (f n))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   687
  by (import real SUM_ABS_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   688
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   689
lemma SUM_ZERO: "ALL (f::nat => real) N::nat.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   690
   (ALL n::nat. N <= n --> f n = 0) -->
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   691
   (ALL (m::nat) n::nat. N <= m --> real.sum (m, n) f = 0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   692
  by (import real SUM_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   693
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   694
lemma SUM_ADD: "ALL (f::nat => real) (g::nat => real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   695
   real.sum (m, n) (%n::nat. f n + g n) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   696
   real.sum (m, n) f + real.sum (m, n) g"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   697
  by (import real SUM_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   698
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   699
lemma SUM_CMUL: "ALL (f::nat => real) (c::real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   700
   real.sum (m, n) (%n::nat. c * f n) = c * real.sum (m, n) f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   701
  by (import real SUM_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   702
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   703
lemma SUM_NEG: "ALL (f::nat => real) (n::nat) d::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   704
   real.sum (n, d) (%n::nat. - f n) = - real.sum (n, d) f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   705
  by (import real SUM_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   706
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   707
lemma SUM_SUB: "ALL (f::nat => real) (g::nat => real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   708
   real.sum (m, n) (%x::nat. f x - g x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   709
   real.sum (m, n) f - real.sum (m, n) g"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   710
  by (import real SUM_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   711
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   712
lemma SUM_SUBST: "ALL (f::nat => real) (g::nat => real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   713
   (ALL p::nat. m <= p & p < m + n --> f p = g p) -->
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   714
   real.sum (m, n) f = real.sum (m, n) g"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   715
  by (import real SUM_SUBST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   716
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   717
lemma SUM_NSUB: "ALL (n::nat) (f::nat => real) c::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   718
   real.sum (0, n) f - real n * c = real.sum (0, n) (%p::nat. f p - c)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   719
  by (import real SUM_NSUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   720
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   721
lemma SUM_BOUND: "ALL (f::nat => real) (k::real) (m::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   722
   (ALL p::nat. m <= p & p < m + n --> f p <= k) -->
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   723
   real.sum (m, n) f <= real n * k"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   724
  by (import real SUM_BOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   725
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   726
lemma SUM_GROUP: "ALL (n::nat) (k::nat) f::nat => real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   727
   real.sum (0, n) (%m::nat. real.sum (m * k, k) f) = real.sum (0, n * k) f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   728
  by (import real SUM_GROUP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   729
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   730
lemma SUM_1: "ALL (f::nat => real) n::nat. real.sum (n, 1) f = f n"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   731
  by (import real SUM_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   732
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   733
lemma SUM_2: "ALL (f::nat => real) n::nat. real.sum (n, 2) f = f n + f (n + 1)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   734
  by (import real SUM_2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   735
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   736
lemma SUM_OFFSET: "ALL (f::nat => real) (n::nat) k::nat.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   737
   real.sum (0, n) (%m::nat. f (m + k)) =
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   738
   real.sum (0, n + k) f - real.sum (0, k) f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   739
  by (import real SUM_OFFSET)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   740
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   741
lemma SUM_REINDEX: "ALL (f::nat => real) (m::nat) (k::nat) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   742
   real.sum (m + k, n) f = real.sum (m, n) (%r::nat. f (r + k))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   743
  by (import real SUM_REINDEX)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   744
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   745
lemma SUM_0: "ALL (m::nat) n::nat. real.sum (m, n) (%r::nat. 0) = 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   746
  by (import real SUM_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   747
14847
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   748
lemma SUM_PERMUTE_0: "(All::(nat => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   749
 (%n::nat.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   750
     (All::((nat => nat) => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   751
      (%p::nat => nat.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   752
          (op -->::bool => bool => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   753
           ((All::(nat => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   754
             (%y::nat.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   755
                 (op -->::bool => bool => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   756
                  ((op <::nat => nat => bool) y n)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   757
                  ((Ex1::(nat => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   758
                    (%x::nat.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   759
                        (op &::bool => bool => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   760
                         ((op <::nat => nat => bool) x n)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   761
                         ((op =::nat => nat => bool) (p x) y)))))
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   762
           ((All::((nat => real) => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   763
             (%f::nat => real.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   764
                 (op =::real => real => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   765
                  ((real.sum::nat * nat => (nat => real) => real)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   766
                    ((Pair::nat => nat => nat * nat) (0::nat) n)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   767
                    (%n::nat. f (p n)))
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   768
                  ((real.sum::nat * nat => (nat => real) => real)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   769
                    ((Pair::nat => nat => nat * nat) (0::nat) n) f)))))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   770
  by (import real SUM_PERMUTE_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   771
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   772
lemma SUM_CANCEL: "ALL (f::nat => real) (n::nat) d::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   773
   real.sum (n, d) (%n::nat. f (Suc n) - f n) = f (n + d) - f n"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   774
  by (import real SUM_CANCEL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   775
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   776
lemma REAL_EQ_RDIV_EQ: "ALL (x::real) (xa::real) xb::real. 0 < xb --> (x = xa / xb) = (x * xb = xa)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   777
  by (import real REAL_EQ_RDIV_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   778
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   779
lemma REAL_EQ_LDIV_EQ: "ALL (x::real) (xa::real) xb::real. 0 < xb --> (x / xb = xa) = (x = xa * xb)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   780
  by (import real REAL_EQ_LDIV_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   781
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   782
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   783
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   784
;setup_theory topology
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   785
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   786
constdefs
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   787
  re_Union :: "(('a => bool) => bool) => 'a => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   788
  "re_Union ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   789
%(P::('a::type => bool) => bool) x::'a::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   790
   EX s::'a::type => bool. P s & s x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   791
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   792
lemma re_Union: "ALL P::('a::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   793
   re_Union P = (%x::'a::type. EX s::'a::type => bool. P s & s x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   794
  by (import topology re_Union)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   795
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   796
constdefs
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   797
  re_union :: "('a => bool) => ('a => bool) => 'a => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   798
  "re_union ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   799
%(P::'a::type => bool) (Q::'a::type => bool) x::'a::type. P x | Q x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   800
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   801
lemma re_union: "ALL (P::'a::type => bool) Q::'a::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   802
   re_union P Q = (%x::'a::type. P x | Q x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   803
  by (import topology re_union)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   804
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   805
constdefs
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   806
  re_intersect :: "('a => bool) => ('a => bool) => 'a => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   807
  "re_intersect ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   808
%(P::'a::type => bool) (Q::'a::type => bool) x::'a::type. P x & Q x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   809
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   810
lemma re_intersect: "ALL (P::'a::type => bool) Q::'a::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   811
   re_intersect P Q = (%x::'a::type. P x & Q x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   812
  by (import topology re_intersect)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   813
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   814
constdefs
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   815
  re_null :: "'a => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   816
  "re_null == %x::'a::type. False"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   817
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   818
lemma re_null: "re_null = (%x::'a::type. False)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   819
  by (import topology re_null)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   820
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   821
constdefs
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   822
  re_universe :: "'a => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   823
  "re_universe == %x::'a::type. True"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   824
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   825
lemma re_universe: "re_universe = (%x::'a::type. True)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   826
  by (import topology re_universe)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   827
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   828
constdefs
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   829
  re_subset :: "('a => bool) => ('a => bool) => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   830
  "re_subset ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   831
%(P::'a::type => bool) Q::'a::type => bool. ALL x::'a::type. P x --> Q x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   832
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   833
lemma re_subset: "ALL (P::'a::type => bool) Q::'a::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   834
   re_subset P Q = (ALL x::'a::type. P x --> Q x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   835
  by (import topology re_subset)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   836
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   837
constdefs
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   838
  re_compl :: "('a => bool) => 'a => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   839
  "re_compl == %(P::'a::type => bool) x::'a::type. ~ P x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   840
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   841
lemma re_compl: "ALL P::'a::type => bool. re_compl P = (%x::'a::type. ~ P x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   842
  by (import topology re_compl)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   843
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   844
lemma SUBSET_REFL: "ALL P::'a::type => bool. re_subset P P"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   845
  by (import topology SUBSET_REFL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   846
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   847
lemma COMPL_MEM: "ALL (P::'a::type => bool) x::'a::type. P x = (~ re_compl P x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   848
  by (import topology COMPL_MEM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   849
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   850
lemma SUBSET_ANTISYM: "ALL (P::'a::type => bool) Q::'a::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   851
   (re_subset P Q & re_subset Q P) = (P = Q)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   852
  by (import topology SUBSET_ANTISYM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   853
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   854
lemma SUBSET_TRANS: "ALL (P::'a::type => bool) (Q::'a::type => bool) R::'a::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   855
   re_subset P Q & re_subset Q R --> re_subset P R"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   856
  by (import topology SUBSET_TRANS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   857
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   858
constdefs
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   859
  istopology :: "(('a => bool) => bool) => bool" 
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   860
  "istopology ==
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   861
%L::('a::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   862
   L re_null &
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   863
   L re_universe &
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   864
   (ALL (a::'a::type => bool) b::'a::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   865
       L a & L b --> L (re_intersect a b)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   866
   (ALL P::('a::type => bool) => bool. re_subset P L --> L (re_Union P))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   867
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   868
lemma istopology: "ALL L::('a::type => bool) => bool.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   869
   istopology L =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   870
   (L re_null &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   871
    L re_universe &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   872
    (ALL (a::'a::type => bool) b::'a::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   873
        L a & L b --> L (re_intersect a b)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   874
    (ALL P::('a::type => bool) => bool. re_subset P L --> L (re_Union P)))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   875
  by (import topology istopology)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   876
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   877
typedef (open) ('a) topology = "(Collect::((('a::type => bool) => bool) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   878
          => (('a::type => bool) => bool) set)
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   879
 (istopology::(('a::type => bool) => bool) => bool)" 
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   880
  by (rule typedef_helper,import topology topology_TY_DEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   881
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   882
lemmas topology_TY_DEF = typedef_hol2hol4 [OF type_definition_topology]
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   883
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   884
consts
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   885
  topology :: "(('a => bool) => bool) => 'a topology" 
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   886
  "open" :: "'a topology => ('a => bool) => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   887
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   888
specification ("open" topology) topology_tybij: "(ALL a::'a::type topology. topology (open a) = a) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   889
(ALL r::('a::type => bool) => bool. istopology r = (open (topology r) = r))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   890
  by (import topology topology_tybij)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   891
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   892
lemma TOPOLOGY: "ALL L::'a::type topology.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   893
   open L re_null &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   894
   open L re_universe &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   895
   (ALL (a::'a::type => bool) b::'a::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   896
       open L a & open L b --> open L (re_intersect a b)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   897
   (ALL P::('a::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   898
       re_subset P (open L) --> open L (re_Union P))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   899
  by (import topology TOPOLOGY)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   900
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   901
lemma TOPOLOGY_UNION: "ALL (x::'a::type topology) xa::('a::type => bool) => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   902
   re_subset xa (open x) --> open x (re_Union xa)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   903
  by (import topology TOPOLOGY_UNION)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   904
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   905
constdefs
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   906
  neigh :: "'a topology => ('a => bool) * 'a => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   907
  "neigh ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   908
%(top::'a::type topology) (N::'a::type => bool, x::'a::type).
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   909
   EX P::'a::type => bool. open top P & re_subset P N & P x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   910
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   911
lemma neigh: "ALL (top::'a::type topology) (N::'a::type => bool) x::'a::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   912
   neigh top (N, x) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   913
   (EX P::'a::type => bool. open top P & re_subset P N & P x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   914
  by (import topology neigh)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   915
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   916
lemma OPEN_OWN_NEIGH: "ALL (S'::'a::type => bool) (top::'a::type topology) x::'a::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   917
   open top S' & S' x --> neigh top (S', x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   918
  by (import topology OPEN_OWN_NEIGH)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   919
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   920
lemma OPEN_UNOPEN: "ALL (S'::'a::type => bool) top::'a::type topology.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   921
   open top S' =
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   922
   (re_Union (%P::'a::type => bool. open top P & re_subset P S') = S')"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   923
  by (import topology OPEN_UNOPEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   924
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   925
lemma OPEN_SUBOPEN: "ALL (S'::'a::type => bool) top::'a::type topology.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   926
   open top S' =
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   927
   (ALL x::'a::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   928
       S' x --> (EX P::'a::type => bool. P x & open top P & re_subset P S'))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   929
  by (import topology OPEN_SUBOPEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   930
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   931
lemma OPEN_NEIGH: "ALL (S'::'a::type => bool) top::'a::type topology.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   932
   open top S' =
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   933
   (ALL x::'a::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   934
       S' x --> (EX N::'a::type => bool. neigh top (N, x) & re_subset N S'))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   935
  by (import topology OPEN_NEIGH)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   936
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   937
constdefs
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   938
  closed :: "'a topology => ('a => bool) => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   939
  "closed == %(L::'a::type topology) S'::'a::type => bool. open L (re_compl S')"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   940
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   941
lemma closed: "ALL (L::'a::type topology) S'::'a::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   942
   closed L S' = open L (re_compl S')"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   943
  by (import topology closed)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   944
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   945
constdefs
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   946
  limpt :: "'a topology => 'a => ('a => bool) => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   947
  "limpt ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   948
%(top::'a::type topology) (x::'a::type) S'::'a::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   949
   ALL N::'a::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   950
      neigh top (N, x) --> (EX y::'a::type. x ~= y & S' y & N y)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   951
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   952
lemma limpt: "ALL (top::'a::type topology) (x::'a::type) S'::'a::type => bool.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   953
   limpt top x S' =
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   954
   (ALL N::'a::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   955
       neigh top (N, x) --> (EX y::'a::type. x ~= y & S' y & N y))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   956
  by (import topology limpt)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   957
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   958
lemma CLOSED_LIMPT: "ALL (top::'a::type topology) S'::'a::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   959
   closed top S' = (ALL x::'a::type. limpt top x S' --> S' x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   960
  by (import topology CLOSED_LIMPT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   961
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   962
constdefs
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   963
  ismet :: "('a * 'a => real) => bool" 
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   964
  "ismet ==
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   965
%m::'a::type * 'a::type => real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   966
   (ALL (x::'a::type) y::'a::type. (m (x, y) = 0) = (x = y)) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   967
   (ALL (x::'a::type) (y::'a::type) z::'a::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   968
       m (y, z) <= m (x, y) + m (x, z))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   969
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   970
lemma ismet: "ALL m::'a::type * 'a::type => real.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   971
   ismet m =
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   972
   ((ALL (x::'a::type) y::'a::type. (m (x, y) = 0) = (x = y)) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   973
    (ALL (x::'a::type) (y::'a::type) z::'a::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   974
        m (y, z) <= m (x, y) + m (x, z)))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   975
  by (import topology ismet)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   976
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   977
typedef (open) ('a) metric = "(Collect::(('a::type * 'a::type => real) => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   978
          => ('a::type * 'a::type => real) set)
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   979
 (ismet::('a::type * 'a::type => real) => bool)" 
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   980
  by (rule typedef_helper,import topology metric_TY_DEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   981
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   982
lemmas metric_TY_DEF = typedef_hol2hol4 [OF type_definition_metric]
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   983
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   984
consts
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   985
  metric :: "('a * 'a => real) => 'a metric" 
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   986
  dist :: "'a metric => 'a * 'a => real" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   987
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   988
specification (dist metric) metric_tybij: "(ALL a::'a::type metric. metric (dist a) = a) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   989
(ALL r::'a::type * 'a::type => real. ismet r = (dist (metric r) = r))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   990
  by (import topology metric_tybij)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   991
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   992
lemma METRIC_ISMET: "ALL m::'a::type metric. ismet (dist m)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   993
  by (import topology METRIC_ISMET)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   994
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
   995
lemma METRIC_ZERO: "ALL (m::'a::type metric) (x::'a::type) y::'a::type.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   996
   (dist m (x, y) = 0) = (x = y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   997
  by (import topology METRIC_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   998
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
   999
lemma METRIC_SAME: "ALL (m::'a::type metric) x::'a::type. dist m (x, x) = 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1000
  by (import topology METRIC_SAME)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1001
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1002
lemma METRIC_POS: "ALL (m::'a::type metric) (x::'a::type) y::'a::type. 0 <= dist m (x, y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1003
  by (import topology METRIC_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1004
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1005
lemma METRIC_SYM: "ALL (m::'a::type metric) (x::'a::type) y::'a::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1006
   dist m (x, y) = dist m (y, x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1007
  by (import topology METRIC_SYM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1008
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1009
lemma METRIC_TRIANGLE: "ALL (m::'a::type metric) (x::'a::type) (y::'a::type) z::'a::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1010
   dist m (x, z) <= dist m (x, y) + dist m (y, z)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1011
  by (import topology METRIC_TRIANGLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1012
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1013
lemma METRIC_NZ: "ALL (m::'a::type metric) (x::'a::type) y::'a::type.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1014
   x ~= y --> 0 < dist m (x, y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1015
  by (import topology METRIC_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1016
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1017
constdefs
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1018
  mtop :: "'a metric => 'a topology" 
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1019
  "mtop ==
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1020
%m::'a::type metric.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1021
   topology
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1022
    (%S'::'a::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1023
        ALL x::'a::type.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1024
           S' x --> (EX e>0. ALL y::'a::type. dist m (x, y) < e --> S' y))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1025
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1026
lemma mtop: "ALL m::'a::type metric.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1027
   mtop m =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1028
   topology
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1029
    (%S'::'a::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1030
        ALL x::'a::type.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1031
           S' x --> (EX e>0. ALL y::'a::type. dist m (x, y) < e --> S' y))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1032
  by (import topology mtop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1033
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1034
lemma mtop_istopology: "ALL m::'a::type metric.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1035
   istopology
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1036
    (%S'::'a::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1037
        ALL x::'a::type.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1038
           S' x --> (EX e>0. ALL y::'a::type. dist m (x, y) < e --> S' y))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1039
  by (import topology mtop_istopology)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1040
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1041
lemma MTOP_OPEN: "ALL (S'::'a::type => bool) x::'a::type metric.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1042
   open (mtop x) S' =
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1043
   (ALL xa::'a::type.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1044
       S' xa --> (EX e>0. ALL y::'a::type. dist x (xa, y) < e --> S' y))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1045
  by (import topology MTOP_OPEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1046
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1047
constdefs
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1048
  B :: "'a metric => 'a * real => 'a => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1049
  "B ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1050
%(m::'a::type metric) (x::'a::type, e::real) y::'a::type. dist m (x, y) < e"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1051
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1052
lemma ball: "ALL (m::'a::type metric) (x::'a::type) e::real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1053
   B m (x, e) = (%y::'a::type. dist m (x, y) < e)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1054
  by (import topology ball)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1055
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1056
lemma BALL_OPEN: "ALL (m::'a::type metric) (x::'a::type) e::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1057
   0 < e --> open (mtop m) (B m (x, e))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1058
  by (import topology BALL_OPEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1059
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1060
lemma BALL_NEIGH: "ALL (m::'a::type metric) (x::'a::type) e::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1061
   0 < e --> neigh (mtop m) (B m (x, e), x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1062
  by (import topology BALL_NEIGH)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1063
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1064
lemma MTOP_LIMPT: "ALL (m::'a::type metric) (x::'a::type) S'::'a::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1065
   limpt (mtop m) x S' =
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1066
   (ALL e>0. EX y::'a::type. x ~= y & S' y & dist m (x, y) < e)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1067
  by (import topology MTOP_LIMPT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1068
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1069
lemma ISMET_R1: "ismet (%(x::real, y::real). abs (y - x))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1070
  by (import topology ISMET_R1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1071
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1072
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1073
  mr1 :: "real metric" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1074
  "mr1 == metric (%(x::real, y::real). abs (y - x))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1075
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1076
lemma mr1: "mr1 = metric (%(x::real, y::real). abs (y - x))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1077
  by (import topology mr1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1078
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1079
lemma MR1_DEF: "ALL (x::real) y::real. dist mr1 (x, y) = abs (y - x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1080
  by (import topology MR1_DEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1081
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1082
lemma MR1_ADD: "ALL (x::real) d::real. dist mr1 (x, x + d) = abs d"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1083
  by (import topology MR1_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1084
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1085
lemma MR1_SUB: "ALL (x::real) d::real. dist mr1 (x, x - d) = abs d"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1086
  by (import topology MR1_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1087
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1088
lemma MR1_ADD_POS: "ALL (x::real) d::real. 0 <= d --> dist mr1 (x, x + d) = d"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1089
  by (import topology MR1_ADD_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1090
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1091
lemma MR1_SUB_LE: "ALL (x::real) d::real. 0 <= d --> dist mr1 (x, x - d) = d"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1092
  by (import topology MR1_SUB_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1093
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1094
lemma MR1_ADD_LT: "ALL (x::real) d::real. 0 < d --> dist mr1 (x, x + d) = d"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1095
  by (import topology MR1_ADD_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1096
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1097
lemma MR1_SUB_LT: "ALL (x::real) d::real. 0 < d --> dist mr1 (x, x - d) = d"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1098
  by (import topology MR1_SUB_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1099
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1100
lemma MR1_BETWEEN1: "ALL (x::real) (y::real) z::real. x < z & dist mr1 (x, y) < z - x --> y < z"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1101
  by (import topology MR1_BETWEEN1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1102
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1103
lemma MR1_LIMPT: "ALL x::real. limpt (mtop mr1) x re_universe"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1104
  by (import topology MR1_LIMPT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1105
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1106
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1107
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1108
;setup_theory nets
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1109
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1110
constdefs
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1111
  dorder :: "('a => 'a => bool) => bool" 
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1112
  "dorder ==
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1113
%g::'a::type => 'a::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1114
   ALL (x::'a::type) y::'a::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1115
      g x x & g y y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1116
      (EX z::'a::type. g z z & (ALL w::'a::type. g w z --> g w x & g w y))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1117
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1118
lemma dorder: "ALL g::'a::type => 'a::type => bool.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1119
   dorder g =
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1120
   (ALL (x::'a::type) y::'a::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1121
       g x x & g y y -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1122
       (EX z::'a::type. g z z & (ALL w::'a::type. g w z --> g w x & g w y)))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1123
  by (import nets dorder)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1124
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1125
constdefs
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1126
  tends :: "('b => 'a) => 'a => 'a topology * ('b => 'b => bool) => bool" 
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1127
  "tends ==
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1128
%(s::'b::type => 'a::type) (l::'a::type) (top::'a::type topology,
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1129
   g::'b::type => 'b::type => bool).
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1130
   ALL N::'a::type => bool.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1131
      neigh top (N, l) -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1132
      (EX n::'b::type. g n n & (ALL m::'b::type. g m n --> N (s m)))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1133
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1134
lemma tends: "ALL (s::'b::type => 'a::type) (l::'a::type) (top::'a::type topology)
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1135
   g::'b::type => 'b::type => bool.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1136
   tends s l (top, g) =
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1137
   (ALL N::'a::type => bool.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1138
       neigh top (N, l) -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1139
       (EX n::'b::type. g n n & (ALL m::'b::type. g m n --> N (s m))))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1140
  by (import nets tends)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1141
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1142
constdefs
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1143
  bounded :: "'a metric * ('b => 'b => bool) => ('b => 'a) => bool" 
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1144
  "bounded ==
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1145
%(m::'a::type metric, g::'b::type => 'b::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1146
   f::'b::type => 'a::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1147
   EX (k::real) (x::'a::type) N::'b::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1148
      g N N & (ALL n::'b::type. g n N --> dist m (f n, x) < k)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1149
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1150
lemma bounded: "ALL (m::'a::type metric) (g::'b::type => 'b::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1151
   f::'b::type => 'a::type.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1152
   bounded (m, g) f =
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1153
   (EX (k::real) (x::'a::type) N::'b::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1154
       g N N & (ALL n::'b::type. g n N --> dist m (f n, x) < k))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1155
  by (import nets bounded)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1156
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1157
constdefs
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1158
  tendsto :: "'a metric * 'a => 'a => 'a => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1159
  "tendsto ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1160
%(m::'a::type metric, x::'a::type) (y::'a::type) z::'a::type.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1161
   0 < dist m (x, y) & dist m (x, y) <= dist m (x, z)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1162
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1163
lemma tendsto: "ALL (m::'a::type metric) (x::'a::type) (y::'a::type) z::'a::type.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1164
   tendsto (m, x) y z = (0 < dist m (x, y) & dist m (x, y) <= dist m (x, z))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1165
  by (import nets tendsto)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1166
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1167
lemma DORDER_LEMMA: "ALL g::'a::type => 'a::type => bool.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1168
   dorder g -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1169
   (ALL (P::'a::type => bool) Q::'a::type => bool.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1170
       (EX n::'a::type. g n n & (ALL m::'a::type. g m n --> P m)) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1171
       (EX n::'a::type. g n n & (ALL m::'a::type. g m n --> Q m)) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1172
       (EX n::'a::type. g n n & (ALL m::'a::type. g m n --> P m & Q m)))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1173
  by (import nets DORDER_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1174
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1175
lemma DORDER_NGE: "dorder nat_ge"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1176
  by (import nets DORDER_NGE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1177
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1178
lemma DORDER_TENDSTO: "ALL (m::'a::type metric) x::'a::type. dorder (tendsto (m, x))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1179
  by (import nets DORDER_TENDSTO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1180
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1181
lemma MTOP_TENDS: "ALL (d::'a::type metric) (g::'b::type => 'b::type => bool)
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1182
   (x::'b::type => 'a::type) x0::'a::type.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1183
   tends x x0 (mtop d, g) =
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1184
   (ALL e>0.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1185
       EX n::'b::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1186
          g n n & (ALL m::'b::type. g m n --> dist d (x m, x0) < e))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1187
  by (import nets MTOP_TENDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1188
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1189
lemma MTOP_TENDS_UNIQ: "ALL (g::'b::type => 'b::type => bool) d::'a::type metric.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1190
   dorder g -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1191
   tends (x::'b::type => 'a::type) (x0::'a::type) (mtop d, g) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1192
   tends x (x1::'a::type) (mtop d, g) -->
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1193
   x0 = x1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1194
  by (import nets MTOP_TENDS_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1195
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1196
lemma SEQ_TENDS: "ALL (d::'a::type metric) (x::nat => 'a::type) x0::'a::type.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1197
   tends x x0 (mtop d, nat_ge) =
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1198
   (ALL xa>0. EX xb::nat. ALL xc::nat. xb <= xc --> dist d (x xc, x0) < xa)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1199
  by (import nets SEQ_TENDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1200
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1201
lemma LIM_TENDS: "ALL (m1::'a::type metric) (m2::'b::type metric) (f::'a::type => 'b::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1202
   (x0::'a::type) y0::'b::type.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1203
   limpt (mtop m1) x0 re_universe -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1204
   tends f y0 (mtop m2, tendsto (m1, x0)) =
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1205
   (ALL e>0.
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1206
       EX d>0.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1207
          ALL x::'a::type.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1208
             0 < dist m1 (x, x0) & dist m1 (x, x0) <= d -->
15647
b1f486a9c56b Updated import configuration.
skalberg
parents: 15071
diff changeset
  1209
             dist m2 (f x, y0) < e)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1210
  by (import nets LIM_TENDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1211
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1212
lemma LIM_TENDS2: "ALL (m1::'a::type metric) (m2::'b::type metric) (f::'a::type => 'b::type)
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1213
   (x0::'a::type) y0::'b::type.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1214
   limpt (mtop m1) x0 re_universe -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1215
   tends f y0 (mtop m2, tendsto (m1, x0)) =
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1216
   (ALL e>0.
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1217
       EX d>0.
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1218
          ALL x::'a::type.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1219
             0 < dist m1 (x, x0) & dist m1 (x, x0) < d -->
15647
b1f486a9c56b Updated import configuration.
skalberg
parents: 15071
diff changeset
  1220
             dist m2 (f x, y0) < e)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1221
  by (import nets LIM_TENDS2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1222
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1223
lemma MR1_BOUNDED: "ALL (g::'a::type => 'a::type => bool) f::'a::type => real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1224
   bounded (mr1, g) f =
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1225
   (EX (k::real) N::'a::type.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1226
       g N N & (ALL n::'a::type. g n N --> abs (f n) < k))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1227
  by (import nets MR1_BOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1228
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1229
lemma NET_NULL: "ALL (g::'a::type => 'a::type => bool) (x::'a::type => real) x0::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1230
   tends x x0 (mtop mr1, g) = tends (%n::'a::type. x n - x0) 0 (mtop mr1, g)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1231
  by (import nets NET_NULL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1232
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1233
lemma NET_CONV_BOUNDED: "ALL (g::'a::type => 'a::type => bool) (x::'a::type => real) x0::real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1234
   tends x x0 (mtop mr1, g) --> bounded (mr1, g) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1235
  by (import nets NET_CONV_BOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1236
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1237
lemma NET_CONV_NZ: "ALL (g::'a::type => 'a::type => bool) (x::'a::type => real) x0::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1238
   tends x x0 (mtop mr1, g) & x0 ~= 0 -->
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1239
   (EX N::'a::type. g N N & (ALL n::'a::type. g n N --> x n ~= 0))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1240
  by (import nets NET_CONV_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1241
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1242
lemma NET_CONV_IBOUNDED: "ALL (g::'a::type => 'a::type => bool) (x::'a::type => real) x0::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1243
   tends x x0 (mtop mr1, g) & x0 ~= 0 -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1244
   bounded (mr1, g) (%n::'a::type. inverse (x n))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1245
  by (import nets NET_CONV_IBOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1246
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1247
lemma NET_NULL_ADD: "ALL g::'a::type => 'a::type => bool.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1248
   dorder g -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1249
   (ALL (x::'a::type => real) y::'a::type => real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1250
       tends x 0 (mtop mr1, g) & tends y 0 (mtop mr1, g) -->
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1251
       tends (%n::'a::type. x n + y n) 0 (mtop mr1, g))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1252
  by (import nets NET_NULL_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1253
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1254
lemma NET_NULL_MUL: "ALL g::'a::type => 'a::type => bool.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1255
   dorder g -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1256
   (ALL (x::'a::type => real) y::'a::type => real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1257
       bounded (mr1, g) x & tends y 0 (mtop mr1, g) -->
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1258
       tends (%n::'a::type. x n * y n) 0 (mtop mr1, g))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1259
  by (import nets NET_NULL_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1260
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1261
lemma NET_NULL_CMUL: "ALL (g::'a::type => 'a::type => bool) (k::real) x::'a::type => real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1262
   tends x 0 (mtop mr1, g) --> tends (%n::'a::type. k * x n) 0 (mtop mr1, g)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1263
  by (import nets NET_NULL_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1264
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1265
lemma NET_ADD: "ALL g::'a::type => 'a::type => bool.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1266
   dorder g -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1267
   (ALL (x::'a::type => real) (x0::real) (y::'a::type => real) y0::real.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1268
       tends x x0 (mtop mr1, g) & tends y y0 (mtop mr1, g) -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1269
       tends (%n::'a::type. x n + y n) (x0 + y0) (mtop mr1, g))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1270
  by (import nets NET_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1271
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1272
lemma NET_NEG: "ALL g::'a::type => 'a::type => bool.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1273
   dorder g -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1274
   (ALL (x::'a::type => real) x0::real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1275
       tends x x0 (mtop mr1, g) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1276
       tends (%n::'a::type. - x n) (- x0) (mtop mr1, g))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1277
  by (import nets NET_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1278
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1279
lemma NET_SUB: "ALL g::'a::type => 'a::type => bool.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1280
   dorder g -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1281
   (ALL (x::'a::type => real) (x0::real) (y::'a::type => real) y0::real.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1282
       tends x x0 (mtop mr1, g) & tends y y0 (mtop mr1, g) -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1283
       tends (%xa::'a::type. x xa - y xa) (x0 - y0) (mtop mr1, g))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1284
  by (import nets NET_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1285
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1286
lemma NET_MUL: "ALL g::'a::type => 'a::type => bool.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1287
   dorder g -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1288
   (ALL (x::'a::type => real) (y::'a::type => real) (x0::real) y0::real.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1289
       tends x x0 (mtop mr1, g) & tends y y0 (mtop mr1, g) -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1290
       tends (%n::'a::type. x n * y n) (x0 * y0) (mtop mr1, g))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1291
  by (import nets NET_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1292
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1293
lemma NET_INV: "ALL g::'a::type => 'a::type => bool.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1294
   dorder g -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1295
   (ALL (x::'a::type => real) x0::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1296
       tends x x0 (mtop mr1, g) & x0 ~= 0 -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1297
       tends (%n::'a::type. inverse (x n)) (inverse x0) (mtop mr1, g))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1298
  by (import nets NET_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1299
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1300
lemma NET_DIV: "ALL g::'a::type => 'a::type => bool.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1301
   dorder g -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1302
   (ALL (x::'a::type => real) (x0::real) (y::'a::type => real) y0::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1303
       tends x x0 (mtop mr1, g) & tends y y0 (mtop mr1, g) & y0 ~= 0 -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1304
       tends (%xa::'a::type. x xa / y xa) (x0 / y0) (mtop mr1, g))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1305
  by (import nets NET_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1306
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1307
lemma NET_ABS: "ALL (g::'a::type => 'a::type => bool) (x::'a::type => real) x0::real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1308
   tends x x0 (mtop mr1, g) -->
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1309
   tends (%n::'a::type. abs (x n)) (abs x0) (mtop mr1, g)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1310
  by (import nets NET_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1311
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1312
lemma NET_LE: "ALL g::'a::type => 'a::type => bool.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1313
   dorder g -->
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1314
   (ALL (x::'a::type => real) (x0::real) (y::'a::type => real) y0::real.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1315
       tends x x0 (mtop mr1, g) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1316
       tends y y0 (mtop mr1, g) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1317
       (EX N::'a::type. g N N & (ALL n::'a::type. g n N --> x n <= y n)) -->
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1318
       x0 <= y0)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1319
  by (import nets NET_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1320
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1321
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1322
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1323
;setup_theory seq
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1324
14694
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
  1325
consts
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1326
  "hol4-->" :: "(nat => real) => real => bool" ("hol4-->")
14694
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
  1327
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
  1328
defs
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1329
  "hol4-->_def": "hol4--> == %(x::nat => real) x0::real. tends x x0 (mtop mr1, nat_ge)"
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1330
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1331
lemma tends_num_real: "ALL (x::nat => real) x0::real. hol4--> x x0 = tends x x0 (mtop mr1, nat_ge)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1332
  by (import seq tends_num_real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1333
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1334
lemma SEQ: "ALL (x::nat => real) x0::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1335
   hol4--> x x0 =
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1336
   (ALL e>0. EX N::nat. ALL n::nat. N <= n --> abs (x n - x0) < e)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1337
  by (import seq SEQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1338
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1339
lemma SEQ_CONST: "ALL k::real. hol4--> (%x::nat. k) k"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1340
  by (import seq SEQ_CONST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1341
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1342
lemma SEQ_ADD: "ALL (x::nat => real) (x0::real) (y::nat => real) y0::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1343
   hol4--> x x0 & hol4--> y y0 --> hol4--> (%n::nat. x n + y n) (x0 + y0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1344
  by (import seq SEQ_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1345
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1346
lemma SEQ_MUL: "ALL (x::nat => real) (x0::real) (y::nat => real) y0::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1347
   hol4--> x x0 & hol4--> y y0 --> hol4--> (%n::nat. x n * y n) (x0 * y0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1348
  by (import seq SEQ_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1349
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1350
lemma SEQ_NEG: "ALL (x::nat => real) x0::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1351
   hol4--> x x0 = hol4--> (%n::nat. - x n) (- x0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1352
  by (import seq SEQ_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1353
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1354
lemma SEQ_INV: "ALL (x::nat => real) x0::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1355
   hol4--> x x0 & x0 ~= 0 --> hol4--> (%n::nat. inverse (x n)) (inverse x0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1356
  by (import seq SEQ_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1357
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1358
lemma SEQ_SUB: "ALL (x::nat => real) (x0::real) (y::nat => real) y0::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1359
   hol4--> x x0 & hol4--> y y0 --> hol4--> (%n::nat. x n - y n) (x0 - y0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1360
  by (import seq SEQ_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1361
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1362
lemma SEQ_DIV: "ALL (x::nat => real) (x0::real) (y::nat => real) y0::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1363
   hol4--> x x0 & hol4--> y y0 & y0 ~= 0 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1364
   hol4--> (%n::nat. x n / y n) (x0 / y0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1365
  by (import seq SEQ_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1366
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1367
lemma SEQ_UNIQ: "ALL (x::nat => real) (x1::real) x2::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1368
   hol4--> x x1 & hol4--> x x2 --> x1 = x2"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1369
  by (import seq SEQ_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1370
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1371
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1372
  convergent :: "(nat => real) => bool" 
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1373
  "convergent == %f::nat => real. Ex (hol4--> f)"
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1374
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1375
lemma convergent: "ALL f::nat => real. convergent f = Ex (hol4--> f)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1376
  by (import seq convergent)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1377
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1378
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1379
  cauchy :: "(nat => real) => bool" 
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1380
  "cauchy ==
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1381
%f::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1382
   ALL e>0.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1383
      EX N::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1384
         ALL (m::nat) n::nat. N <= m & N <= n --> abs (f m - f n) < e"
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1385
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1386
lemma cauchy: "ALL f::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1387
   cauchy f =
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1388
   (ALL e>0.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1389
       EX N::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1390
          ALL (m::nat) n::nat. N <= m & N <= n --> abs (f m - f n) < e)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1391
  by (import seq cauchy)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1392
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1393
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1394
  lim :: "(nat => real) => real" 
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1395
  "lim == %f::nat => real. Eps (hol4--> f)"
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1396
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1397
lemma lim: "ALL f::nat => real. lim f = Eps (hol4--> f)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1398
  by (import seq lim)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1399
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1400
lemma SEQ_LIM: "ALL f::nat => real. convergent f = hol4--> f (lim f)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1401
  by (import seq SEQ_LIM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1402
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1403
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1404
  subseq :: "(nat => nat) => bool" 
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1405
  "subseq == %f::nat => nat. ALL (m::nat) n::nat. m < n --> f m < f n"
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1406
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1407
lemma subseq: "ALL f::nat => nat. subseq f = (ALL (m::nat) n::nat. m < n --> f m < f n)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1408
  by (import seq subseq)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1409
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1410
lemma SUBSEQ_SUC: "ALL f::nat => nat. subseq f = (ALL n::nat. f n < f (Suc n))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1411
  by (import seq SUBSEQ_SUC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1412
14694
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
  1413
consts
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1414
  mono :: "(nat => real) => bool" 
14694
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
  1415
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
  1416
defs
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1417
  mono_def: "seq.mono ==
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1418
%f::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1419
   (ALL (m::nat) n::nat. m <= n --> f m <= f n) |
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1420
   (ALL (m::nat) n::nat. m <= n --> f n <= f m)"
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1421
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1422
lemma mono: "ALL f::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1423
   seq.mono f =
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1424
   ((ALL (m::nat) n::nat. m <= n --> f m <= f n) |
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1425
    (ALL (m::nat) n::nat. m <= n --> f n <= f m))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1426
  by (import seq mono)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1427
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1428
lemma MONO_SUC: "ALL f::nat => real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1429
   seq.mono f =
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1430
   ((ALL x::nat. f x <= f (Suc x)) | (ALL n::nat. f (Suc n) <= f n))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1431
  by (import seq MONO_SUC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1432
14847
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1433
lemma MAX_LEMMA: "(All::((nat => real) => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1434
 (%s::nat => real.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1435
     (All::(nat => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1436
      (%N::nat.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1437
          (Ex::(real => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1438
           (%k::real.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1439
               (All::(nat => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1440
                (%n::nat.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1441
                    (op -->::bool => bool => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1442
                     ((op <::nat => nat => bool) n N)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1443
                     ((op <::real => real => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1444
                       ((abs::real => real) (s n)) k)))))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1445
  by (import seq MAX_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1446
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1447
lemma SEQ_BOUNDED: "ALL s::nat => real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1448
   bounded (mr1, nat_ge) s = (EX k::real. ALL n::nat. abs (s n) < k)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1449
  by (import seq SEQ_BOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1450
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1451
lemma SEQ_BOUNDED_2: "ALL (f::nat => real) (k::real) k'::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1452
   (ALL n::nat. k <= f n & f n <= k') --> bounded (mr1, nat_ge) f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1453
  by (import seq SEQ_BOUNDED_2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1454
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1455
lemma SEQ_CBOUNDED: "ALL f::nat => real. cauchy f --> bounded (mr1, nat_ge) f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1456
  by (import seq SEQ_CBOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1457
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1458
lemma SEQ_ICONV: "ALL f::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1459
   bounded (mr1, nat_ge) f &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1460
   (ALL (m::nat) n::nat. n <= m --> f n <= f m) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1461
   convergent f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1462
  by (import seq SEQ_ICONV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1463
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1464
lemma SEQ_NEG_CONV: "ALL f::nat => real. convergent f = convergent (%n::nat. - f n)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1465
  by (import seq SEQ_NEG_CONV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1466
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1467
lemma SEQ_NEG_BOUNDED: "ALL f::nat => real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1468
   bounded (mr1, nat_ge) (%n::nat. - f n) = bounded (mr1, nat_ge) f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1469
  by (import seq SEQ_NEG_BOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1470
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1471
lemma SEQ_BCONV: "ALL f::nat => real. bounded (mr1, nat_ge) f & seq.mono f --> convergent f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1472
  by (import seq SEQ_BCONV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1473
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1474
lemma SEQ_MONOSUB: "ALL s::nat => real. EX f::nat => nat. subseq f & seq.mono (%n::nat. s (f n))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1475
  by (import seq SEQ_MONOSUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1476
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1477
lemma SEQ_SBOUNDED: "ALL (s::nat => real) f::nat => nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1478
   bounded (mr1, nat_ge) s --> bounded (mr1, nat_ge) (%n::nat. s (f n))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1479
  by (import seq SEQ_SBOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1480
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1481
lemma SEQ_SUBLE: "ALL f::nat => nat. subseq f --> (ALL n::nat. n <= f n)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1482
  by (import seq SEQ_SUBLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1483
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1484
lemma SEQ_DIRECT: "ALL f::nat => nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1485
   subseq f --> (ALL (N1::nat) N2::nat. EX x::nat. N1 <= x & N2 <= f x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1486
  by (import seq SEQ_DIRECT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1487
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1488
lemma SEQ_CAUCHY: "ALL f::nat => real. cauchy f = convergent f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1489
  by (import seq SEQ_CAUCHY)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1490
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1491
lemma SEQ_LE: "ALL (f::nat => real) (g::nat => real) (l::real) m::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1492
   hol4--> f l &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1493
   hol4--> g m & (EX x::nat. ALL xa::nat. x <= xa --> f xa <= g xa) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1494
   l <= m"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1495
  by (import seq SEQ_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1496
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1497
lemma SEQ_SUC: "ALL (f::nat => real) l::real. hol4--> f l = hol4--> (%n::nat. f (Suc n)) l"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1498
  by (import seq SEQ_SUC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1499
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1500
lemma SEQ_ABS: "ALL f::nat => real. hol4--> (%n::nat. abs (f n)) 0 = hol4--> f 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1501
  by (import seq SEQ_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1502
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1503
lemma SEQ_ABS_IMP: "ALL (f::nat => real) l::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1504
   hol4--> f l --> hol4--> (%n::nat. abs (f n)) (abs l)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1505
  by (import seq SEQ_ABS_IMP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1506
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1507
lemma SEQ_INV0: "ALL f::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1508
   (ALL y::real. EX N::nat. ALL n::nat. N <= n --> y < f n) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1509
   hol4--> (%n::nat. inverse (f n)) 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1510
  by (import seq SEQ_INV0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1511
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1512
lemma SEQ_POWER_ABS: "ALL c::real. abs c < 1 --> hol4--> (op ^ (abs c)) 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1513
  by (import seq SEQ_POWER_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1514
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1515
lemma SEQ_POWER: "ALL c::real. abs c < 1 --> hol4--> (op ^ c) 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1516
  by (import seq SEQ_POWER)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1517
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1518
lemma NEST_LEMMA: "ALL (f::nat => real) g::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1519
   (ALL n::nat. f n <= f (Suc n)) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1520
   (ALL n::nat. g (Suc n) <= g n) & (ALL n::nat. f n <= g n) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1521
   (EX (l::real) m::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1522
       l <= m &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1523
       ((ALL n::nat. f n <= l) & hol4--> f l) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1524
       (ALL n::nat. m <= g n) & hol4--> g m)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1525
  by (import seq NEST_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1526
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1527
lemma NEST_LEMMA_UNIQ: "ALL (f::nat => real) g::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1528
   (ALL n::nat. f n <= f (Suc n)) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1529
   (ALL n::nat. g (Suc n) <= g n) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1530
   (ALL n::nat. f n <= g n) & hol4--> (%n::nat. f n - g n) 0 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1531
   (EX x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1532
       ((ALL n::nat. f n <= x) & hol4--> f x) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1533
       (ALL n::nat. x <= g n) & hol4--> g x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1534
  by (import seq NEST_LEMMA_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1535
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1536
lemma BOLZANO_LEMMA: "ALL P::real * real => bool.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1537
   (ALL (a::real) (b::real) c::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1538
       a <= b & b <= c & P (a, b) & P (b, c) --> P (a, c)) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1539
   (ALL x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1540
       EX d>0.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1541
          ALL (a::real) b::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1542
             a <= x & x <= b & b - a < d --> P (a, b)) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1543
   (ALL (a::real) b::real. a <= b --> P (a, b))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1544
  by (import seq BOLZANO_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1545
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1546
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1547
  sums :: "(nat => real) => real => bool" 
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1548
  "sums == %f::nat => real. hol4--> (%n::nat. real.sum (0, n) f)"
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1549
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1550
lemma sums: "ALL (f::nat => real) s::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1551
   sums f s = hol4--> (%n::nat. real.sum (0, n) f) s"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1552
  by (import seq sums)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1553
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1554
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1555
  summable :: "(nat => real) => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1556
  "summable == %f::nat => real. Ex (sums f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1557
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1558
lemma summable: "ALL f::nat => real. summable f = Ex (sums f)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1559
  by (import seq summable)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1560
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1561
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1562
  suminf :: "(nat => real) => real" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1563
  "suminf == %f::nat => real. Eps (sums f)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1564
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1565
lemma suminf: "ALL f::nat => real. suminf f = Eps (sums f)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1566
  by (import seq suminf)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1567
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1568
lemma SUM_SUMMABLE: "ALL (f::nat => real) l::real. sums f l --> summable f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1569
  by (import seq SUM_SUMMABLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1570
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1571
lemma SUMMABLE_SUM: "ALL f::nat => real. summable f --> sums f (suminf f)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1572
  by (import seq SUMMABLE_SUM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1573
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1574
lemma SUM_UNIQ: "ALL (f::nat => real) x::real. sums f x --> x = suminf f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1575
  by (import seq SUM_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1576
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1577
lemma SER_0: "ALL (f::nat => real) n::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1578
   (ALL m::nat. n <= m --> f m = 0) --> sums f (real.sum (0, n) f)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1579
  by (import seq SER_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1580
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1581
lemma SER_POS_LE: "ALL (f::nat => real) n::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1582
   summable f & (ALL m::nat. n <= m --> 0 <= f m) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1583
   real.sum (0, n) f <= suminf f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1584
  by (import seq SER_POS_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1585
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1586
lemma SER_POS_LT: "ALL (f::nat => real) n::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1587
   summable f & (ALL m::nat. n <= m --> 0 < f m) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1588
   real.sum (0, n) f < suminf f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1589
  by (import seq SER_POS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1590
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1591
lemma SER_GROUP: "ALL (f::nat => real) k::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1592
   summable f & 0 < k --> sums (%n::nat. real.sum (n * k, k) f) (suminf f)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1593
  by (import seq SER_GROUP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1594
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1595
lemma SER_PAIR: "ALL f::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1596
   summable f --> sums (%n::nat. real.sum (2 * n, 2) f) (suminf f)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1597
  by (import seq SER_PAIR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1598
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1599
lemma SER_OFFSET: "ALL f::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1600
   summable f -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1601
   (ALL k::nat. sums (%n::nat. f (n + k)) (suminf f - real.sum (0, k) f))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1602
  by (import seq SER_OFFSET)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1603
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1604
lemma SER_POS_LT_PAIR: "ALL (f::nat => real) n::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1605
   summable f & (ALL d::nat. 0 < f (n + 2 * d) + f (n + (2 * d + 1))) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1606
   real.sum (0, n) f < suminf f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1607
  by (import seq SER_POS_LT_PAIR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1608
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1609
lemma SER_ADD: "ALL (x::nat => real) (x0::real) (y::nat => real) y0::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1610
   sums x x0 & sums y y0 --> sums (%n::nat. x n + y n) (x0 + y0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1611
  by (import seq SER_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1612
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1613
lemma SER_CMUL: "ALL (x::nat => real) (x0::real) c::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1614
   sums x x0 --> sums (%n::nat. c * x n) (c * x0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1615
  by (import seq SER_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1616
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1617
lemma SER_NEG: "ALL (x::nat => real) x0::real. sums x x0 --> sums (%xa::nat. - x xa) (- x0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1618
  by (import seq SER_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1619
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1620
lemma SER_SUB: "ALL (x::nat => real) (x0::real) (y::nat => real) y0::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1621
   sums x x0 & sums y y0 --> sums (%xa::nat. x xa - y xa) (x0 - y0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1622
  by (import seq SER_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1623
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1624
lemma SER_CDIV: "ALL (x::nat => real) (x0::real) c::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1625
   sums x x0 --> sums (%xa::nat. x xa / c) (x0 / c)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1626
  by (import seq SER_CDIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1627
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1628
lemma SER_CAUCHY: "ALL f::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1629
   summable f =
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1630
   (ALL e>0.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1631
       EX N::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1632
          ALL (m::nat) n::nat. N <= m --> abs (real.sum (m, n) f) < e)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1633
  by (import seq SER_CAUCHY)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1634
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1635
lemma SER_ZERO: "ALL f::nat => real. summable f --> hol4--> f 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1636
  by (import seq SER_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1637
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1638
lemma SER_COMPAR: "ALL (f::nat => real) g::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1639
   (EX x::nat. ALL xa::nat. x <= xa --> abs (f xa) <= g xa) & summable g -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1640
   summable f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1641
  by (import seq SER_COMPAR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1642
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1643
lemma SER_COMPARA: "ALL (f::nat => real) g::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1644
   (EX x::nat. ALL xa::nat. x <= xa --> abs (f xa) <= g xa) & summable g -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1645
   summable (%k::nat. abs (f k))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1646
  by (import seq SER_COMPARA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1647
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1648
lemma SER_LE: "ALL (f::nat => real) g::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1649
   (ALL n::nat. f n <= g n) & summable f & summable g -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1650
   suminf f <= suminf g"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1651
  by (import seq SER_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1652
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1653
lemma SER_LE2: "ALL (f::nat => real) g::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1654
   (ALL n::nat. abs (f n) <= g n) & summable g -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1655
   summable f & suminf f <= suminf g"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1656
  by (import seq SER_LE2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1657
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1658
lemma SER_ACONV: "ALL f::nat => real. summable (%n::nat. abs (f n)) --> summable f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1659
  by (import seq SER_ACONV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1660
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1661
lemma SER_ABS: "ALL f::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1662
   summable (%n::nat. abs (f n)) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1663
   abs (suminf f) <= suminf (%n::nat. abs (f n))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1664
  by (import seq SER_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1665
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1666
lemma GP_FINITE: "ALL x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1667
   x ~= 1 --> (ALL n::nat. real.sum (0, n) (op ^ x) = (x ^ n - 1) / (x - 1))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1668
  by (import seq GP_FINITE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1669
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1670
lemma GP: "ALL x::real. abs x < 1 --> sums (op ^ x) (inverse (1 - x))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1671
  by (import seq GP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1672
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1673
lemma ABS_NEG_LEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1674
 (%c::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1675
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1676
      ((op <=::real => real => bool) c (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1677
      ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1678
        (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1679
            (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1680
             (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1681
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1682
                  ((op <=::real => real => bool) ((abs::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1683
                    ((op *::real => real => real) c
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1684
                      ((abs::real => real) y)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1685
                  ((op =::real => real => bool) x (0::real))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1686
  by (import seq ABS_NEG_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1687
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1688
lemma SER_RATIO: "ALL (f::nat => real) (c::real) N::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1689
   c < 1 & (ALL n::nat. N <= n --> abs (f (Suc n)) <= c * abs (f n)) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1690
   summable f"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1691
  by (import seq SER_RATIO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1692
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1693
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1694
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1695
;setup_theory lim
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1696
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1697
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1698
  tends_real_real :: "(real => real) => real => real => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1699
  "tends_real_real ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1700
%(f::real => real) (l::real) x0::real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1701
   tends f l (mtop mr1, tendsto (mr1, x0))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1702
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1703
lemma tends_real_real: "ALL (f::real => real) (l::real) x0::real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1704
   tends_real_real f l x0 = tends f l (mtop mr1, tendsto (mr1, x0))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1705
  by (import lim tends_real_real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1706
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1707
lemma LIM: "ALL (f::real => real) (y0::real) x0::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1708
   tends_real_real f y0 x0 =
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1709
   (ALL e>0.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1710
       EX d>0.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1711
          ALL x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1712
             0 < abs (x - x0) & abs (x - x0) < d --> abs (f x - y0) < e)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1713
  by (import lim LIM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1714
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1715
lemma LIM_CONST: "ALL k::real. All (tends_real_real (%x::real. k) k)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1716
  by (import lim LIM_CONST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1717
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1718
lemma LIM_ADD: "ALL (f::real => real) (g::real => real) (l::real) (m::real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1719
   tends_real_real f l x & tends_real_real g m x -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1720
   tends_real_real (%x::real. f x + g x) (l + m) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1721
  by (import lim LIM_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1722
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1723
lemma LIM_MUL: "ALL (f::real => real) (g::real => real) (l::real) (m::real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1724
   tends_real_real f l x & tends_real_real g m x -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1725
   tends_real_real (%x::real. f x * g x) (l * m) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1726
  by (import lim LIM_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1727
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1728
lemma LIM_NEG: "ALL (f::real => real) (l::real) x::real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1729
   tends_real_real f l x = tends_real_real (%x::real. - f x) (- l) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1730
  by (import lim LIM_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1731
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1732
lemma LIM_INV: "ALL (f::real => real) (l::real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1733
   tends_real_real f l x & l ~= 0 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1734
   tends_real_real (%x::real. inverse (f x)) (inverse l) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1735
  by (import lim LIM_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1736
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1737
lemma LIM_SUB: "ALL (f::real => real) (g::real => real) (l::real) (m::real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1738
   tends_real_real f l x & tends_real_real g m x -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1739
   tends_real_real (%x::real. f x - g x) (l - m) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1740
  by (import lim LIM_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1741
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1742
lemma LIM_DIV: "ALL (f::real => real) (g::real => real) (l::real) (m::real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1743
   tends_real_real f l x & tends_real_real g m x & m ~= 0 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1744
   tends_real_real (%x::real. f x / g x) (l / m) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1745
  by (import lim LIM_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1746
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1747
lemma LIM_NULL: "ALL (f::real => real) (l::real) x::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1748
   tends_real_real f l x = tends_real_real (%x::real. f x - l) 0 x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1749
  by (import lim LIM_NULL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1750
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1751
lemma LIM_X: "ALL x0::real. tends_real_real (%x::real. x) x0 x0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1752
  by (import lim LIM_X)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1753
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1754
lemma LIM_UNIQ: "ALL (f::real => real) (l::real) (m::real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1755
   tends_real_real f l x & tends_real_real f m x --> l = m"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1756
  by (import lim LIM_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1757
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1758
lemma LIM_EQUAL: "ALL (f::real => real) (g::real => real) (l::real) x0::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1759
   (ALL x::real. x ~= x0 --> f x = g x) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1760
   tends_real_real f l x0 = tends_real_real g l x0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1761
  by (import lim LIM_EQUAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1762
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1763
lemma LIM_TRANSFORM: "ALL (f::real => real) (g::real => real) (x0::real) l::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1764
   tends_real_real (%x::real. f x - g x) 0 x0 & tends_real_real g l x0 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1765
   tends_real_real f l x0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1766
  by (import lim LIM_TRANSFORM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1767
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1768
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1769
  diffl :: "(real => real) => real => real => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1770
  "diffl ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1771
%(f::real => real) (l::real) x::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1772
   tends_real_real (%h::real. (f (x + h) - f x) / h) l 0"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1773
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1774
lemma diffl: "ALL (f::real => real) (l::real) x::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1775
   diffl f l x = tends_real_real (%h::real. (f (x + h) - f x) / h) l 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1776
  by (import lim diffl)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1777
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1778
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1779
  contl :: "(real => real) => real => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1780
  "contl ==
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1781
%(f::real => real) x::real. tends_real_real (%h::real. f (x + h)) (f x) 0"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1782
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1783
lemma contl: "ALL (f::real => real) x::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1784
   contl f x = tends_real_real (%h::real. f (x + h)) (f x) 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1785
  by (import lim contl)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1786
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1787
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1788
  differentiable :: "(real => real) => real => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1789
  "differentiable == %(f::real => real) x::real. EX l::real. diffl f l x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1790
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1791
lemma differentiable: "ALL (f::real => real) x::real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1792
   differentiable f x = (EX l::real. diffl f l x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1793
  by (import lim differentiable)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1794
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1795
lemma DIFF_UNIQ: "ALL (f::real => real) (l::real) (m::real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1796
   diffl f l x & diffl f m x --> l = m"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1797
  by (import lim DIFF_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1798
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1799
lemma DIFF_CONT: "ALL (f::real => real) (l::real) x::real. diffl f l x --> contl f x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1800
  by (import lim DIFF_CONT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1801
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1802
lemma CONTL_LIM: "ALL (f::real => real) x::real. contl f x = tends_real_real f (f x) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1803
  by (import lim CONTL_LIM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1804
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1805
lemma DIFF_CARAT: "ALL (f::real => real) (l::real) x::real.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1806
   diffl f l x =
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1807
   (EX g::real => real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1808
       (ALL z::real. f z - f x = g z * (z - x)) & contl g x & g x = l)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1809
  by (import lim DIFF_CARAT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1810
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  1811
lemma CONT_CONST: "ALL k::real. All (contl (%x::real. k))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1812
  by (import lim CONT_CONST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1813
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1814
lemma CONT_ADD: "ALL (f::real => real) (g::real => real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1815
   contl f x & contl g x --> contl (%x::real. f x + g x) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1816
  by (import lim CONT_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1817
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1818
lemma CONT_MUL: "ALL (f::real => real) (g::real => real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1819
   contl f x & contl g x --> contl (%x::real. f x * g x) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1820
  by (import lim CONT_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1821
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1822
lemma CONT_NEG: "ALL (f::real => real) x::real. contl f x --> contl (%x::real. - f x) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1823
  by (import lim CONT_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1824
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1825
lemma CONT_INV: "ALL (f::real => real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1826
   contl f x & f x ~= 0 --> contl (%x::real. inverse (f x)) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1827
  by (import lim CONT_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1828
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1829
lemma CONT_SUB: "ALL (f::real => real) (g::real => real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1830
   contl f x & contl g x --> contl (%x::real. f x - g x) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1831
  by (import lim CONT_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1832
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1833
lemma CONT_DIV: "ALL (f::real => real) (g::real => real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1834
   contl f x & contl g x & g x ~= 0 --> contl (%x::real. f x / g x) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1835
  by (import lim CONT_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1836
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1837
lemma CONT_COMPOSE: "ALL (f::real => real) (g::real => real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1838
   contl f x & contl g (f x) --> contl (%x::real. g (f x)) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1839
  by (import lim CONT_COMPOSE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1840
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1841
lemma IVT: "ALL (f::real => real) (a::real) (b::real) y::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1842
   a <= b &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1843
   (f a <= y & y <= f b) & (ALL x::real. a <= x & x <= b --> contl f x) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1844
   (EX x::real. a <= x & x <= b & f x = y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1845
  by (import lim IVT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1846
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1847
lemma IVT2: "ALL (f::real => real) (a::real) (b::real) y::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1848
   a <= b &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1849
   (f b <= y & y <= f a) & (ALL x::real. a <= x & x <= b --> contl f x) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1850
   (EX x::real. a <= x & x <= b & f x = y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1851
  by (import lim IVT2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1852
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1853
lemma DIFF_CONST: "ALL k::real. All (diffl (%x::real. k) 0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1854
  by (import lim DIFF_CONST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1855
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1856
lemma DIFF_ADD: "ALL (f::real => real) (g::real => real) (l::real) (m::real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1857
   diffl f l x & diffl g m x --> diffl (%x::real. f x + g x) (l + m) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1858
  by (import lim DIFF_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1859
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1860
lemma DIFF_MUL: "ALL (f::real => real) (g::real => real) (l::real) (m::real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1861
   diffl f l x & diffl g m x -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1862
   diffl (%x::real. f x * g x) (l * g x + m * f x) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1863
  by (import lim DIFF_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1864
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1865
lemma DIFF_CMUL: "ALL (f::real => real) (c::real) (l::real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1866
   diffl f l x --> diffl (%x::real. c * f x) (c * l) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1867
  by (import lim DIFF_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1868
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1869
lemma DIFF_NEG: "ALL (f::real => real) (l::real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1870
   diffl f l x --> diffl (%x::real. - f x) (- l) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1871
  by (import lim DIFF_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1872
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1873
lemma DIFF_SUB: "ALL (f::real => real) (g::real => real) (l::real) (m::real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1874
   diffl f l x & diffl g m x --> diffl (%x::real. f x - g x) (l - m) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1875
  by (import lim DIFF_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1876
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1877
lemma DIFF_CHAIN: "ALL (f::real => real) (g::real => real) (l::real) (m::real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1878
   diffl f l (g x) & diffl g m x --> diffl (%x::real. f (g x)) (l * m) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1879
  by (import lim DIFF_CHAIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1880
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1881
lemma DIFF_X: "All (diffl (%x::real. x) 1)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1882
  by (import lim DIFF_X)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1883
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  1884
lemma DIFF_POW: "ALL (n::nat) x::real. diffl (%x::real. x ^ n) (real n * x ^ (n - 1)) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1885
  by (import lim DIFF_POW)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1886
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1887
lemma DIFF_XM1: "ALL x::real. x ~= 0 --> diffl inverse (- (inverse x ^ 2)) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1888
  by (import lim DIFF_XM1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1889
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1890
lemma DIFF_INV: "ALL (f::real => real) (l::real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1891
   diffl f l x & f x ~= 0 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1892
   diffl (%x::real. inverse (f x)) (- (l / f x ^ 2)) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1893
  by (import lim DIFF_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1894
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1895
lemma DIFF_DIV: "ALL (f::real => real) (g::real => real) (l::real) (m::real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1896
   diffl f l x & diffl g m x & g x ~= 0 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1897
   diffl (%x::real. f x / g x) ((l * g x - m * f x) / g x ^ 2) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1898
  by (import lim DIFF_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1899
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1900
lemma DIFF_SUM: "ALL (f::nat => real => real) (f'::nat => real => real) (m::nat) (n::nat)
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1901
   x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1902
   (ALL r::nat. m <= r & r < m + n --> diffl (f r) (f' r x) x) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1903
   diffl (%x::real. real.sum (m, n) (%n::nat. f n x))
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1904
    (real.sum (m, n) (%r::nat. f' r x)) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1905
  by (import lim DIFF_SUM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1906
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1907
lemma CONT_BOUNDED: "ALL (f::real => real) (a::real) b::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1908
   a <= b & (ALL x::real. a <= x & x <= b --> contl f x) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1909
   (EX M::real. ALL x::real. a <= x & x <= b --> f x <= M)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1910
  by (import lim CONT_BOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1911
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1912
lemma CONT_HASSUP: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1913
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1914
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1915
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1916
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1917
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1918
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1919
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1920
                  ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1921
                  ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1922
                    (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1923
                        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1924
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1925
                           ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1926
                           ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1927
                         ((contl::(real => real) => real => bool) f x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1928
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1929
                  (%M::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1930
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1931
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1932
                         (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1933
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1934
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1935
                                ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1936
                                ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1937
                              ((op <=::real => real => bool) (f x) M)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1938
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1939
                         (%N::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1940
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1941
                              ((op <::real => real => bool) N M)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1942
                              ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1943
                                (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1944
                                    (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1945
                                     ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1946
                                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1947
 ((op <=::real => real => bool) x b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1948
 ((op <::real => real => bool) N (f x))))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1949
  by (import lim CONT_HASSUP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1950
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1951
lemma CONT_ATTAINS: "ALL (f::real => real) (a::real) b::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1952
   a <= b & (ALL x::real. a <= x & x <= b --> contl f x) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1953
   (EX x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1954
       (ALL xa::real. a <= xa & xa <= b --> f xa <= x) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1955
       (EX xa::real. a <= xa & xa <= b & f xa = x))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1956
  by (import lim CONT_ATTAINS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1957
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1958
lemma CONT_ATTAINS2: "ALL (f::real => real) (a::real) b::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1959
   a <= b & (ALL x::real. a <= x & x <= b --> contl f x) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1960
   (EX x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1961
       (ALL xa::real. a <= xa & xa <= b --> x <= f xa) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1962
       (EX xa::real. a <= xa & xa <= b & f xa = x))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1963
  by (import lim CONT_ATTAINS2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1964
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1965
lemma CONT_ATTAINS_ALL: "ALL (f::real => real) (a::real) b::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1966
   a <= b & (ALL x::real. a <= x & x <= b --> contl f x) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1967
   (EX (x::real) M::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1968
       x <= M &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1969
       (ALL y::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1970
           x <= y & y <= M --> (EX x::real. a <= x & x <= b & f x = y)) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1971
       (ALL xa::real. a <= xa & xa <= b --> x <= f xa & f xa <= M))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1972
  by (import lim CONT_ATTAINS_ALL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1973
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1974
lemma DIFF_LINC: "ALL (f::real => real) (x::real) l::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1975
   diffl f l x & 0 < l -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1976
   (EX d>0. ALL h::real. 0 < h & h < d --> f x < f (x + h))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1977
  by (import lim DIFF_LINC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1978
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1979
lemma DIFF_LDEC: "ALL (f::real => real) (x::real) l::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1980
   diffl f l x & l < 0 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1981
   (EX d>0. ALL h::real. 0 < h & h < d --> f x < f (x - h))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1982
  by (import lim DIFF_LDEC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1983
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1984
lemma DIFF_LMAX: "ALL (f::real => real) (x::real) l::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1985
   diffl f l x & (EX d>0. ALL y::real. abs (x - y) < d --> f y <= f x) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1986
   l = 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1987
  by (import lim DIFF_LMAX)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1988
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1989
lemma DIFF_LMIN: "ALL (f::real => real) (x::real) l::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1990
   diffl f l x & (EX d>0. ALL y::real. abs (x - y) < d --> f x <= f y) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1991
   l = 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1992
  by (import lim DIFF_LMIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1993
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1994
lemma DIFF_LCONST: "ALL (f::real => real) (x::real) l::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1995
   diffl f l x & (EX d>0. ALL y::real. abs (x - y) < d --> f y = f x) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1996
   l = 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1997
  by (import lim DIFF_LCONST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1998
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  1999
lemma INTERVAL_LEMMA: "ALL (a::real) (b::real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2000
   a < x & x < b -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2001
   (EX d>0. ALL y::real. abs (x - y) < d --> a <= y & y <= b)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2002
  by (import lim INTERVAL_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2003
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2004
lemma ROLLE: "ALL (f::real => real) (a::real) b::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2005
   a < b &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2006
   f a = f b &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2007
   (ALL x::real. a <= x & x <= b --> contl f x) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2008
   (ALL x::real. a < x & x < b --> differentiable f x) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2009
   (EX z::real. a < z & z < b & diffl f 0 z)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2010
  by (import lim ROLLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2011
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2012
lemma MVT_LEMMA: "ALL (f::real => real) (a::real) b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2013
   f a - (f b - f a) / (b - a) * a = f b - (f b - f a) / (b - a) * b"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2014
  by (import lim MVT_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2015
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2016
lemma MVT: "ALL (f::real => real) (a::real) b::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2017
   a < b &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2018
   (ALL x::real. a <= x & x <= b --> contl f x) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2019
   (ALL x::real. a < x & x < b --> differentiable f x) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2020
   (EX (l::real) z::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2021
       a < z & z < b & diffl f l z & f b - f a = (b - a) * l)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2022
  by (import lim MVT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2023
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2024
lemma DIFF_ISCONST_END: "ALL (f::real => real) (a::real) b::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2025
   a < b &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2026
   (ALL x::real. a <= x & x <= b --> contl f x) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2027
   (ALL x::real. a < x & x < b --> diffl f 0 x) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2028
   f b = f a"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2029
  by (import lim DIFF_ISCONST_END)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2030
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2031
lemma DIFF_ISCONST: "ALL (f::real => real) (a::real) b::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2032
   a < b &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2033
   (ALL x::real. a <= x & x <= b --> contl f x) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2034
   (ALL x::real. a < x & x < b --> diffl f 0 x) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2035
   (ALL x::real. a <= x & x <= b --> f x = f a)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2036
  by (import lim DIFF_ISCONST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2037
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2038
lemma DIFF_ISCONST_ALL: "ALL f::real => real. All (diffl f 0) --> (ALL (x::real) y::real. f x = f y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2039
  by (import lim DIFF_ISCONST_ALL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2040
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2041
lemma INTERVAL_ABS: "ALL (x::real) (z::real) d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2042
   (x - d <= z & z <= x + d) = (abs (z - x) <= d)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2043
  by (import lim INTERVAL_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2044
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2045
lemma CONT_INJ_LEMMA: "ALL (f::real => real) (g::real => real) (x::real) d::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2046
   0 < d &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2047
   (ALL z::real. abs (z - x) <= d --> g (f z) = z) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2048
   (ALL z::real. abs (z - x) <= d --> contl f z) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2049
   ~ (ALL z::real. abs (z - x) <= d --> f z <= f x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2050
  by (import lim CONT_INJ_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2051
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2052
lemma CONT_INJ_LEMMA2: "ALL (f::real => real) (g::real => real) (x::real) d::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2053
   0 < d &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2054
   (ALL z::real. abs (z - x) <= d --> g (f z) = z) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2055
   (ALL z::real. abs (z - x) <= d --> contl f z) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2056
   ~ (ALL z::real. abs (z - x) <= d --> f x <= f z)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2057
  by (import lim CONT_INJ_LEMMA2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2058
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2059
lemma CONT_INJ_RANGE: "ALL (f::real => real) (g::real => real) (x::real) d::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2060
   0 < d &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2061
   (ALL z::real. abs (z - x) <= d --> g (f z) = z) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2062
   (ALL z::real. abs (z - x) <= d --> contl f z) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2063
   (EX e>0.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2064
       ALL y::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2065
          abs (y - f x) <= e --> (EX z::real. abs (z - x) <= d & f z = y))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2066
  by (import lim CONT_INJ_RANGE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2067
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2068
lemma CONT_INVERSE: "ALL (f::real => real) (g::real => real) (x::real) d::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2069
   0 < d &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2070
   (ALL z::real. abs (z - x) <= d --> g (f z) = z) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2071
   (ALL z::real. abs (z - x) <= d --> contl f z) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2072
   contl g (f x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2073
  by (import lim CONT_INVERSE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2074
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2075
lemma DIFF_INVERSE: "ALL (f::real => real) (g::real => real) (l::real) (x::real) d::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2076
   0 < d &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2077
   (ALL z::real. abs (z - x) <= d --> g (f z) = z) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2078
   (ALL z::real. abs (z - x) <= d --> contl f z) & diffl f l x & l ~= 0 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2079
   diffl g (inverse l) (f x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2080
  by (import lim DIFF_INVERSE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2081
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2082
lemma DIFF_INVERSE_LT: "ALL (f::real => real) (g::real => real) (l::real) (x::real) d::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2083
   0 < d &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2084
   (ALL z::real. abs (z - x) < d --> g (f z) = z) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2085
   (ALL z::real. abs (z - x) < d --> contl f z) & diffl f l x & l ~= 0 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2086
   diffl g (inverse l) (f x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2087
  by (import lim DIFF_INVERSE_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2088
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2089
lemma INTERVAL_CLEMMA: "ALL (a::real) (b::real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2090
   a < x & x < b -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2091
   (EX d>0. ALL y::real. abs (y - x) <= d --> a < y & y < b)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2092
  by (import lim INTERVAL_CLEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2093
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2094
lemma DIFF_INVERSE_OPEN: "ALL (f::real => real) (g::real => real) (l::real) (a::real) (x::real)
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2095
   b::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2096
   a < x &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2097
   x < b &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2098
   (ALL z::real. a < z & z < b --> g (f z) = z & contl f z) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2099
   diffl f l x & l ~= 0 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2100
   diffl g (inverse l) (f x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2101
  by (import lim DIFF_INVERSE_OPEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2102
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2103
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2104
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2105
;setup_theory powser
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2106
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2107
lemma POWDIFF_LEMMA: "ALL (n::nat) (x::real) y::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2108
   real.sum (0, Suc n) (%p::nat. x ^ p * y ^ (Suc n - p)) =
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2109
   y * real.sum (0, Suc n) (%p::nat. x ^ p * y ^ (n - p))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2110
  by (import powser POWDIFF_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2111
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2112
lemma POWDIFF: "ALL (n::nat) (x::real) y::real.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2113
   x ^ Suc n - y ^ Suc n =
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2114
   (x - y) * real.sum (0, Suc n) (%p::nat. x ^ p * y ^ (n - p))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2115
  by (import powser POWDIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2116
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2117
lemma POWREV: "ALL (n::nat) (x::real) y::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2118
   real.sum (0, Suc n) (%xa::nat. x ^ xa * y ^ (n - xa)) =
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2119
   real.sum (0, Suc n) (%xa::nat. x ^ (n - xa) * y ^ xa)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2120
  by (import powser POWREV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2121
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2122
lemma POWSER_INSIDEA: "ALL (f::nat => real) (x::real) z::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2123
   summable (%n::nat. f n * x ^ n) & abs z < abs x -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2124
   summable (%n::nat. abs (f n) * z ^ n)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2125
  by (import powser POWSER_INSIDEA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2126
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2127
lemma POWSER_INSIDE: "ALL (f::nat => real) (x::real) z::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2128
   summable (%n::nat. f n * x ^ n) & abs z < abs x -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2129
   summable (%n::nat. f n * z ^ n)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2130
  by (import powser POWSER_INSIDE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2131
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2132
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2133
  diffs :: "(nat => real) => nat => real" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2134
  "diffs == %(c::nat => real) n::nat. real (Suc n) * c (Suc n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2135
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2136
lemma diffs: "ALL c::nat => real. diffs c = (%n::nat. real (Suc n) * c (Suc n))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2137
  by (import powser diffs)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2138
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2139
lemma DIFFS_NEG: "ALL c::nat => real. diffs (%n::nat. - c n) = (%x::nat. - diffs c x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2140
  by (import powser DIFFS_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2141
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2142
lemma DIFFS_LEMMA: "ALL (n::nat) (c::nat => real) x::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2143
   real.sum (0, n) (%n::nat. diffs c n * x ^ n) =
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2144
   real.sum (0, n) (%n::nat. real n * (c n * x ^ (n - 1))) +
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2145
   real n * (c n * x ^ (n - 1))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2146
  by (import powser DIFFS_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2147
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2148
lemma DIFFS_LEMMA2: "ALL (n::nat) (c::nat => real) x::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2149
   real.sum (0, n) (%n::nat. real n * (c n * x ^ (n - 1))) =
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2150
   real.sum (0, n) (%n::nat. diffs c n * x ^ n) -
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2151
   real n * (c n * x ^ (n - 1))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2152
  by (import powser DIFFS_LEMMA2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2153
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2154
lemma DIFFS_EQUIV: "ALL (c::nat => real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2155
   summable (%n::nat. diffs c n * x ^ n) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2156
   sums (%n::nat. real n * (c n * x ^ (n - 1)))
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2157
    (suminf (%n::nat. diffs c n * x ^ n))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2158
  by (import powser DIFFS_EQUIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2159
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2160
lemma TERMDIFF_LEMMA1: "ALL (m::nat) (z::real) h::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2161
   real.sum (0, m) (%p::nat. (z + h) ^ (m - p) * z ^ p - z ^ m) =
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2162
   real.sum (0, m) (%p::nat. z ^ p * ((z + h) ^ (m - p) - z ^ (m - p)))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2163
  by (import powser TERMDIFF_LEMMA1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2164
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2165
lemma TERMDIFF_LEMMA2: "ALL (z::real) (h::real) n::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2166
   h ~= 0 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2167
   ((z + h) ^ n - z ^ n) / h - real n * z ^ (n - 1) =
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2168
   h *
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2169
   real.sum (0, n - 1)
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2170
    (%p::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2171
        z ^ p *
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2172
        real.sum (0, n - 1 - p)
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2173
         (%q::nat. (z + h) ^ q * z ^ (n - 2 - p - q)))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2174
  by (import powser TERMDIFF_LEMMA2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2175
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2176
lemma TERMDIFF_LEMMA3: "ALL (z::real) (h::real) (n::nat) k'::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2177
   h ~= 0 & abs z <= k' & abs (z + h) <= k' -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2178
   abs (((z + h) ^ n - z ^ n) / h - real n * z ^ (n - 1))
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2179
   <= real n * (real (n - 1) * (k' ^ (n - 2) * abs h))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2180
  by (import powser TERMDIFF_LEMMA3)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2181
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2182
lemma TERMDIFF_LEMMA4: "ALL (f::real => real) (k'::real) k::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2183
   0 < k &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2184
   (ALL h::real. 0 < abs h & abs h < k --> abs (f h) <= k' * abs h) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2185
   tends_real_real f 0 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2186
  by (import powser TERMDIFF_LEMMA4)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2187
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2188
lemma TERMDIFF_LEMMA5: "ALL (f::nat => real) (g::real => nat => real) k::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2189
   0 < k &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2190
   summable f &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2191
   (ALL h::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2192
       0 < abs h & abs h < k -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2193
       (ALL n::nat. abs (g h n) <= f n * abs h)) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2194
   tends_real_real (%h::real. suminf (g h)) 0 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2195
  by (import powser TERMDIFF_LEMMA5)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2196
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2197
lemma TERMDIFF: "ALL (c::nat => real) (k'::real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2198
   summable (%n::nat. c n * k' ^ n) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2199
   summable (%n::nat. diffs c n * k' ^ n) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2200
   summable (%n::nat. diffs (diffs c) n * k' ^ n) & abs x < abs k' -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2201
   diffl (%x::real. suminf (%n::nat. c n * x ^ n))
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2202
    (suminf (%n::nat. diffs c n * x ^ n)) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2203
  by (import powser TERMDIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2204
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2205
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2206
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2207
;setup_theory transc
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2208
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2209
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2210
  exp :: "real => real" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2211
  "exp == %x::real. suminf (%n::nat. inverse (real (FACT n)) * x ^ n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2212
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2213
lemma exp: "ALL x::real. exp x = suminf (%n::nat. inverse (real (FACT n)) * x ^ n)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2214
  by (import transc exp)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2215
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2216
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2217
  cos :: "real => real" 
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2218
  "cos ==
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2219
%x::real.
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2220
   suminf
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2221
    (%n::nat.
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2222
        (if EVEN n then (- 1) ^ (n div 2) / real (FACT n) else 0) * x ^ n)"
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2223
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2224
lemma cos: "ALL x::real.
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2225
   cos x =
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2226
   suminf
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2227
    (%n::nat.
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2228
        (if EVEN n then (- 1) ^ (n div 2) / real (FACT n) else 0) * x ^ n)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2229
  by (import transc cos)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2230
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2231
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2232
  sin :: "real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2233
  "sin ==
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2234
%x::real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2235
   suminf
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2236
    (%n::nat.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2237
        (if EVEN n then 0 else (- 1) ^ ((n - 1) div 2) / real (FACT n)) *
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2238
        x ^ n)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2239
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2240
lemma sin: "ALL x::real.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2241
   sin x =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2242
   suminf
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2243
    (%n::nat.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2244
        (if EVEN n then 0 else (- 1) ^ ((n - 1) div 2) / real (FACT n)) *
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2245
        x ^ n)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2246
  by (import transc sin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2247
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2248
lemma EXP_CONVERGES: "ALL x::real. sums (%n::nat. inverse (real (FACT n)) * x ^ n) (exp x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2249
  by (import transc EXP_CONVERGES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2250
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2251
lemma SIN_CONVERGES: "ALL x::real.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2252
   sums
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2253
    (%n::nat.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2254
        (if EVEN n then 0 else (- 1) ^ ((n - 1) div 2) / real (FACT n)) *
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2255
        x ^ n)
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2256
    (sin x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2257
  by (import transc SIN_CONVERGES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2258
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2259
lemma COS_CONVERGES: "ALL x::real.
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2260
   sums
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2261
    (%n::nat.
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2262
        (if EVEN n then (- 1) ^ (n div 2) / real (FACT n) else 0) * x ^ n)
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2263
    (cos x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2264
  by (import transc COS_CONVERGES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2265
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2266
lemma EXP_FDIFF: "diffs (%n::nat. inverse (real (FACT n))) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2267
(%n::nat. inverse (real (FACT n)))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2268
  by (import transc EXP_FDIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2269
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2270
lemma SIN_FDIFF: "diffs
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2271
 (%n::nat. if EVEN n then 0 else (- 1) ^ ((n - 1) div 2) / real (FACT n)) =
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2272
(%n::nat. if EVEN n then (- 1) ^ (n div 2) / real (FACT n) else 0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2273
  by (import transc SIN_FDIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2274
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2275
lemma COS_FDIFF: "diffs (%n::nat. if EVEN n then (- 1) ^ (n div 2) / real (FACT n) else 0) =
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2276
(%n::nat. - (if EVEN n then 0 else (- 1) ^ ((n - 1) div 2) / real (FACT n)))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2277
  by (import transc COS_FDIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2278
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2279
lemma SIN_NEGLEMMA: "ALL x::real.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2280
   - sin x =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2281
   suminf
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2282
    (%n::nat.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2283
        - ((if EVEN n then 0 else (- 1) ^ ((n - 1) div 2) / real (FACT n)) *
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2284
           x ^ n))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2285
  by (import transc SIN_NEGLEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2286
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2287
lemma DIFF_EXP: "ALL x::real. diffl exp (exp x) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2288
  by (import transc DIFF_EXP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2289
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2290
lemma DIFF_SIN: "ALL x::real. diffl sin (cos x) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2291
  by (import transc DIFF_SIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2292
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2293
lemma DIFF_COS: "ALL x::real. diffl cos (- sin x) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2294
  by (import transc DIFF_COS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2295
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2296
lemma DIFF_COMPOSITE: "(diffl (f::real => real) (l::real) (x::real) & f x ~= 0 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2297
 diffl (%x::real. inverse (f x)) (- (l / f x ^ 2)) x) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2298
(diffl f l x & diffl (g::real => real) (m::real) x & g x ~= 0 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2299
 diffl (%x::real. f x / g x) ((l * g x - m * f x) / g x ^ 2) x) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2300
(diffl f l x & diffl g m x --> diffl (%x::real. f x + g x) (l + m) x) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2301
(diffl f l x & diffl g m x -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2302
 diffl (%x::real. f x * g x) (l * g x + m * f x) x) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2303
(diffl f l x & diffl g m x --> diffl (%x::real. f x - g x) (l - m) x) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2304
(diffl f l x --> diffl (%x::real. - f x) (- l) x) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2305
(diffl g m x -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2306
 diffl (%x::real. g x ^ (n::nat)) (real n * g x ^ (n - 1) * m) x) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2307
(diffl g m x --> diffl (%x::real. exp (g x)) (exp (g x) * m) x) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2308
(diffl g m x --> diffl (%x::real. sin (g x)) (cos (g x) * m) x) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2309
(diffl g m x --> diffl (%x::real. cos (g x)) (- sin (g x) * m) x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2310
  by (import transc DIFF_COMPOSITE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2311
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2312
lemma EXP_0: "exp 0 = 1"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2313
  by (import transc EXP_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2314
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2315
lemma EXP_LE_X: "ALL x>=0. 1 + x <= exp x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2316
  by (import transc EXP_LE_X)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2317
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2318
lemma EXP_LT_1: "ALL x>0. 1 < exp x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2319
  by (import transc EXP_LT_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2320
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2321
lemma EXP_ADD_MUL: "ALL (x::real) y::real. exp (x + y) * exp (- x) = exp y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2322
  by (import transc EXP_ADD_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2323
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2324
lemma EXP_NEG_MUL: "ALL x::real. exp x * exp (- x) = 1"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2325
  by (import transc EXP_NEG_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2326
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2327
lemma EXP_NEG_MUL2: "ALL x::real. exp (- x) * exp x = 1"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2328
  by (import transc EXP_NEG_MUL2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2329
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2330
lemma EXP_NEG: "ALL x::real. exp (- x) = inverse (exp x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2331
  by (import transc EXP_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2332
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2333
lemma EXP_ADD: "ALL (x::real) y::real. exp (x + y) = exp x * exp y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2334
  by (import transc EXP_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2335
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2336
lemma EXP_POS_LE: "ALL x::real. 0 <= exp x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2337
  by (import transc EXP_POS_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2338
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2339
lemma EXP_NZ: "ALL x::real. exp x ~= 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2340
  by (import transc EXP_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2341
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2342
lemma EXP_POS_LT: "ALL x::real. 0 < exp x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2343
  by (import transc EXP_POS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2344
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2345
lemma EXP_N: "ALL (n::nat) x::real. exp (real n * x) = exp x ^ n"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2346
  by (import transc EXP_N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2347
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2348
lemma EXP_SUB: "ALL (x::real) y::real. exp (x - y) = exp x / exp y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2349
  by (import transc EXP_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2350
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2351
lemma EXP_MONO_IMP: "ALL (x::real) y::real. x < y --> exp x < exp y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2352
  by (import transc EXP_MONO_IMP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2353
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2354
lemma EXP_MONO_LT: "ALL (x::real) y::real. (exp x < exp y) = (x < y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2355
  by (import transc EXP_MONO_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2356
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2357
lemma EXP_MONO_LE: "ALL (x::real) y::real. (exp x <= exp y) = (x <= y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2358
  by (import transc EXP_MONO_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2359
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2360
lemma EXP_INJ: "ALL (x::real) y::real. (exp x = exp y) = (x = y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2361
  by (import transc EXP_INJ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2362
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2363
lemma EXP_TOTAL_LEMMA: "ALL y>=1. EX x>=0. x <= y - 1 & exp x = y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2364
  by (import transc EXP_TOTAL_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2365
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2366
lemma EXP_TOTAL: "ALL y>0. EX x::real. exp x = y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2367
  by (import transc EXP_TOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2368
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2369
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2370
  ln :: "real => real" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2371
  "ln == %x::real. SOME u::real. exp u = x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2372
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2373
lemma ln: "ALL x::real. ln x = (SOME u::real. exp u = x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2374
  by (import transc ln)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2375
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2376
lemma LN_EXP: "ALL x::real. ln (exp x) = x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2377
  by (import transc LN_EXP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2378
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2379
lemma EXP_LN: "ALL x::real. (exp (ln x) = x) = (0 < x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2380
  by (import transc EXP_LN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2381
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2382
lemma LN_MUL: "ALL (x::real) y::real. 0 < x & 0 < y --> ln (x * y) = ln x + ln y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2383
  by (import transc LN_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2384
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2385
lemma LN_INJ: "ALL (x::real) y::real. 0 < x & 0 < y --> (ln x = ln y) = (x = y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2386
  by (import transc LN_INJ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2387
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2388
lemma LN_1: "ln 1 = 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2389
  by (import transc LN_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2390
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2391
lemma LN_INV: "ALL x>0. ln (inverse x) = - ln x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2392
  by (import transc LN_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2393
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2394
lemma LN_DIV: "ALL (x::real) y::real. 0 < x & 0 < y --> ln (x / y) = ln x - ln y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2395
  by (import transc LN_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2396
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2397
lemma LN_MONO_LT: "ALL (x::real) y::real. 0 < x & 0 < y --> (ln x < ln y) = (x < y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2398
  by (import transc LN_MONO_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2399
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2400
lemma LN_MONO_LE: "ALL (x::real) y::real. 0 < x & 0 < y --> (ln x <= ln y) = (x <= y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2401
  by (import transc LN_MONO_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2402
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2403
lemma LN_POW: "ALL (n::nat) x::real. 0 < x --> ln (x ^ n) = real n * ln x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2404
  by (import transc LN_POW)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2405
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2406
lemma LN_LE: "ALL x>=0. ln (1 + x) <= x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2407
  by (import transc LN_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2408
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2409
lemma LN_LT_X: "ALL x>0. ln x < x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2410
  by (import transc LN_LT_X)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2411
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2412
lemma LN_POS: "ALL x>=1. 0 <= ln x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2413
  by (import transc LN_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2414
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2415
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2416
  root :: "nat => real => real" 
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2417
  "root == %(n::nat) x::real. SOME u::real. (0 < x --> 0 < u) & u ^ n = x"
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2418
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2419
lemma root: "ALL (n::nat) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2420
   root n x = (SOME u::real. (0 < x --> 0 < u) & u ^ n = x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2421
  by (import transc root)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2422
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2423
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2424
  sqrt :: "real => real" 
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2425
  "sqrt == root 2"
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2426
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2427
lemma sqrt: "ALL x::real. sqrt x = root 2 x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2428
  by (import transc sqrt)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2429
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2430
lemma ROOT_LT_LEMMA: "ALL (n::nat) x::real. 0 < x --> exp (ln x / real (Suc n)) ^ Suc n = x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2431
  by (import transc ROOT_LT_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2432
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2433
lemma ROOT_LN: "ALL (n::nat) x::real. 0 < x --> root (Suc n) x = exp (ln x / real (Suc n))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2434
  by (import transc ROOT_LN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2435
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2436
lemma ROOT_0: "ALL n::nat. root (Suc n) 0 = 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2437
  by (import transc ROOT_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2438
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2439
lemma ROOT_1: "ALL n::nat. root (Suc n) 1 = 1"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2440
  by (import transc ROOT_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2441
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2442
lemma ROOT_POS_LT: "ALL (n::nat) x::real. 0 < x --> 0 < root (Suc n) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2443
  by (import transc ROOT_POS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2444
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2445
lemma ROOT_POW_POS: "ALL (n::nat) x::real. 0 <= x --> root (Suc n) x ^ Suc n = x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2446
  by (import transc ROOT_POW_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2447
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2448
lemma POW_ROOT_POS: "ALL (n::nat) x::real. 0 <= x --> root (Suc n) (x ^ Suc n) = x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2449
  by (import transc POW_ROOT_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2450
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2451
lemma ROOT_POS: "ALL (n::nat) x::real. 0 <= x --> 0 <= root (Suc n) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2452
  by (import transc ROOT_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2453
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2454
lemma ROOT_POS_UNIQ: "ALL (n::nat) (x::real) y::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2455
   0 <= x & 0 <= y & y ^ Suc n = x --> root (Suc n) x = y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2456
  by (import transc ROOT_POS_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2457
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2458
lemma ROOT_MUL: "ALL (n::nat) (x::real) y::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2459
   0 <= x & 0 <= y -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2460
   root (Suc n) (x * y) = root (Suc n) x * root (Suc n) y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2461
  by (import transc ROOT_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2462
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2463
lemma ROOT_INV: "ALL (n::nat) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2464
   0 <= x --> root (Suc n) (inverse x) = inverse (root (Suc n) x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2465
  by (import transc ROOT_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2466
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2467
lemma ROOT_DIV: "ALL (x::nat) (xa::real) xb::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2468
   0 <= xa & 0 <= xb -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2469
   root (Suc x) (xa / xb) = root (Suc x) xa / root (Suc x) xb"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2470
  by (import transc ROOT_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2471
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2472
lemma ROOT_MONO_LE: "ALL (x::real) y::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2473
   0 <= x & x <= y --> root (Suc (n::nat)) x <= root (Suc n) y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2474
  by (import transc ROOT_MONO_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2475
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2476
lemma SQRT_0: "sqrt 0 = 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2477
  by (import transc SQRT_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2478
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2479
lemma SQRT_1: "sqrt 1 = 1"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2480
  by (import transc SQRT_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2481
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2482
lemma SQRT_POS_LT: "ALL x>0. 0 < sqrt x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2483
  by (import transc SQRT_POS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2484
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2485
lemma SQRT_POS_LE: "ALL x>=0. 0 <= sqrt x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2486
  by (import transc SQRT_POS_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2487
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2488
lemma SQRT_POW2: "ALL x::real. (sqrt x ^ 2 = x) = (0 <= x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2489
  by (import transc SQRT_POW2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2490
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2491
lemma SQRT_POW_2: "ALL x>=0. sqrt x ^ 2 = x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2492
  by (import transc SQRT_POW_2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2493
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2494
lemma POW_2_SQRT: "0 <= (x::real) --> sqrt (x ^ 2) = x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2495
  by (import transc POW_2_SQRT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2496
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2497
lemma SQRT_POS_UNIQ: "ALL (x::real) xa::real. 0 <= x & 0 <= xa & xa ^ 2 = x --> sqrt x = xa"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2498
  by (import transc SQRT_POS_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2499
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2500
lemma SQRT_MUL: "ALL (x::real) xa::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2501
   0 <= x & 0 <= xa --> sqrt (x * xa) = sqrt x * sqrt xa"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2502
  by (import transc SQRT_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2503
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2504
lemma SQRT_INV: "ALL x>=0. sqrt (inverse x) = inverse (sqrt x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2505
  by (import transc SQRT_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2506
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2507
lemma SQRT_DIV: "ALL (x::real) xa::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2508
   0 <= x & 0 <= xa --> sqrt (x / xa) = sqrt x / sqrt xa"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2509
  by (import transc SQRT_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2510
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2511
lemma SQRT_MONO_LE: "ALL (x::real) xa::real. 0 <= x & x <= xa --> sqrt x <= sqrt xa"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2512
  by (import transc SQRT_MONO_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2513
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2514
lemma SQRT_EVEN_POW2: "ALL n::nat. EVEN n --> sqrt (2 ^ n) = 2 ^ (n div 2)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2515
  by (import transc SQRT_EVEN_POW2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2516
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2517
lemma REAL_DIV_SQRT: "ALL x>=0. x / sqrt x = sqrt x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2518
  by (import transc REAL_DIV_SQRT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2519
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2520
lemma SQRT_EQ: "ALL (x::real) y::real. x ^ 2 = y & 0 <= x --> x = sqrt y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2521
  by (import transc SQRT_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2522
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2523
lemma SIN_0: "sin 0 = 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2524
  by (import transc SIN_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2525
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2526
lemma COS_0: "cos 0 = 1"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2527
  by (import transc COS_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2528
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2529
lemma SIN_CIRCLE: "ALL x::real. sin x ^ 2 + cos x ^ 2 = 1"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2530
  by (import transc SIN_CIRCLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2531
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2532
lemma SIN_BOUND: "ALL x::real. abs (sin x) <= 1"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2533
  by (import transc SIN_BOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2534
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2535
lemma SIN_BOUNDS: "ALL x::real. - 1 <= sin x & sin x <= 1"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2536
  by (import transc SIN_BOUNDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2537
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2538
lemma COS_BOUND: "ALL x::real. abs (cos x) <= 1"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2539
  by (import transc COS_BOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2540
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2541
lemma COS_BOUNDS: "ALL x::real. - 1 <= cos x & cos x <= 1"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2542
  by (import transc COS_BOUNDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2543
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2544
lemma SIN_COS_ADD: "ALL (x::real) y::real.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2545
   (sin (x + y) - (sin x * cos y + cos x * sin y)) ^ 2 +
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2546
   (cos (x + y) - (cos x * cos y - sin x * sin y)) ^ 2 =
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2547
   0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2548
  by (import transc SIN_COS_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2549
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2550
lemma SIN_COS_NEG: "ALL x::real. (sin (- x) + sin x) ^ 2 + (cos (- x) - cos x) ^ 2 = 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2551
  by (import transc SIN_COS_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2552
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2553
lemma SIN_ADD: "ALL (x::real) y::real. sin (x + y) = sin x * cos y + cos x * sin y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2554
  by (import transc SIN_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2555
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2556
lemma COS_ADD: "ALL (x::real) y::real. cos (x + y) = cos x * cos y - sin x * sin y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2557
  by (import transc COS_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2558
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2559
lemma SIN_NEG: "ALL x::real. sin (- x) = - sin x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2560
  by (import transc SIN_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2561
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2562
lemma COS_NEG: "ALL x::real. cos (- x) = cos x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2563
  by (import transc COS_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2564
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2565
lemma SIN_DOUBLE: "ALL x::real. sin (2 * x) = 2 * (sin x * cos x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2566
  by (import transc SIN_DOUBLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2567
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2568
lemma COS_DOUBLE: "ALL x::real. cos (2 * x) = cos x ^ 2 - sin x ^ 2"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2569
  by (import transc COS_DOUBLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2570
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2571
lemma SIN_PAIRED: "ALL x::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2572
   sums (%n::nat. (- 1) ^ n / real (FACT (2 * n + 1)) * x ^ (2 * n + 1))
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2573
    (sin x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2574
  by (import transc SIN_PAIRED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2575
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2576
lemma SIN_POS: "ALL x::real. 0 < x & x < 2 --> 0 < sin x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2577
  by (import transc SIN_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2578
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2579
lemma COS_PAIRED: "ALL x::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2580
   sums (%n::nat. (- 1) ^ n / real (FACT (2 * n)) * x ^ (2 * n)) (cos x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2581
  by (import transc COS_PAIRED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2582
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2583
lemma COS_2: "cos 2 < 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2584
  by (import transc COS_2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2585
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2586
lemma COS_ISZERO: "EX! x::real. 0 <= x & x <= 2 & cos x = 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2587
  by (import transc COS_ISZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2588
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2589
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2590
  pi :: "real" 
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2591
  "pi == 2 * (SOME x::real. 0 <= x & x <= 2 & cos x = 0)"
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2592
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2593
lemma pi: "pi = 2 * (SOME x::real. 0 <= x & x <= 2 & cos x = 0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2594
  by (import transc pi)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2595
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2596
lemma PI2: "pi / 2 = (SOME x::real. 0 <= x & x <= 2 & cos x = 0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2597
  by (import transc PI2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2598
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2599
lemma COS_PI2: "cos (pi / 2) = 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2600
  by (import transc COS_PI2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2601
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2602
lemma PI2_BOUNDS: "0 < pi / 2 & pi / 2 < 2"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2603
  by (import transc PI2_BOUNDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2604
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2605
lemma PI_POS: "0 < pi"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2606
  by (import transc PI_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2607
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2608
lemma SIN_PI2: "sin (pi / 2) = 1"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2609
  by (import transc SIN_PI2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2610
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2611
lemma COS_PI: "cos pi = - 1"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2612
  by (import transc COS_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2613
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2614
lemma SIN_PI: "sin pi = 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2615
  by (import transc SIN_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2616
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2617
lemma SIN_COS: "ALL x::real. sin x = cos (pi / 2 - x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2618
  by (import transc SIN_COS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2619
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2620
lemma COS_SIN: "ALL x::real. cos x = sin (pi / 2 - x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2621
  by (import transc COS_SIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2622
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2623
lemma SIN_PERIODIC_PI: "ALL x::real. sin (x + pi) = - sin x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2624
  by (import transc SIN_PERIODIC_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2625
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2626
lemma COS_PERIODIC_PI: "ALL x::real. cos (x + pi) = - cos x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2627
  by (import transc COS_PERIODIC_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2628
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2629
lemma SIN_PERIODIC: "ALL x::real. sin (x + 2 * pi) = sin x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2630
  by (import transc SIN_PERIODIC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2631
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2632
lemma COS_PERIODIC: "ALL x::real. cos (x + 2 * pi) = cos x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2633
  by (import transc COS_PERIODIC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2634
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2635
lemma COS_NPI: "ALL n::nat. cos (real n * pi) = (- 1) ^ n"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2636
  by (import transc COS_NPI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2637
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2638
lemma SIN_NPI: "ALL n::nat. sin (real n * pi) = 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2639
  by (import transc SIN_NPI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2640
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2641
lemma SIN_POS_PI2: "ALL x::real. 0 < x & x < pi / 2 --> 0 < sin x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2642
  by (import transc SIN_POS_PI2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2643
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2644
lemma COS_POS_PI2: "ALL x::real. 0 < x & x < pi / 2 --> 0 < cos x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2645
  by (import transc COS_POS_PI2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2646
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2647
lemma COS_POS_PI: "ALL x::real. - (pi / 2) < x & x < pi / 2 --> 0 < cos x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2648
  by (import transc COS_POS_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2649
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2650
lemma SIN_POS_PI: "ALL x::real. 0 < x & x < pi --> 0 < sin x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2651
  by (import transc SIN_POS_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2652
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2653
lemma COS_POS_PI2_LE: "ALL x::real. 0 <= x & x <= pi / 2 --> 0 <= cos x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2654
  by (import transc COS_POS_PI2_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2655
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2656
lemma COS_POS_PI_LE: "ALL x::real. - (pi / 2) <= x & x <= pi / 2 --> 0 <= cos x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2657
  by (import transc COS_POS_PI_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2658
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2659
lemma SIN_POS_PI2_LE: "ALL x::real. 0 <= x & x <= pi / 2 --> 0 <= sin x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2660
  by (import transc SIN_POS_PI2_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2661
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2662
lemma SIN_POS_PI_LE: "ALL x::real. 0 <= x & x <= pi --> 0 <= sin x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2663
  by (import transc SIN_POS_PI_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2664
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2665
lemma COS_TOTAL: "ALL y::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2666
   - 1 <= y & y <= 1 --> (EX! x::real. 0 <= x & x <= pi & cos x = y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2667
  by (import transc COS_TOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2668
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2669
lemma SIN_TOTAL: "ALL y::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2670
   - 1 <= y & y <= 1 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2671
   (EX! x::real. - (pi / 2) <= x & x <= pi / 2 & sin x = y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2672
  by (import transc SIN_TOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2673
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2674
lemma COS_ZERO_LEMMA: "ALL x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2675
   0 <= x & cos x = 0 --> (EX n::nat. ~ EVEN n & x = real n * (pi / 2))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2676
  by (import transc COS_ZERO_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2677
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2678
lemma SIN_ZERO_LEMMA: "ALL x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2679
   0 <= x & sin x = 0 --> (EX n::nat. EVEN n & x = real n * (pi / 2))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2680
  by (import transc SIN_ZERO_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2681
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2682
lemma COS_ZERO: "ALL x::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2683
   (cos x = 0) =
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2684
   ((EX n::nat. ~ EVEN n & x = real n * (pi / 2)) |
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2685
    (EX n::nat. ~ EVEN n & x = - (real n * (pi / 2))))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2686
  by (import transc COS_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2687
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2688
lemma SIN_ZERO: "ALL x::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2689
   (sin x = 0) =
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2690
   ((EX n::nat. EVEN n & x = real n * (pi / 2)) |
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2691
    (EX n::nat. EVEN n & x = - (real n * (pi / 2))))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2692
  by (import transc SIN_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2693
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2694
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2695
  tan :: "real => real" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2696
  "tan == %x::real. sin x / cos x"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2697
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2698
lemma tan: "ALL x::real. tan x = sin x / cos x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2699
  by (import transc tan)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2700
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2701
lemma TAN_0: "tan 0 = 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2702
  by (import transc TAN_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2703
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2704
lemma TAN_PI: "tan pi = 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2705
  by (import transc TAN_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2706
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2707
lemma TAN_NPI: "ALL n::nat. tan (real n * pi) = 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2708
  by (import transc TAN_NPI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2709
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2710
lemma TAN_NEG: "ALL x::real. tan (- x) = - tan x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2711
  by (import transc TAN_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2712
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2713
lemma TAN_PERIODIC: "ALL x::real. tan (x + 2 * pi) = tan x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2714
  by (import transc TAN_PERIODIC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2715
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2716
lemma TAN_ADD: "ALL (x::real) y::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2717
   cos x ~= 0 & cos y ~= 0 & cos (x + y) ~= 0 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2718
   tan (x + y) = (tan x + tan y) / (1 - tan x * tan y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2719
  by (import transc TAN_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2720
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2721
lemma TAN_DOUBLE: "ALL x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2722
   cos x ~= 0 & cos (2 * x) ~= 0 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2723
   tan (2 * x) = 2 * tan x / (1 - tan x ^ 2)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2724
  by (import transc TAN_DOUBLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2725
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2726
lemma TAN_POS_PI2: "ALL x::real. 0 < x & x < pi / 2 --> 0 < tan x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2727
  by (import transc TAN_POS_PI2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2728
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2729
lemma DIFF_TAN: "ALL x::real. cos x ~= 0 --> diffl tan (inverse (cos x ^ 2)) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2730
  by (import transc DIFF_TAN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2731
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2732
lemma TAN_TOTAL_LEMMA: "ALL y>0. EX x>0. x < pi / 2 & y < tan x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2733
  by (import transc TAN_TOTAL_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2734
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2735
lemma TAN_TOTAL_POS: "ALL y>=0. EX x>=0. x < pi / 2 & tan x = y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2736
  by (import transc TAN_TOTAL_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2737
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2738
lemma TAN_TOTAL: "ALL y::real. EX! x::real. - (pi / 2) < x & x < pi / 2 & tan x = y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2739
  by (import transc TAN_TOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2740
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2741
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2742
  asn :: "real => real" 
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2743
  "asn == %y::real. SOME x::real. - (pi / 2) <= x & x <= pi / 2 & sin x = y"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2744
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2745
lemma asn: "ALL y::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2746
   asn y = (SOME x::real. - (pi / 2) <= x & x <= pi / 2 & sin x = y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2747
  by (import transc asn)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2748
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2749
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2750
  acs :: "real => real" 
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2751
  "acs == %y::real. SOME x::real. 0 <= x & x <= pi & cos x = y"
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2752
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2753
lemma acs: "ALL y::real. acs y = (SOME x::real. 0 <= x & x <= pi & cos x = y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2754
  by (import transc acs)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2755
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2756
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2757
  atn :: "real => real" 
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2758
  "atn == %y::real. SOME x::real. - (pi / 2) < x & x < pi / 2 & tan x = y"
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2759
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2760
lemma atn: "ALL y::real. atn y = (SOME x::real. - (pi / 2) < x & x < pi / 2 & tan x = y)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2761
  by (import transc atn)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2762
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2763
lemma ASN: "ALL y::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2764
   - 1 <= y & y <= 1 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2765
   - (pi / 2) <= asn y & asn y <= pi / 2 & sin (asn y) = y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2766
  by (import transc ASN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2767
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2768
lemma ASN_SIN: "ALL y::real. - 1 <= y & y <= 1 --> sin (asn y) = y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2769
  by (import transc ASN_SIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2770
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2771
lemma ASN_BOUNDS: "ALL y::real. - 1 <= y & y <= 1 --> - (pi / 2) <= asn y & asn y <= pi / 2"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2772
  by (import transc ASN_BOUNDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2773
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2774
lemma ASN_BOUNDS_LT: "ALL y::real. - 1 < y & y < 1 --> - (pi / 2) < asn y & asn y < pi / 2"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2775
  by (import transc ASN_BOUNDS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2776
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2777
lemma SIN_ASN: "ALL x::real. - (pi / 2) <= x & x <= pi / 2 --> asn (sin x) = x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2778
  by (import transc SIN_ASN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2779
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2780
lemma ACS: "ALL y::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2781
   - 1 <= y & y <= 1 --> 0 <= acs y & acs y <= pi & cos (acs y) = y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2782
  by (import transc ACS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2783
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2784
lemma ACS_COS: "ALL y::real. - 1 <= y & y <= 1 --> cos (acs y) = y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2785
  by (import transc ACS_COS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2786
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2787
lemma ACS_BOUNDS: "ALL y::real. - 1 <= y & y <= 1 --> 0 <= acs y & acs y <= pi"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2788
  by (import transc ACS_BOUNDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2789
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2790
lemma ACS_BOUNDS_LT: "ALL y::real. - 1 < y & y < 1 --> 0 < acs y & acs y < pi"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2791
  by (import transc ACS_BOUNDS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2792
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2793
lemma COS_ACS: "ALL x::real. 0 <= x & x <= pi --> acs (cos x) = x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2794
  by (import transc COS_ACS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2795
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2796
lemma ATN: "ALL y::real. - (pi / 2) < atn y & atn y < pi / 2 & tan (atn y) = y"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2797
  by (import transc ATN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2798
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2799
lemma ATN_TAN: "ALL x::real. tan (atn x) = x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2800
  by (import transc ATN_TAN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2801
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2802
lemma ATN_BOUNDS: "ALL x::real. - (pi / 2) < atn x & atn x < pi / 2"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2803
  by (import transc ATN_BOUNDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2804
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2805
lemma TAN_ATN: "ALL x::real. - (pi / 2) < x & x < pi / 2 --> atn (tan x) = x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2806
  by (import transc TAN_ATN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2807
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2808
lemma TAN_SEC: "ALL x::real. cos x ~= 0 --> 1 + tan x ^ 2 = inverse (cos x) ^ 2"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2809
  by (import transc TAN_SEC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2810
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2811
lemma SIN_COS_SQ: "ALL x::real. 0 <= x & x <= pi --> sin x = sqrt (1 - cos x ^ 2)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2812
  by (import transc SIN_COS_SQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2813
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2814
lemma COS_SIN_SQ: "ALL x::real. - (pi / 2) <= x & x <= pi / 2 --> cos x = sqrt (1 - sin x ^ 2)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2815
  by (import transc COS_SIN_SQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2816
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2817
lemma COS_ATN_NZ: "ALL x::real. cos (atn x) ~= 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2818
  by (import transc COS_ATN_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2819
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2820
lemma COS_ASN_NZ: "ALL x::real. - 1 < x & x < 1 --> cos (asn x) ~= 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2821
  by (import transc COS_ASN_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2822
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2823
lemma SIN_ACS_NZ: "ALL x::real. - 1 < x & x < 1 --> sin (acs x) ~= 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2824
  by (import transc SIN_ACS_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2825
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2826
lemma COS_SIN_SQRT: "ALL x::real. 0 <= cos x --> cos x = sqrt (1 - sin x ^ 2)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2827
  by (import transc COS_SIN_SQRT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2828
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2829
lemma SIN_COS_SQRT: "ALL x::real. 0 <= sin x --> sin x = sqrt (1 - cos x ^ 2)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2830
  by (import transc SIN_COS_SQRT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2831
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2832
lemma DIFF_LN: "ALL x>0. diffl ln (inverse x) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2833
  by (import transc DIFF_LN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2834
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2835
lemma DIFF_ASN_LEMMA: "ALL x::real. - 1 < x & x < 1 --> diffl asn (inverse (cos (asn x))) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2836
  by (import transc DIFF_ASN_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2837
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2838
lemma DIFF_ASN: "ALL x::real. - 1 < x & x < 1 --> diffl asn (inverse (sqrt (1 - x ^ 2))) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2839
  by (import transc DIFF_ASN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2840
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2841
lemma DIFF_ACS_LEMMA: "ALL x::real. - 1 < x & x < 1 --> diffl acs (inverse (- sin (acs x))) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2842
  by (import transc DIFF_ACS_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2843
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2844
lemma DIFF_ACS: "ALL x::real. - 1 < x & x < 1 --> diffl acs (- inverse (sqrt (1 - x ^ 2))) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2845
  by (import transc DIFF_ACS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2846
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  2847
lemma DIFF_ATN: "ALL x::real. diffl atn (inverse (1 + x ^ 2)) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2848
  by (import transc DIFF_ATN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2849
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2850
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2851
  division :: "real * real => (nat => real) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2852
  "(op ==::(real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2853
        => (real * real => (nat => real) => bool) => prop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2854
 (division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2855
 ((split::(real => real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2856
          => real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2857
   (%(a::real) (b::real) D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2858
       (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2859
        ((op =::real => real => bool) (D (0::nat)) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2860
        ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2861
          (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2862
              (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2863
               ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2864
                 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2865
                     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2866
                      ((op <::nat => nat => bool) n N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2867
                      ((op <::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2868
                        (D ((Suc::nat => nat) n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2869
               ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2870
                 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2871
                     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2872
                      ((op <=::nat => nat => bool) N n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2873
                      ((op =::real => real => bool) (D n) b)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2874
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2875
lemma division: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2876
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2877
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2878
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2879
          (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2880
           (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2881
               (op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2882
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2883
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2884
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2885
                  ((op =::real => real => bool) (D (0::nat)) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2886
                  ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2887
                    (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2888
                        (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2889
                         ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2890
                           (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2891
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2892
                                ((op <::nat => nat => bool) n N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2893
                                ((op <::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2894
                                  (D ((Suc::nat => nat) n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2895
                         ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2896
                           (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2897
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2898
                                ((op <=::nat => nat => bool) N n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2899
                                ((op =::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2900
                                  b)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2901
  by (import transc division)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2902
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2903
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2904
  dsize :: "(nat => real) => nat" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2905
  "(op ==::((nat => real) => nat) => ((nat => real) => nat) => prop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2906
 (dsize::(nat => real) => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2907
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2908
     (Eps::(nat => bool) => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2909
      (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2910
          (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2911
           ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2912
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2913
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2914
                  ((op <::nat => nat => bool) n N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2915
                  ((op <::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2916
                    (D ((Suc::nat => nat) n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2917
           ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2918
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2919
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2920
                  ((op <=::nat => nat => bool) N n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2921
                  ((op =::real => real => bool) (D n) (D N))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2922
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2923
lemma dsize: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2924
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2925
     (op =::nat => nat => bool) ((dsize::(nat => real) => nat) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2926
      ((Eps::(nat => bool) => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2927
        (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2928
            (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2929
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2930
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2931
                   (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2932
                    ((op <::nat => nat => bool) n N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2933
                    ((op <::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2934
                      (D ((Suc::nat => nat) n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2935
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2936
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2937
                   (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2938
                    ((op <=::nat => nat => bool) N n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2939
                    ((op =::real => real => bool) (D n) (D N)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2940
  by (import transc dsize)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2941
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2942
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2943
  tdiv :: "real * real => (nat => real) * (nat => real) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2944
  "tdiv ==
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2945
%(a::real, b::real) (D::nat => real, p::nat => real).
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2946
   division (a, b) D & (ALL n::nat. D n <= p n & p n <= D (Suc n))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2947
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2948
lemma tdiv: "ALL (a::real) (b::real) (D::nat => real) p::nat => real.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2949
   tdiv (a, b) (D, p) =
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  2950
   (division (a, b) D & (ALL n::nat. D n <= p n & p n <= D (Suc n)))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2951
  by (import transc tdiv)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2952
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2953
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2954
  gauge :: "(real => bool) => (real => real) => bool" 
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2955
  "gauge == %(E::real => bool) g::real => real. ALL x::real. E x --> 0 < g x"
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2956
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2957
lemma gauge: "ALL (E::real => bool) g::real => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  2958
   gauge E g = (ALL x::real. E x --> 0 < g x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2959
  by (import transc gauge)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2960
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2961
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2962
  fine :: "(real => real) => (nat => real) * (nat => real) => bool" 
14847
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2963
  "(op ==::((real => real) => (nat => real) * (nat => real) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2964
        => ((real => real) => (nat => real) * (nat => real) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2965
           => prop)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2966
 (fine::(real => real) => (nat => real) * (nat => real) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2967
 (%g::real => real.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2968
     (split::((nat => real) => (nat => real) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2969
             => (nat => real) * (nat => real) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2970
      (%(D::nat => real) p::nat => real.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2971
          (All::(nat => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2972
           (%n::nat.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2973
               (op -->::bool => bool => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2974
                ((op <::nat => nat => bool) n
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2975
                  ((dsize::(nat => real) => nat) D))
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2976
                ((op <::real => real => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2977
                  ((op -::real => real => real) (D ((Suc::nat => nat) n))
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2978
                    (D n))
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2979
                  (g (p n))))))"
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2980
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2981
lemma fine: "(All::((real => real) => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2982
 (%g::real => real.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2983
     (All::((nat => real) => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2984
      (%D::nat => real.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2985
          (All::((nat => real) => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2986
           (%p::nat => real.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2987
               (op =::bool => bool => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2988
                ((fine::(real => real)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2989
                        => (nat => real) * (nat => real) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2990
                  g ((Pair::(nat => real)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2991
                            => (nat => real)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2992
                               => (nat => real) * (nat => real))
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2993
                      D p))
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2994
                ((All::(nat => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2995
                  (%n::nat.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2996
                      (op -->::bool => bool => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2997
                       ((op <::nat => nat => bool) n
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2998
                         ((dsize::(nat => real) => nat) D))
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  2999
                       ((op <::real => real => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  3000
                         ((op -::real => real => real)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  3001
                           (D ((Suc::nat => nat) n)) (D n))
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  3002
                         (g (p n))))))))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3003
  by (import transc fine)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3004
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3005
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3006
  rsum :: "(nat => real) * (nat => real) => (real => real) => real" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3007
  "rsum ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3008
%(D::nat => real, p::nat => real) f::real => real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3009
   real.sum (0, dsize D) (%n::nat. f (p n) * (D (Suc n) - D n))"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3010
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3011
lemma rsum: "ALL (D::nat => real) (p::nat => real) f::real => real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3012
   rsum (D, p) f =
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3013
   real.sum (0, dsize D) (%n::nat. f (p n) * (D (Suc n) - D n))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3014
  by (import transc rsum)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3015
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3016
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3017
  Dint :: "real * real => (real => real) => real => bool" 
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3018
  "Dint ==
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3019
%(a::real, b::real) (f::real => real) k::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3020
   ALL e>0.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3021
      EX g::real => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3022
         gauge (%x::real. a <= x & x <= b) g &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3023
         (ALL (D::nat => real) p::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3024
             tdiv (a, b) (D, p) & fine g (D, p) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3025
             abs (rsum (D, p) f - k) < e)"
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3026
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3027
lemma Dint: "ALL (a::real) (b::real) (f::real => real) k::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3028
   Dint (a, b) f k =
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3029
   (ALL e>0.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3030
       EX g::real => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3031
          gauge (%x::real. a <= x & x <= b) g &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3032
          (ALL (D::nat => real) p::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3033
              tdiv (a, b) (D, p) & fine g (D, p) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3034
              abs (rsum (D, p) f - k) < e))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3035
  by (import transc Dint)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3036
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3037
lemma DIVISION_0: "ALL (a::real) b::real. a = b --> dsize (%n::nat. if n = 0 then a else b) = 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3038
  by (import transc DIVISION_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3039
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3040
lemma DIVISION_1: "ALL (a::real) b::real. a < b --> dsize (%n::nat. if n = 0 then a else b) = 1"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3041
  by (import transc DIVISION_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3042
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3043
lemma DIVISION_SINGLE: "ALL (a::real) b::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3044
   a <= b --> division (a, b) (%n::nat. if n = 0 then a else b)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3045
  by (import transc DIVISION_SINGLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3046
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3047
lemma DIVISION_LHS: "ALL (D::nat => real) (a::real) b::real. division (a, b) D --> D 0 = a"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3048
  by (import transc DIVISION_LHS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3049
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3050
lemma DIVISION_THM: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3051
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3052
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3053
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3054
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3055
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3056
               (op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3057
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3058
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3059
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3060
                  ((op =::real => real => bool) (D (0::nat)) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3061
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3062
                    ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3063
                      (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3064
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3065
                           ((op <::nat => nat => bool) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3066
                             ((dsize::(nat => real) => nat) D))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3067
                           ((op <::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3068
                             (D ((Suc::nat => nat) n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3069
                    ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3070
                      (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3071
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3072
                           ((op <=::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3073
                             ((dsize::(nat => real) => nat) D) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3074
                           ((op =::real => real => bool) (D n) b))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3075
  by (import transc DIVISION_THM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3076
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3077
lemma DIVISION_RHS: "ALL (D::nat => real) (a::real) b::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3078
   division (a, b) D --> D (dsize D) = b"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3079
  by (import transc DIVISION_RHS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3080
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3081
lemma DIVISION_LT_GEN: "ALL (D::nat => real) (a::real) (b::real) (m::nat) n::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3082
   division (a, b) D & m < n & n <= dsize D --> D m < D n"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3083
  by (import transc DIVISION_LT_GEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3084
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3085
lemma DIVISION_LT: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3086
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3087
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3088
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3089
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3090
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3091
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3092
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3093
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3094
                ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3095
                  (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3096
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3097
                       ((op <::nat => nat => bool) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3098
                         ((dsize::(nat => real) => nat) D))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3099
                       ((op <::real => real => bool) (D (0::nat))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3100
                         (D ((Suc::nat => nat) n))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3101
  by (import transc DIVISION_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3102
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3103
lemma DIVISION_LE: "ALL (D::nat => real) (a::real) b::real. division (a, b) D --> a <= b"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3104
  by (import transc DIVISION_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3105
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3106
lemma DIVISION_GT: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3107
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3108
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3109
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3110
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3111
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3112
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3113
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3114
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3115
                ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3116
                  (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3117
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3118
                       ((op <::nat => nat => bool) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3119
                         ((dsize::(nat => real) => nat) D))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3120
                       ((op <::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3121
                         (D ((dsize::(nat => real) => nat) D))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3122
  by (import transc DIVISION_GT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3123
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3124
lemma DIVISION_EQ: "ALL (D::nat => real) (a::real) b::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3125
   division (a, b) D --> (a = b) = (dsize D = 0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3126
  by (import transc DIVISION_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3127
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3128
lemma DIVISION_LBOUND: "ALL (D::nat => real) (a::real) b::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3129
   division (a, b) D --> (ALL r::nat. a <= D r)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3130
  by (import transc DIVISION_LBOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3131
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3132
lemma DIVISION_LBOUND_LT: "ALL (D::nat => real) (a::real) b::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3133
   division (a, b) D & dsize D ~= 0 --> (ALL n::nat. a < D (Suc n))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3134
  by (import transc DIVISION_LBOUND_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3135
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3136
lemma DIVISION_UBOUND: "ALL (D::nat => real) (a::real) b::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3137
   division (a, b) D --> (ALL r::nat. D r <= b)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3138
  by (import transc DIVISION_UBOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3139
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3140
lemma DIVISION_UBOUND_LT: "ALL (D::nat => real) (a::real) (b::real) n::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3141
   division (a, b) D & n < dsize D --> D n < b"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3142
  by (import transc DIVISION_UBOUND_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3143
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3144
lemma DIVISION_APPEND: "ALL (a::real) (b::real) c::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3145
   (EX (D1::nat => real) p1::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3146
       tdiv (a, b) (D1, p1) & fine (g::real => real) (D1, p1)) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3147
   (EX (D2::nat => real) p2::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3148
       tdiv (b, c) (D2, p2) & fine g (D2, p2)) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3149
   (EX (x::nat => real) p::nat => real. tdiv (a, c) (x, p) & fine g (x, p))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3150
  by (import transc DIVISION_APPEND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3151
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3152
lemma DIVISION_EXISTS: "ALL (a::real) (b::real) g::real => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3153
   a <= b & gauge (%x::real. a <= x & x <= b) g -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3154
   (EX (D::nat => real) p::nat => real. tdiv (a, b) (D, p) & fine g (D, p))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3155
  by (import transc DIVISION_EXISTS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3156
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3157
lemma GAUGE_MIN: "ALL (E::real => bool) (g1::real => real) g2::real => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3158
   gauge E g1 & gauge E g2 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3159
   gauge E (%x::real. if g1 x < g2 x then g1 x else g2 x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3160
  by (import transc GAUGE_MIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3161
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3162
lemma FINE_MIN: "ALL (g1::real => real) (g2::real => real) (D::nat => real) p::nat => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3163
   fine (%x::real. if g1 x < g2 x then g1 x else g2 x) (D, p) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3164
   fine g1 (D, p) & fine g2 (D, p)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3165
  by (import transc FINE_MIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3166
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3167
lemma DINT_UNIQ: "ALL (a::real) (b::real) (f::real => real) (k1::real) k2::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3168
   a <= b & Dint (a, b) f k1 & Dint (a, b) f k2 --> k1 = k2"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3169
  by (import transc DINT_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3170
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3171
lemma INTEGRAL_NULL: "ALL (f::real => real) a::real. Dint (a, a) f 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3172
  by (import transc INTEGRAL_NULL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3173
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3174
lemma FTC1: "ALL (f::real => real) (f'::real => real) (a::real) b::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3175
   a <= b & (ALL x::real. a <= x & x <= b --> diffl f (f' x) x) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3176
   Dint (a, b) f' (f b - f a)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3177
  by (import transc FTC1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3178
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3179
lemma MCLAURIN: "ALL (f::real => real) (diff::nat => real => real) (h::real) n::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3180
   0 < h &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3181
   0 < n &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3182
   diff 0 = f &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3183
   (ALL (m::nat) t::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3184
       m < n & 0 <= t & t <= h --> diffl (diff m) (diff (Suc m) t) t) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3185
   (EX t>0.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3186
       t < h &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3187
       f h =
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3188
       real.sum (0, n) (%m::nat. diff m 0 / real (FACT m) * h ^ m) +
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3189
       diff n t / real (FACT n) * h ^ n)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3190
  by (import transc MCLAURIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3191
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3192
lemma MCLAURIN_NEG: "ALL (f::real => real) (diff::nat => real => real) (h::real) n::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3193
   h < 0 &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3194
   0 < n &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3195
   diff 0 = f &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3196
   (ALL (m::nat) t::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3197
       m < n & h <= t & t <= 0 --> diffl (diff m) (diff (Suc m) t) t) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3198
   (EX t::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3199
       h < t &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3200
       t < 0 &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3201
       f h =
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3202
       real.sum (0, n) (%m::nat. diff m 0 / real (FACT m) * h ^ m) +
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3203
       diff n t / real (FACT n) * h ^ n)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3204
  by (import transc MCLAURIN_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3205
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3206
lemma MCLAURIN_ALL_LT: "ALL (f::real => real) diff::nat => real => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3207
   diff 0 = f &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3208
   (ALL (m::nat) x::real. diffl (diff m) (diff (Suc m) x) x) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3209
   (ALL (x::real) n::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3210
       x ~= 0 & 0 < n -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3211
       (EX t::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3212
           0 < abs t &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3213
           abs t < abs x &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3214
           f x =
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3215
           real.sum (0, n) (%m::nat. diff m 0 / real (FACT m) * x ^ m) +
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3216
           diff n t / real (FACT n) * x ^ n))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3217
  by (import transc MCLAURIN_ALL_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3218
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3219
lemma MCLAURIN_ZERO: "ALL (diff::nat => real => real) (n::nat) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3220
   x = 0 & 0 < n -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3221
   real.sum (0, n) (%m::nat. diff m 0 / real (FACT m) * x ^ m) = diff 0 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3222
  by (import transc MCLAURIN_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3223
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3224
lemma MCLAURIN_ALL_LE: "ALL (f::real => real) diff::nat => real => real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3225
   diff 0 = f &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3226
   (ALL (m::nat) x::real. diffl (diff m) (diff (Suc m) x) x) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3227
   (ALL (x::real) n::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3228
       EX t::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3229
          abs t <= abs x &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3230
          f x =
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3231
          real.sum (0, n) (%m::nat. diff m 0 / real (FACT m) * x ^ m) +
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3232
          diff n t / real (FACT n) * x ^ n)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3233
  by (import transc MCLAURIN_ALL_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3234
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3235
lemma MCLAURIN_EXP_LT: "ALL (x::real) n::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3236
   x ~= 0 & 0 < n -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3237
   (EX xa::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3238
       0 < abs xa &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3239
       abs xa < abs x &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3240
       exp x =
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3241
       real.sum (0, n) (%m::nat. x ^ m / real (FACT m)) +
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3242
       exp xa / real (FACT n) * x ^ n)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3243
  by (import transc MCLAURIN_EXP_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3244
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3245
lemma MCLAURIN_EXP_LE: "ALL (x::real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3246
   EX xa::real.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3247
      abs xa <= abs x &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3248
      exp x =
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3249
      real.sum (0, n) (%m::nat. x ^ m / real (FACT m)) +
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3250
      exp xa / real (FACT n) * x ^ n"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3251
  by (import transc MCLAURIN_EXP_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3252
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3253
lemma DIFF_LN_COMPOSITE: "ALL (g::real => real) (m::real) x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3254
   diffl g m x & 0 < g x -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3255
   diffl (%x::real. ln (g x)) (inverse (g x) * m) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3256
  by (import transc DIFF_LN_COMPOSITE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3257
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3258
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3259
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3260
;setup_theory poly
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3261
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3262
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3263
  poly :: "real list => real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3264
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3265
specification (poly_primdef: poly) poly_def: "(ALL x::real. poly [] x = 0) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3266
(ALL (h::real) (t::real list) x::real. poly (h # t) x = h + x * poly t x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3267
  by (import poly poly_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3268
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3269
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3270
  poly_add :: "real list => real list => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3271
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3272
specification (poly_add_primdef: poly_add) poly_add_def: "(ALL l2::real list. poly_add [] l2 = l2) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3273
(ALL (h::real) (t::real list) l2::real list.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3274
    poly_add (h # t) l2 =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3275
    (if l2 = [] then h # t else (h + hd l2) # poly_add t (tl l2)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3276
  by (import poly poly_add_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3277
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3278
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3279
  "##" :: "real => real list => real list" ("##")
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3280
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3281
specification ("##") poly_cmul_def: "(ALL c::real. ## c [] = []) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3282
(ALL (c::real) (h::real) t::real list. ## c (h # t) = c * h # ## c t)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3283
  by (import poly poly_cmul_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3284
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3285
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3286
  poly_neg :: "real list => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3287
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3288
defs
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3289
  poly_neg_primdef: "poly_neg == ## (- 1)"
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3290
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3291
lemma poly_neg_def: "poly_neg = ## (- 1)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3292
  by (import poly poly_neg_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3293
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3294
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3295
  poly_mul :: "real list => real list => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3296
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3297
specification (poly_mul_primdef: poly_mul) poly_mul_def: "(ALL l2::real list. poly_mul [] l2 = []) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3298
(ALL (h::real) (t::real list) l2::real list.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3299
    poly_mul (h # t) l2 =
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3300
    (if t = [] then ## h l2 else poly_add (## h l2) (0 # poly_mul t l2)))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3301
  by (import poly poly_mul_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3302
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3303
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3304
  poly_exp :: "real list => nat => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3305
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3306
specification (poly_exp_primdef: poly_exp) poly_exp_def: "(ALL p::real list. poly_exp p 0 = [1]) &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3307
(ALL (p::real list) n::nat. poly_exp p (Suc n) = poly_mul p (poly_exp p n))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3308
  by (import poly poly_exp_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3309
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3310
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3311
  poly_diff_aux :: "nat => real list => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3312
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3313
specification (poly_diff_aux_primdef: poly_diff_aux) poly_diff_aux_def: "(ALL n::nat. poly_diff_aux n [] = []) &
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3314
(ALL (n::nat) (h::real) t::real list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3315
    poly_diff_aux n (h # t) = real n * h # poly_diff_aux (Suc n) t)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3316
  by (import poly poly_diff_aux_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3317
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3318
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3319
  diff :: "real list => real list" 
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3320
  "diff == %l::real list. if l = [] then [] else poly_diff_aux 1 (tl l)"
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3321
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3322
lemma poly_diff_def: "ALL l::real list. diff l = (if l = [] then [] else poly_diff_aux 1 (tl l))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3323
  by (import poly poly_diff_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3324
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3325
lemma POLY_ADD_CLAUSES: "poly_add [] (p2::real list) = p2 &
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3326
poly_add (p1::real list) [] = p1 &
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3327
poly_add ((h1::real) # (t1::real list)) ((h2::real) # (t2::real list)) =
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3328
(h1 + h2) # poly_add t1 t2"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3329
  by (import poly POLY_ADD_CLAUSES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3330
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3331
lemma POLY_CMUL_CLAUSES: "## (c::real) [] = [] & ## c ((h::real) # (t::real list)) = c * h # ## c t"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3332
  by (import poly POLY_CMUL_CLAUSES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3333
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3334
lemma POLY_NEG_CLAUSES: "poly_neg [] = [] & poly_neg ((h::real) # (t::real list)) = - h # poly_neg t"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3335
  by (import poly POLY_NEG_CLAUSES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3336
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3337
lemma POLY_MUL_CLAUSES: "poly_mul [] (p2::real list) = [] &
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3338
poly_mul [h1::real] p2 = ## h1 p2 &
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3339
poly_mul (h1 # (k1::real) # (t1::real list)) p2 =
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3340
poly_add (## h1 p2) (0 # poly_mul (k1 # t1) p2)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3341
  by (import poly POLY_MUL_CLAUSES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3342
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3343
lemma POLY_DIFF_CLAUSES: "diff [] = [] &
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3344
diff [c::real] = [] & diff ((h::real) # (t::real list)) = poly_diff_aux 1 t"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3345
  by (import poly POLY_DIFF_CLAUSES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3346
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3347
lemma POLY_ADD: "ALL (t::real list) (p2::real list) x::real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3348
   poly (poly_add t p2) x = poly t x + poly p2 x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3349
  by (import poly POLY_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3350
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3351
lemma POLY_CMUL: "ALL (t::real list) (c::real) x::real. poly (## c t) x = c * poly t x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3352
  by (import poly POLY_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3353
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3354
lemma POLY_NEG: "ALL (x::real list) xa::real. poly (poly_neg x) xa = - poly x xa"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3355
  by (import poly POLY_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3356
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3357
lemma POLY_MUL: "ALL (x::real) (t::real list) p2::real list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3358
   poly (poly_mul t p2) x = poly t x * poly p2 x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3359
  by (import poly POLY_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3360
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3361
lemma POLY_EXP: "ALL (p::real list) (n::nat) x::real. poly (poly_exp p n) x = poly p x ^ n"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3362
  by (import poly POLY_EXP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3363
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3364
lemma POLY_DIFF_LEMMA: "ALL (t::real list) (n::nat) x::real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3365
   diffl (%x::real. x ^ Suc n * poly t x)
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3366
    (x ^ n * poly (poly_diff_aux (Suc n) t) x) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3367
  by (import poly POLY_DIFF_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3368
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3369
lemma POLY_DIFF: "ALL (t::real list) x::real. diffl (poly t) (poly (diff t) x) x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3370
  by (import poly POLY_DIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3371
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3372
lemma POLY_DIFFERENTIABLE: "ALL l::real list. All (differentiable (poly l))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3373
  by (import poly POLY_DIFFERENTIABLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3374
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3375
lemma POLY_CONT: "ALL l::real list. All (contl (poly l))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3376
  by (import poly POLY_CONT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3377
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3378
lemma POLY_IVT_POS: "ALL (x::real list) (xa::real) xb::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3379
   xa < xb & poly x xa < 0 & 0 < poly x xb -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3380
   (EX xc::real. xa < xc & xc < xb & poly x xc = 0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3381
  by (import poly POLY_IVT_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3382
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3383
lemma POLY_IVT_NEG: "ALL (p::real list) (a::real) b::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3384
   a < b & 0 < poly p a & poly p b < 0 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3385
   (EX x::real. a < x & x < b & poly p x = 0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3386
  by (import poly POLY_IVT_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3387
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3388
lemma POLY_MVT: "ALL (p::real list) (a::real) b::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3389
   a < b -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3390
   (EX x::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3391
       a < x & x < b & poly p b - poly p a = (b - a) * poly (diff p) x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3392
  by (import poly POLY_MVT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3393
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3394
lemma POLY_ADD_RZERO: "ALL x::real list. poly (poly_add x []) = poly x"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3395
  by (import poly POLY_ADD_RZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3396
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3397
lemma POLY_MUL_ASSOC: "ALL (x::real list) (xa::real list) xb::real list.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3398
   poly (poly_mul x (poly_mul xa xb)) = poly (poly_mul (poly_mul x xa) xb)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3399
  by (import poly POLY_MUL_ASSOC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3400
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3401
lemma POLY_EXP_ADD: "ALL (x::nat) (xa::nat) xb::real list.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3402
   poly (poly_exp xb (xa + x)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3403
   poly (poly_mul (poly_exp xb xa) (poly_exp xb x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3404
  by (import poly POLY_EXP_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3405
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3406
lemma POLY_DIFF_AUX_ADD: "ALL (t::real list) (p2::real list) n::nat.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3407
   poly (poly_diff_aux n (poly_add t p2)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3408
   poly (poly_add (poly_diff_aux n t) (poly_diff_aux n p2))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3409
  by (import poly POLY_DIFF_AUX_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3410
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3411
lemma POLY_DIFF_AUX_CMUL: "ALL (t::real list) (c::real) n::nat.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3412
   poly (poly_diff_aux n (## c t)) = poly (## c (poly_diff_aux n t))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3413
  by (import poly POLY_DIFF_AUX_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3414
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3415
lemma POLY_DIFF_AUX_NEG: "ALL (x::real list) xa::nat.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3416
   poly (poly_diff_aux xa (poly_neg x)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3417
   poly (poly_neg (poly_diff_aux xa x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3418
  by (import poly POLY_DIFF_AUX_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3419
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3420
lemma POLY_DIFF_AUX_MUL_LEMMA: "ALL (t::real list) n::nat.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3421
   poly (poly_diff_aux (Suc n) t) = poly (poly_add (poly_diff_aux n t) t)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3422
  by (import poly POLY_DIFF_AUX_MUL_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3423
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3424
lemma POLY_DIFF_ADD: "ALL (t::real list) p2::real list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3425
   poly (diff (poly_add t p2)) = poly (poly_add (diff t) (diff p2))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3426
  by (import poly POLY_DIFF_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3427
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3428
lemma POLY_DIFF_CMUL: "ALL (t::real list) c::real. poly (diff (## c t)) = poly (## c (diff t))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3429
  by (import poly POLY_DIFF_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3430
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3431
lemma POLY_DIFF_NEG: "ALL x::real list. poly (diff (poly_neg x)) = poly (poly_neg (diff x))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3432
  by (import poly POLY_DIFF_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3433
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3434
lemma POLY_DIFF_MUL_LEMMA: "ALL (x::real list) xa::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3435
   poly (diff (xa # x)) = poly (poly_add (0 # diff x) x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3436
  by (import poly POLY_DIFF_MUL_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3437
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3438
lemma POLY_DIFF_MUL: "ALL (t::real list) p2::real list.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3439
   poly (diff (poly_mul t p2)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3440
   poly (poly_add (poly_mul t (diff p2)) (poly_mul (diff t) p2))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3441
  by (import poly POLY_DIFF_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3442
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3443
lemma POLY_DIFF_EXP: "ALL (p::real list) n::nat.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3444
   poly (diff (poly_exp p (Suc n))) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3445
   poly (poly_mul (## (real (Suc n)) (poly_exp p n)) (diff p))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3446
  by (import poly POLY_DIFF_EXP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3447
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3448
lemma POLY_DIFF_EXP_PRIME: "ALL (n::nat) a::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3449
   poly (diff (poly_exp [- a, 1] (Suc n))) =
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3450
   poly (## (real (Suc n)) (poly_exp [- a, 1] n))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3451
  by (import poly POLY_DIFF_EXP_PRIME)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3452
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3453
lemma POLY_LINEAR_REM: "ALL (t::real list) h::real.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3454
   EX (q::real list) r::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3455
      h # t = poly_add [r] (poly_mul [- (a::real), 1] q)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3456
  by (import poly POLY_LINEAR_REM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3457
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3458
lemma POLY_LINEAR_DIVIDES: "ALL (a::real) t::real list.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3459
   (poly t a = 0) = (t = [] | (EX q::real list. t = poly_mul [- a, 1] q))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3460
  by (import poly POLY_LINEAR_DIVIDES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3461
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3462
lemma POLY_LENGTH_MUL: "ALL x::real list. length (poly_mul [- (a::real), 1] x) = Suc (length x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3463
  by (import poly POLY_LENGTH_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3464
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3465
lemma POLY_ROOTS_INDEX_LEMMA: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3466
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3467
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3468
      (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3469
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3470
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3471
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3472
               ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3473
                 ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3474
                 ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3475
             ((op =::nat => nat => bool) ((size::real list => nat) p) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3476
           ((Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3477
             (%i::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3478
                 (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3479
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3480
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3481
                       ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3482
                         ((poly::real list => real => real) p x) (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3483
                       ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3484
                         (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3485
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3486
                              ((op <=::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3487
                              ((op =::real => real => bool) x (i m)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3488
  by (import poly POLY_ROOTS_INDEX_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3489
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3490
lemma POLY_ROOTS_INDEX_LENGTH: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3491
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3492
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3493
      ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3494
        ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3495
          ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3496
          ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3497
      ((Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3498
        (%i::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3499
            (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3500
             (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3501
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3502
                  ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3503
                    ((poly::real list => real => real) p x) (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3504
                  ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3505
                    (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3506
                        (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3507
                         ((op <=::nat => nat => bool) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3508
                           ((size::real list => nat) p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3509
                         ((op =::real => real => bool) x (i n))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3510
  by (import poly POLY_ROOTS_INDEX_LENGTH)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3511
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3512
lemma POLY_ROOTS_FINITE_LEMMA: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3513
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3514
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3515
      ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3516
        ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3517
          ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3518
          ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3519
      ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3520
        (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3521
            (Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3522
             (%i::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3523
                 (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3524
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3525
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3526
                       ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3527
                         ((poly::real list => real => real) p x) (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3528
                       ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3529
                         (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3530
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3531
                              ((op <::nat => nat => bool) n N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3532
                              ((op =::real => real => bool) x (i n)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3533
  by (import poly POLY_ROOTS_FINITE_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3534
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3535
lemma FINITE_LEMMA: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3536
 (%i::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3537
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3538
      (%x::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3539
          (All::((real => bool) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3540
           (%xa::real => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3541
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3542
                ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3543
                  (%xb::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3544
                      (op -->::bool => bool => bool) (xa xb)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3545
                       ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3546
                         (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3547
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3548
                              ((op <::nat => nat => bool) n x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3549
                              ((op =::real => real => bool) xb (i n))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3550
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3551
                  (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3552
                      (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3553
                       (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3554
                           (op -->::bool => bool => bool) (xa x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3555
                            ((op <::real => real => bool) x a)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3556
  by (import poly FINITE_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3557
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3558
lemma POLY_ROOTS_FINITE: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3559
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3560
     (op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3561
      ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3562
        ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3563
          ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3564
          ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3565
      ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3566
        (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3567
            (Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3568
             (%i::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3569
                 (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3570
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3571
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3572
                       ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3573
                         ((poly::real list => real => real) p x) (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3574
                       ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3575
                         (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3576
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3577
                              ((op <::nat => nat => bool) n N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3578
                              ((op =::real => real => bool) x (i n)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3579
  by (import poly POLY_ROOTS_FINITE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3580
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3581
lemma POLY_ENTIRE_LEMMA: "ALL (p::real list) q::real list.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3582
   poly p ~= poly [] & poly q ~= poly [] --> poly (poly_mul p q) ~= poly []"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3583
  by (import poly POLY_ENTIRE_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3584
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3585
lemma POLY_ENTIRE: "ALL (p::real list) q::real list.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3586
   (poly (poly_mul p q) = poly []) = (poly p = poly [] | poly q = poly [])"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3587
  by (import poly POLY_ENTIRE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3588
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3589
lemma POLY_MUL_LCANCEL: "ALL (x::real list) (xa::real list) xb::real list.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3590
   (poly (poly_mul x xa) = poly (poly_mul x xb)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3591
   (poly x = poly [] | poly xa = poly xb)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3592
  by (import poly POLY_MUL_LCANCEL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3593
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3594
lemma POLY_EXP_EQ_0: "ALL (p::real list) n::nat.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3595
   (poly (poly_exp p n) = poly []) = (poly p = poly [] & n ~= 0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3596
  by (import poly POLY_EXP_EQ_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3597
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3598
lemma POLY_PRIME_EQ_0: "ALL a::real. poly [a, 1] ~= poly []"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3599
  by (import poly POLY_PRIME_EQ_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3600
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3601
lemma POLY_EXP_PRIME_EQ_0: "ALL (a::real) n::nat. poly (poly_exp [a, 1] n) ~= poly []"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3602
  by (import poly POLY_EXP_PRIME_EQ_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3603
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3604
lemma POLY_ZERO_LEMMA: "ALL (h::real) t::real list.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3605
   poly (h # t) = poly [] --> h = 0 & poly t = poly []"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3606
  by (import poly POLY_ZERO_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3607
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3608
lemma POLY_ZERO: "ALL t::real list. (poly t = poly []) = list_all (%c::real. c = 0) t"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3609
  by (import poly POLY_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3610
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3611
lemma POLY_DIFF_AUX_ISZERO: "ALL (t::real list) n::nat.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3612
   list_all (%c::real. c = 0) (poly_diff_aux (Suc n) t) =
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3613
   list_all (%c::real. c = 0) t"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3614
  by (import poly POLY_DIFF_AUX_ISZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3615
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3616
lemma POLY_DIFF_ISZERO: "ALL x::real list.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3617
   poly (diff x) = poly [] --> (EX h::real. poly x = poly [h])"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3618
  by (import poly POLY_DIFF_ISZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3619
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3620
lemma POLY_DIFF_ZERO: "ALL x::real list. poly x = poly [] --> poly (diff x) = poly []"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3621
  by (import poly POLY_DIFF_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3622
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3623
lemma POLY_DIFF_WELLDEF: "ALL (p::real list) q::real list.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3624
   poly p = poly q --> poly (diff p) = poly (diff q)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3625
  by (import poly POLY_DIFF_WELLDEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3626
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3627
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3628
  poly_divides :: "real list => real list => bool" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3629
  "poly_divides ==
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3630
%(p1::real list) p2::real list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3631
   EX q::real list. poly p2 = poly (poly_mul p1 q)"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3632
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3633
lemma poly_divides: "ALL (p1::real list) p2::real list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3634
   poly_divides p1 p2 = (EX q::real list. poly p2 = poly (poly_mul p1 q))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3635
  by (import poly poly_divides)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3636
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3637
lemma POLY_PRIMES: "ALL (a::real) (p::real list) q::real list.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3638
   poly_divides [a, 1] (poly_mul p q) =
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3639
   (poly_divides [a, 1] p | poly_divides [a, 1] q)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3640
  by (import poly POLY_PRIMES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3641
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3642
lemma POLY_DIVIDES_REFL: "ALL p::real list. poly_divides p p"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3643
  by (import poly POLY_DIVIDES_REFL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3644
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3645
lemma POLY_DIVIDES_TRANS: "ALL (p::real list) (q::real list) r::real list.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3646
   poly_divides p q & poly_divides q r --> poly_divides p r"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3647
  by (import poly POLY_DIVIDES_TRANS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3648
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3649
lemma POLY_DIVIDES_EXP: "ALL (p::real list) (m::nat) n::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3650
   m <= n --> poly_divides (poly_exp p m) (poly_exp p n)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3651
  by (import poly POLY_DIVIDES_EXP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3652
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3653
lemma POLY_EXP_DIVIDES: "ALL (p::real list) (q::real list) (m::nat) n::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3654
   poly_divides (poly_exp p n) q & m <= n --> poly_divides (poly_exp p m) q"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3655
  by (import poly POLY_EXP_DIVIDES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3656
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3657
lemma POLY_DIVIDES_ADD: "ALL (p::real list) (q::real list) r::real list.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3658
   poly_divides p q & poly_divides p r --> poly_divides p (poly_add q r)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3659
  by (import poly POLY_DIVIDES_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3660
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3661
lemma POLY_DIVIDES_SUB: "ALL (p::real list) (q::real list) r::real list.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3662
   poly_divides p q & poly_divides p (poly_add q r) --> poly_divides p r"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3663
  by (import poly POLY_DIVIDES_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3664
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3665
lemma POLY_DIVIDES_SUB2: "ALL (p::real list) (q::real list) r::real list.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3666
   poly_divides p r & poly_divides p (poly_add q r) --> poly_divides p q"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3667
  by (import poly POLY_DIVIDES_SUB2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3668
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3669
lemma POLY_DIVIDES_ZERO: "ALL (p::real list) q::real list. poly p = poly [] --> poly_divides q p"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3670
  by (import poly POLY_DIVIDES_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3671
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3672
lemma POLY_ORDER_EXISTS: "ALL (a::real) (d::nat) p::real list.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3673
   length p = d & poly p ~= poly [] -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3674
   (EX x::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3675
       poly_divides (poly_exp [- a, 1] x) p &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3676
       ~ poly_divides (poly_exp [- a, 1] (Suc x)) p)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3677
  by (import poly POLY_ORDER_EXISTS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3678
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3679
lemma POLY_ORDER: "ALL (p::real list) a::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3680
   poly p ~= poly [] -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3681
   (EX! n::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3682
       poly_divides (poly_exp [- a, 1] n) p &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3683
       ~ poly_divides (poly_exp [- a, 1] (Suc n)) p)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3684
  by (import poly POLY_ORDER)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3685
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3686
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3687
  poly_order :: "real => real list => nat" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3688
  "poly_order ==
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3689
%(a::real) p::real list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3690
   SOME n::nat.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3691
      poly_divides (poly_exp [- a, 1] n) p &
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3692
      ~ poly_divides (poly_exp [- a, 1] (Suc n)) p"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3693
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3694
lemma poly_order: "ALL (a::real) p::real list.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3695
   poly_order a p =
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3696
   (SOME n::nat.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3697
       poly_divides (poly_exp [- a, 1] n) p &
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3698
       ~ poly_divides (poly_exp [- a, 1] (Suc n)) p)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3699
  by (import poly poly_order)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3700
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3701
lemma ORDER: "ALL (p::real list) (a::real) n::nat.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3702
   (poly_divides (poly_exp [- a, 1] n) p &
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3703
    ~ poly_divides (poly_exp [- a, 1] (Suc n)) p) =
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3704
   (n = poly_order a p & poly p ~= poly [])"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3705
  by (import poly ORDER)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3706
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3707
lemma ORDER_THM: "ALL (p::real list) a::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3708
   poly p ~= poly [] -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3709
   poly_divides (poly_exp [- a, 1] (poly_order a p)) p &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3710
   ~ poly_divides (poly_exp [- a, 1] (Suc (poly_order a p))) p"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3711
  by (import poly ORDER_THM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3712
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3713
lemma ORDER_UNIQUE: "ALL (p::real list) (a::real) n::nat.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3714
   poly p ~= poly [] &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3715
   poly_divides (poly_exp [- a, 1] n) p &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3716
   ~ poly_divides (poly_exp [- a, 1] (Suc n)) p -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3717
   n = poly_order a p"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3718
  by (import poly ORDER_UNIQUE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3719
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3720
lemma ORDER_POLY: "ALL (p::real list) (q::real list) a::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3721
   poly p = poly q --> poly_order a p = poly_order a q"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3722
  by (import poly ORDER_POLY)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3723
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3724
lemma ORDER_ROOT: "ALL (p::real list) a::real.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3725
   (poly p a = 0) = (poly p = poly [] | poly_order a p ~= 0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3726
  by (import poly ORDER_ROOT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3727
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3728
lemma ORDER_DIVIDES: "ALL (p::real list) (a::real) n::nat.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3729
   poly_divides (poly_exp [- a, 1] n) p =
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3730
   (poly p = poly [] | n <= poly_order a p)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3731
  by (import poly ORDER_DIVIDES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3732
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3733
lemma ORDER_DECOMP: "ALL (p::real list) a::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3734
   poly p ~= poly [] -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3735
   (EX x::real list.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3736
       poly p = poly (poly_mul (poly_exp [- a, 1] (poly_order a p)) x) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3737
       ~ poly_divides [- a, 1] x)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3738
  by (import poly ORDER_DECOMP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3739
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3740
lemma ORDER_MUL: "ALL (a::real) (p::real list) q::real list.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3741
   poly (poly_mul p q) ~= poly [] -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3742
   poly_order a (poly_mul p q) = poly_order a p + poly_order a q"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3743
  by (import poly ORDER_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3744
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3745
lemma ORDER_DIFF: "ALL (p::real list) a::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3746
   poly (diff p) ~= poly [] & poly_order a p ~= 0 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3747
   poly_order a p = Suc (poly_order a (diff p))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3748
  by (import poly ORDER_DIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3749
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3750
lemma POLY_SQUAREFREE_DECOMP_ORDER: "ALL (p::real list) (q::real list) (d::real list) (e::real list)
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3751
   (r::real list) s::real list.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3752
   poly (diff p) ~= poly [] &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3753
   poly p = poly (poly_mul q d) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3754
   poly (diff p) = poly (poly_mul e d) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3755
   poly d = poly (poly_add (poly_mul r p) (poly_mul s (diff p))) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3756
   (ALL a::real. poly_order a q = (if poly_order a p = 0 then 0 else 1))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3757
  by (import poly POLY_SQUAREFREE_DECOMP_ORDER)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3758
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3759
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3760
  rsquarefree :: "real list => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3761
  "rsquarefree ==
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3762
%p::real list.
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3763
   poly p ~= poly [] &
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3764
   (ALL a::real. poly_order a p = 0 | poly_order a p = 1)"
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3765
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3766
lemma rsquarefree: "ALL p::real list.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3767
   rsquarefree p =
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3768
   (poly p ~= poly [] &
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3769
    (ALL a::real. poly_order a p = 0 | poly_order a p = 1))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3770
  by (import poly rsquarefree)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3771
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3772
lemma RSQUAREFREE_ROOTS: "ALL p::real list.
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3773
   rsquarefree p = (ALL a::real. ~ (poly p a = 0 & poly (diff p) a = 0))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3774
  by (import poly RSQUAREFREE_ROOTS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3775
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3776
lemma RSQUAREFREE_DECOMP: "ALL (p::real list) a::real.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3777
   rsquarefree p & poly p a = 0 -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3778
   (EX q::real list. poly p = poly (poly_mul [- a, 1] q) & poly q a ~= 0)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3779
  by (import poly RSQUAREFREE_DECOMP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3780
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3781
lemma POLY_SQUAREFREE_DECOMP: "ALL (p::real list) (q::real list) (d::real list) (e::real list)
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3782
   (r::real list) s::real list.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3783
   poly (diff p) ~= poly [] &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3784
   poly p = poly (poly_mul q d) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3785
   poly (diff p) = poly (poly_mul e d) &
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3786
   poly d = poly (poly_add (poly_mul r p) (poly_mul s (diff p))) -->
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3787
   rsquarefree q & (ALL x::real. (poly q x = 0) = (poly p x = 0))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3788
  by (import poly POLY_SQUAREFREE_DECOMP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3789
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3790
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3791
  normalize :: "real list => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3792
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3793
specification (normalize) normalize: "normalize [] = [] &
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3794
(ALL (h::real) t::real list.
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3795
    normalize (h # t) =
17652
b1ef33ebfa17 Release HOL4 and HOLLight Importer.
obua
parents: 17644
diff changeset
  3796
    (if normalize t = [] then if h = 0 then [] else [h]
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3797
     else h # normalize t))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3798
  by (import poly normalize)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3799
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3800
lemma POLY_NORMALIZE: "ALL t::real list. poly (normalize t) = poly t"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3801
  by (import poly POLY_NORMALIZE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3802
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3803
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3804
  degree :: "real list => nat" 
17644
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3805
  "degree == %p::real list. PRE (length (normalize p))"
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3806
bd59bfd4bf37 fixed disambiguation problem
obua
parents: 17566
diff changeset
  3807
lemma degree: "ALL p::real list. degree p = PRE (length (normalize p))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3808
  by (import poly degree)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3809
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3810
lemma DEGREE_ZERO: "ALL p::real list. poly p = poly [] --> degree p = 0"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3811
  by (import poly DEGREE_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3812
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3813
lemma POLY_ROOTS_FINITE_SET: "ALL p::real list.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3814
   poly p ~= poly [] --> FINITE (GSPEC (%x::real. (x, poly p x = 0)))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3815
  by (import poly POLY_ROOTS_FINITE_SET)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3816
17694
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3817
lemma POLY_MONO: "ALL (x::real) (k::real) xa::real list.
b7870c2bd7df mapped "-->" to "hol4-->"
obua
parents: 17652
diff changeset
  3818
   abs x <= k --> abs (poly xa x) <= poly (map abs xa) k"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3819
  by (import poly POLY_MONO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3820
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3821
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3822
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3823
end
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3824