src/HOL/Import/HOL/HOL4Real.thy
author skalberg
Fri, 02 Apr 2004 17:37:45 +0200
changeset 14516 a183dec876ab
child 14694 49873d345a39
permissions -rw-r--r--
Added HOL proof importer.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
     1
theory HOL4Real = HOL4Base:
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
     2
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
     3
;setup_theory realax
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
     4
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
     5
lemma HREAL_RDISTRIB: "ALL x y z.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
     6
   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
     7
  by (import realax HREAL_RDISTRIB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
     8
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
     9
lemma HREAL_EQ_ADDL: "ALL x y. x ~= hreal_add x y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    10
  by (import realax HREAL_EQ_ADDL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    11
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    12
lemma HREAL_EQ_LADD: "ALL x y z. (hreal_add x y = hreal_add x z) = (y = z)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    13
  by (import realax HREAL_EQ_LADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    14
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    15
lemma HREAL_LT_REFL: "ALL x. ~ hreal_lt x x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    16
  by (import realax HREAL_LT_REFL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    17
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    18
lemma HREAL_LT_ADDL: "ALL x y. hreal_lt x (hreal_add x y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    19
  by (import realax HREAL_LT_ADDL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    20
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    21
lemma HREAL_LT_NE: "ALL x y. hreal_lt x y --> x ~= y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    22
  by (import realax HREAL_LT_NE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    23
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    24
lemma HREAL_LT_ADDR: "ALL x y. ~ hreal_lt (hreal_add x y) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    25
  by (import realax HREAL_LT_ADDR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    26
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    27
lemma HREAL_LT_GT: "ALL x y. hreal_lt x y --> ~ hreal_lt y x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    28
  by (import realax HREAL_LT_GT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    29
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    30
lemma HREAL_LT_ADD2: "ALL x1 x2 y1 y2.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    31
   hreal_lt x1 y1 & hreal_lt x2 y2 -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    32
   hreal_lt (hreal_add x1 x2) (hreal_add y1 y2)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    33
  by (import realax HREAL_LT_ADD2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    34
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    35
lemma HREAL_LT_LADD: "ALL x y z. hreal_lt (hreal_add x y) (hreal_add x z) = hreal_lt y z"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    36
  by (import realax HREAL_LT_LADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    37
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    38
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    39
  treal_0 :: "hreal * hreal" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    40
  "treal_0 == (hreal_1, hreal_1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    41
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    42
lemma treal_0: "treal_0 = (hreal_1, hreal_1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    43
  by (import realax treal_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    44
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    45
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    46
  treal_1 :: "hreal * hreal" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    47
  "treal_1 == (hreal_add hreal_1 hreal_1, hreal_1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    48
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    49
lemma treal_1: "treal_1 = (hreal_add hreal_1 hreal_1, hreal_1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    50
  by (import realax treal_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    51
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    52
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    53
  treal_neg :: "hreal * hreal => hreal * hreal" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    54
  "treal_neg == %(x, y). (y, x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    55
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    56
lemma treal_neg: "ALL x y. treal_neg (x, y) = (y, x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    57
  by (import realax treal_neg)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    58
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    59
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    60
  treal_add :: "hreal * hreal => hreal * hreal => hreal * hreal" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    61
  "treal_add == %(x1, y1) (x2, y2). (hreal_add x1 x2, hreal_add y1 y2)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    62
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    63
lemma treal_add: "ALL x1 y1 x2 y2.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    64
   treal_add (x1, y1) (x2, y2) = (hreal_add x1 x2, hreal_add y1 y2)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    65
  by (import realax treal_add)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    66
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    67
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    68
  treal_mul :: "hreal * hreal => hreal * hreal => hreal * hreal" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    69
  "treal_mul ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    70
%(x1, y1) (x2, y2).
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    71
   (hreal_add (hreal_mul x1 x2) (hreal_mul y1 y2),
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    72
    hreal_add (hreal_mul x1 y2) (hreal_mul y1 x2))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    73
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    74
lemma treal_mul: "ALL x1 y1 x2 y2.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    75
   treal_mul (x1, y1) (x2, y2) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    76
   (hreal_add (hreal_mul x1 x2) (hreal_mul y1 y2),
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    77
    hreal_add (hreal_mul x1 y2) (hreal_mul y1 x2))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    78
  by (import realax treal_mul)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    79
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    80
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    81
  treal_lt :: "hreal * hreal => hreal * hreal => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    82
  "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
    83
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    84
lemma treal_lt: "ALL x1 y1 x2 y2.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    85
   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
    86
  by (import realax treal_lt)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    87
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    88
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    89
  treal_inv :: "hreal * hreal => hreal * hreal" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    90
  "treal_inv ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    91
%(x, y).
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    92
   if x = y then treal_0
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    93
   else if hreal_lt y x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    94
        then (hreal_add (hreal_inv (hreal_sub x y)) hreal_1, hreal_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    95
        else (hreal_1, hreal_add (hreal_inv (hreal_sub y x)) hreal_1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    96
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    97
lemma treal_inv: "ALL x y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    98
   treal_inv (x, y) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
    99
   (if x = y then treal_0
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   100
    else if hreal_lt y x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   101
         then (hreal_add (hreal_inv (hreal_sub x y)) hreal_1, hreal_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   102
         else (hreal_1, hreal_add (hreal_inv (hreal_sub y x)) hreal_1))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   103
  by (import realax treal_inv)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   104
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   105
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   106
  treal_eq :: "hreal * hreal => hreal * hreal => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   107
  "treal_eq == %(x1, y1) (x2, y2). hreal_add x1 y2 = hreal_add x2 y1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   108
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   109
lemma treal_eq: "ALL x1 y1 x2 y2.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   110
   treal_eq (x1, y1) (x2, y2) = (hreal_add x1 y2 = hreal_add x2 y1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   111
  by (import realax treal_eq)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   112
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   113
lemma TREAL_EQ_REFL: "ALL x. treal_eq x x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   114
  by (import realax TREAL_EQ_REFL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   115
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   116
lemma TREAL_EQ_SYM: "ALL x y. treal_eq x y = treal_eq y x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   117
  by (import realax TREAL_EQ_SYM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   118
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   119
lemma TREAL_EQ_TRANS: "ALL x y z. treal_eq x y & treal_eq y z --> treal_eq x z"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   120
  by (import realax TREAL_EQ_TRANS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   121
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   122
lemma TREAL_EQ_EQUIV: "ALL p q. treal_eq p q = (treal_eq p = treal_eq q)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   123
  by (import realax TREAL_EQ_EQUIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   124
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   125
lemma TREAL_EQ_AP: "ALL p q. p = q --> treal_eq p q"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   126
  by (import realax TREAL_EQ_AP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   127
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   128
lemma TREAL_10: "~ treal_eq treal_1 treal_0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   129
  by (import realax TREAL_10)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   130
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   131
lemma TREAL_ADD_SYM: "ALL x y. treal_add x y = treal_add y x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   132
  by (import realax TREAL_ADD_SYM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   133
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   134
lemma TREAL_MUL_SYM: "ALL x y. treal_mul x y = treal_mul y x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   135
  by (import realax TREAL_MUL_SYM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   136
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   137
lemma TREAL_ADD_ASSOC: "ALL x y z. treal_add x (treal_add y z) = treal_add (treal_add x y) z"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   138
  by (import realax TREAL_ADD_ASSOC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   139
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   140
lemma TREAL_MUL_ASSOC: "ALL x y z. treal_mul x (treal_mul y z) = treal_mul (treal_mul x y) z"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   141
  by (import realax TREAL_MUL_ASSOC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   142
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   143
lemma TREAL_LDISTRIB: "ALL x y z.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   144
   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
   145
  by (import realax TREAL_LDISTRIB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   146
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   147
lemma TREAL_ADD_LID: "ALL x. treal_eq (treal_add treal_0 x) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   148
  by (import realax TREAL_ADD_LID)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   149
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   150
lemma TREAL_MUL_LID: "ALL x. treal_eq (treal_mul treal_1 x) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   151
  by (import realax TREAL_MUL_LID)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   152
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   153
lemma TREAL_ADD_LINV: "ALL x. treal_eq (treal_add (treal_neg x) x) treal_0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   154
  by (import realax TREAL_ADD_LINV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   155
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   156
lemma TREAL_INV_0: "treal_eq (treal_inv treal_0) treal_0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   157
  by (import realax TREAL_INV_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   158
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   159
lemma TREAL_MUL_LINV: "ALL x. ~ treal_eq x treal_0 --> treal_eq (treal_mul (treal_inv x) x) treal_1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   160
  by (import realax TREAL_MUL_LINV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   161
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   162
lemma TREAL_LT_TOTAL: "ALL x y. treal_eq x y | treal_lt x y | treal_lt y x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   163
  by (import realax TREAL_LT_TOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   164
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   165
lemma TREAL_LT_REFL: "ALL x. ~ treal_lt x x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   166
  by (import realax TREAL_LT_REFL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   167
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   168
lemma TREAL_LT_TRANS: "ALL x y z. treal_lt x y & treal_lt y z --> treal_lt x z"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   169
  by (import realax TREAL_LT_TRANS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   170
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   171
lemma TREAL_LT_ADD: "ALL x y z. treal_lt y z --> treal_lt (treal_add x y) (treal_add x z)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   172
  by (import realax TREAL_LT_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   173
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   174
lemma TREAL_LT_MUL: "ALL x y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   175
   treal_lt treal_0 x & treal_lt treal_0 y -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   176
   treal_lt treal_0 (treal_mul x y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   177
  by (import realax TREAL_LT_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   178
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   179
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   180
  treal_of_hreal :: "hreal => hreal * hreal" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   181
  "treal_of_hreal == %x. (hreal_add x hreal_1, hreal_1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   182
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   183
lemma treal_of_hreal: "ALL x. treal_of_hreal x = (hreal_add x hreal_1, hreal_1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   184
  by (import realax treal_of_hreal)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   185
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   186
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   187
  hreal_of_treal :: "hreal * hreal => hreal" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   188
  "hreal_of_treal == %(x, y). SOME d. x = hreal_add y d"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   189
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   190
lemma hreal_of_treal: "ALL x y. hreal_of_treal (x, y) = (SOME d. x = hreal_add y d)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   191
  by (import realax hreal_of_treal)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   192
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   193
lemma TREAL_BIJ: "(ALL h. hreal_of_treal (treal_of_hreal h) = h) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   194
(ALL r. treal_lt treal_0 r = treal_eq (treal_of_hreal (hreal_of_treal r)) r)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   195
  by (import realax TREAL_BIJ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   196
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   197
lemma TREAL_ISO: "ALL h i. hreal_lt h i --> treal_lt (treal_of_hreal h) (treal_of_hreal i)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   198
  by (import realax TREAL_ISO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   199
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   200
lemma TREAL_BIJ_WELLDEF: "ALL h i. treal_eq h i --> hreal_of_treal h = hreal_of_treal i"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   201
  by (import realax TREAL_BIJ_WELLDEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   202
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   203
lemma TREAL_NEG_WELLDEF: "ALL x1 x2. treal_eq x1 x2 --> treal_eq (treal_neg x1) (treal_neg x2)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   204
  by (import realax TREAL_NEG_WELLDEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   205
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   206
lemma TREAL_ADD_WELLDEFR: "ALL x1 x2 y. treal_eq x1 x2 --> treal_eq (treal_add x1 y) (treal_add x2 y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   207
  by (import realax TREAL_ADD_WELLDEFR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   208
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   209
lemma TREAL_ADD_WELLDEF: "ALL x1 x2 y1 y2.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   210
   treal_eq x1 x2 & treal_eq y1 y2 -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   211
   treal_eq (treal_add x1 y1) (treal_add x2 y2)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   212
  by (import realax TREAL_ADD_WELLDEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   213
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   214
lemma TREAL_MUL_WELLDEFR: "ALL x1 x2 y. treal_eq x1 x2 --> treal_eq (treal_mul x1 y) (treal_mul x2 y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   215
  by (import realax TREAL_MUL_WELLDEFR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   216
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   217
lemma TREAL_MUL_WELLDEF: "ALL x1 x2 y1 y2.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   218
   treal_eq x1 x2 & treal_eq y1 y2 -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   219
   treal_eq (treal_mul x1 y1) (treal_mul x2 y2)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   220
  by (import realax TREAL_MUL_WELLDEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   221
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   222
lemma TREAL_LT_WELLDEFR: "ALL x1 x2 y. treal_eq x1 x2 --> treal_lt x1 y = treal_lt x2 y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   223
  by (import realax TREAL_LT_WELLDEFR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   224
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   225
lemma TREAL_LT_WELLDEFL: "ALL x y1 y2. treal_eq y1 y2 --> treal_lt x y1 = treal_lt x y2"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   226
  by (import realax TREAL_LT_WELLDEFL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   227
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   228
lemma TREAL_LT_WELLDEF: "ALL x1 x2 y1 y2.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   229
   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
   230
  by (import realax TREAL_LT_WELLDEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   231
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   232
lemma TREAL_INV_WELLDEF: "ALL x1 x2. treal_eq x1 x2 --> treal_eq (treal_inv x1) (treal_inv x2)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   233
  by (import realax TREAL_INV_WELLDEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   234
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   235
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   236
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   237
;setup_theory real
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   238
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   239
lemma REAL_0: "(0::real) = (0::real)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   240
  by (import real REAL_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   241
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   242
lemma REAL_1: "(1::real) = (1::real)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   243
  by (import real REAL_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   244
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   245
lemma REAL_ADD_LID_UNIQ: "ALL (x::real) y::real. (x + y = y) = (x = (0::real))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   246
  by (import real REAL_ADD_LID_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   247
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   248
lemma REAL_ADD_RID_UNIQ: "ALL (x::real) y::real. (x + y = x) = (y = (0::real))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   249
  by (import real REAL_ADD_RID_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   250
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   251
lemma REAL_LNEG_UNIQ: "ALL (x::real) y::real. (x + y = (0::real)) = (x = - y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   252
  by (import real REAL_LNEG_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   253
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   254
lemma REAL_LT_ANTISYM: "ALL (x::real) y::real. ~ (x < y & y < x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   255
  by (import real REAL_LT_ANTISYM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   256
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   257
lemma REAL_LET_TOTAL: "ALL (x::real) y::real. x <= y | y < x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   258
  by (import real REAL_LET_TOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   259
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   260
lemma REAL_LTE_TOTAL: "ALL (x::real) y::real. x < y | y <= x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   261
  by (import real REAL_LTE_TOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   262
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   263
lemma REAL_LET_ANTISYM: "ALL (x::real) y::real. ~ (x < y & y <= x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   264
  by (import real REAL_LET_ANTISYM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   265
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   266
lemma REAL_LTE_ANTSYM: "ALL (x::real) y::real. ~ (x <= y & y < x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   267
  by (import real REAL_LTE_ANTSYM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   268
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   269
lemma REAL_LT_NEGTOTAL: "ALL x::real. x = (0::real) | (0::real) < x | (0::real) < - x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   270
  by (import real REAL_LT_NEGTOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   271
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   272
lemma REAL_LE_NEGTOTAL: "ALL x::real. (0::real) <= x | (0::real) <= - x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   273
  by (import real REAL_LE_NEGTOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   274
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   275
lemma REAL_LE_MUL: "ALL (x::real) y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   276
   (0::real) <= x & (0::real) <= y --> (0::real) <= x * y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   277
  by (import real REAL_LE_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   278
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   279
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
   280
  by (import real REAL_LT_ADDNEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   281
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   282
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
   283
  by (import real REAL_LT_ADDNEG2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   284
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   285
lemma REAL_LT_ADD1: "ALL (x::real) y::real. x <= y --> x < y + (1::real)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   286
  by (import real REAL_LT_ADD1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   287
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   288
lemma REAL_LE_DOUBLE: "ALL x::real. ((0::real) <= x + x) = ((0::real) <= x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   289
  by (import real REAL_LE_DOUBLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   290
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   291
lemma REAL_NEG_EQ: "ALL (x::real) y::real. (- x = y) = (x = - y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   292
  by (import real REAL_NEG_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   293
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   294
lemma REAL_NEG_MINUS1: "ALL x::real. - x = - (1::real) * x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   295
  by (import real REAL_NEG_MINUS1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   296
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   297
lemma REAL_LT_LMUL_0: "ALL (x::real) y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   298
   (0::real) < x --> ((0::real) < x * y) = ((0::real) < y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   299
  by (import real REAL_LT_LMUL_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   300
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   301
lemma REAL_LT_RMUL_0: "ALL (x::real) y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   302
   (0::real) < y --> ((0::real) < x * y) = ((0::real) < x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   303
  by (import real REAL_LT_RMUL_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   304
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   305
lemma REAL_LT_LMUL: "ALL (x::real) (y::real) z::real. (0::real) < x --> (x * y < x * z) = (y < z)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   306
  by (import real REAL_LT_LMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   307
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   308
lemma REAL_LINV_UNIQ: "ALL (x::real) y::real. x * y = (1::real) --> x = inverse y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   309
  by (import real REAL_LINV_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   310
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   311
lemma REAL_LE_INV: "ALL x::real. (0::real) <= x --> (0::real) <= inverse x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   312
  by (import real REAL_LE_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   313
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   314
lemma REAL_LE_ADDR: "ALL (x::real) y::real. (x <= x + y) = ((0::real) <= y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   315
  by (import real REAL_LE_ADDR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   316
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   317
lemma REAL_LE_ADDL: "ALL (x::real) y::real. (y <= x + y) = ((0::real) <= x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   318
  by (import real REAL_LE_ADDL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   319
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   320
lemma REAL_LT_ADDR: "ALL (x::real) y::real. (x < x + y) = ((0::real) < y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   321
  by (import real REAL_LT_ADDR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   322
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   323
lemma REAL_LT_ADDL: "ALL (x::real) y::real. (y < x + y) = ((0::real) < x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   324
  by (import real REAL_LT_ADDL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   325
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   326
lemma REAL_LT_NZ: "ALL n::nat. (real n ~= (0::real)) = ((0::real) < real n)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   327
  by (import real REAL_LT_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   328
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   329
lemma REAL_NZ_IMP_LT: "ALL n::nat. n ~= (0::nat) --> (0::real) < real n"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   330
  by (import real REAL_NZ_IMP_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   331
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   332
lemma REAL_LT_RDIV_0: "ALL (y::real) z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   333
   (0::real) < z --> ((0::real) < y / z) = ((0::real) < y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   334
  by (import real REAL_LT_RDIV_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   335
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   336
lemma REAL_LT_RDIV: "ALL (x::real) (y::real) z::real. (0::real) < z --> (x / z < y / z) = (x < y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   337
  by (import real REAL_LT_RDIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   338
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   339
lemma REAL_LT_FRACTION_0: "ALL (n::nat) d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   340
   n ~= (0::nat) --> ((0::real) < d / real n) = ((0::real) < d)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   341
  by (import real REAL_LT_FRACTION_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   342
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   343
lemma REAL_LT_MULTIPLE: "ALL (x::nat) xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   344
   (1::nat) < x --> (xa < real x * xa) = ((0::real) < xa)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   345
  by (import real REAL_LT_MULTIPLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   346
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   347
lemma REAL_LT_FRACTION: "ALL (n::nat) d::real. (1::nat) < n --> (d / real n < d) = ((0::real) < d)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   348
  by (import real REAL_LT_FRACTION)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   349
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   350
lemma REAL_LT_HALF2: "ALL d::real. (d / (2::real) < d) = ((0::real) < d)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   351
  by (import real REAL_LT_HALF2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   352
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   353
lemma REAL_DIV_LMUL: "ALL (x::real) y::real. y ~= (0::real) --> y * (x / y) = x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   354
  by (import real REAL_DIV_LMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   355
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   356
lemma REAL_DIV_RMUL: "ALL (x::real) y::real. y ~= (0::real) --> x / y * y = x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   357
  by (import real REAL_DIV_RMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   358
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   359
lemma REAL_DOWN: "ALL x::real. (0::real) < x --> (EX xa::real. (0::real) < xa & xa < x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   360
  by (import real REAL_DOWN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   361
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   362
lemma REAL_SUB_SUB: "ALL (x::real) y::real. x - y - x = - y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   363
  by (import real REAL_SUB_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   364
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   365
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
   366
  by (import real REAL_ADD2_SUB2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   367
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   368
lemma REAL_LET_ADD: "ALL (x::real) y::real. (0::real) <= x & (0::real) < y --> (0::real) < x + y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   369
  by (import real REAL_LET_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   370
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   371
lemma REAL_LTE_ADD: "ALL (x::real) y::real. (0::real) < x & (0::real) <= y --> (0::real) < x + y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   372
  by (import real REAL_LTE_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   373
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   374
lemma REAL_SUB_LNEG: "ALL (x::real) y::real. - x - y = - (x + y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   375
  by (import real REAL_SUB_LNEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   376
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   377
lemma REAL_SUB_NEG2: "ALL (x::real) y::real. - x - - y = y - x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   378
  by (import real REAL_SUB_NEG2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   379
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   380
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
   381
  by (import real REAL_SUB_TRIANGLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   382
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   383
lemma REAL_INV_MUL: "ALL (x::real) y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   384
   x ~= (0::real) & y ~= (0::real) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   385
   inverse (x * y) = inverse x * inverse y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   386
  by (import real REAL_INV_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   387
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   388
lemma REAL_SUB_INV2: "ALL (x::real) y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   389
   x ~= (0::real) & y ~= (0::real) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   390
   inverse x - inverse y = (y - x) / (x * y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   391
  by (import real REAL_SUB_INV2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   392
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   393
lemma REAL_SUB_SUB2: "ALL (x::real) y::real. x - (x - y) = y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   394
  by (import real REAL_SUB_SUB2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   395
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   396
lemma REAL_ADD_SUB2: "ALL (x::real) y::real. x - (x + y) = - y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   397
  by (import real REAL_ADD_SUB2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   398
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   399
lemma REAL_LE_MUL2: "ALL (x1::real) (x2::real) (y1::real) y2::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   400
   (0::real) <= x1 & (0::real) <= y1 & x1 <= x2 & y1 <= y2 -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   401
   x1 * y1 <= x2 * y2"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   402
  by (import real REAL_LE_MUL2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   403
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   404
lemma REAL_LE_LDIV: "ALL (x::real) (y::real) z::real. (0::real) < x & y <= z * x --> y / x <= z"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   405
  by (import real REAL_LE_LDIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   406
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   407
lemma REAL_LE_RDIV: "ALL (x::real) (y::real) z::real. (0::real) < x & y * x <= z --> y <= z / x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   408
  by (import real REAL_LE_RDIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   409
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   410
lemma REAL_LT_DIV: "ALL (x::real) xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   411
   (0::real) < x & (0::real) < xa --> (0::real) < x / xa"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   412
  by (import real REAL_LT_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   413
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   414
lemma REAL_LE_DIV: "ALL (x::real) xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   415
   (0::real) <= x & (0::real) <= xa --> (0::real) <= x / xa"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   416
  by (import real REAL_LE_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   417
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   418
lemma REAL_LT_1: "ALL (x::real) y::real. (0::real) <= x & x < y --> x / y < (1::real)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   419
  by (import real REAL_LT_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   420
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   421
lemma REAL_POS_NZ: "ALL x::real. (0::real) < x --> x ~= (0::real)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   422
  by (import real REAL_POS_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   423
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   424
lemma REAL_EQ_LMUL_IMP: "ALL (x::real) (xa::real) xb::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   425
   x ~= (0::real) & x * xa = x * xb --> xa = xb"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   426
  by (import real REAL_EQ_LMUL_IMP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   427
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   428
lemma REAL_FACT_NZ: "ALL n. real (FACT n) ~= 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   429
  by (import real REAL_FACT_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   430
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   431
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
   432
  by (import real REAL_DIFFSQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   433
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   434
lemma REAL_POASQ: "ALL x::real. ((0::real) < x * x) = (x ~= (0::real))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   435
  by (import real REAL_POASQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   436
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   437
lemma REAL_SUMSQ: "ALL (x::real) y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   438
   (x * x + y * y = (0::real)) = (x = (0::real) & y = (0::real))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   439
  by (import real REAL_SUMSQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   440
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   441
lemma REAL_MIDDLE1: "ALL (a::real) b::real. a <= b --> a <= (a + b) / (2::real)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   442
  by (import real REAL_MIDDLE1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   443
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   444
lemma REAL_MIDDLE2: "ALL (a::real) b::real. a <= b --> (a + b) / (2::real) <= b"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   445
  by (import real REAL_MIDDLE2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   446
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   447
lemma ABS_LT_MUL2: "ALL (w::real) (x::real) (y::real) z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   448
   abs w < y & abs x < z --> abs (w * x) < y * z"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   449
  by (import real ABS_LT_MUL2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   450
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   451
lemma ABS_SUB: "ALL (x::real) y::real. abs (x - y) = abs (y - x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   452
  by (import real ABS_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   453
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   454
lemma ABS_REFL: "ALL x::real. (abs x = x) = ((0::real) <= x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   455
  by (import real ABS_REFL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   456
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   457
lemma ABS_BETWEEN: "ALL (x::real) (y::real) d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   458
   ((0::real) < d & x - d < y & y < x + d) = (abs (y - x) < d)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   459
  by (import real ABS_BETWEEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   460
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   461
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
   462
  by (import real ABS_BOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   463
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   464
lemma ABS_STILLNZ: "ALL (x::real) y::real. abs (x - y) < abs y --> x ~= (0::real)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   465
  by (import real ABS_STILLNZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   466
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   467
lemma ABS_CASES: "ALL x::real. x = (0::real) | (0::real) < abs x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   468
  by (import real ABS_CASES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   469
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   470
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
   471
  by (import real ABS_BETWEEN1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   472
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   473
lemma ABS_SIGN: "ALL (x::real) y::real. abs (x - y) < y --> (0::real) < x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   474
  by (import real ABS_SIGN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   475
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   476
lemma ABS_SIGN2: "ALL (x::real) y::real. abs (x - y) < - y --> x < (0::real)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   477
  by (import real ABS_SIGN2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   478
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   479
lemma ABS_CIRCLE: "ALL (x::real) (y::real) h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   480
   abs h < abs y - abs x --> abs (x + h) < abs y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   481
  by (import real ABS_CIRCLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   482
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   483
lemma REAL_SUB_ABS: "ALL (x::real) y::real. abs x - abs y <= abs (x - y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   484
  by (import real REAL_SUB_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   485
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   486
lemma ABS_SUB_ABS: "ALL (x::real) y::real. abs (abs x - abs y) <= abs (x - y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   487
  by (import real ABS_SUB_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   488
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   489
lemma ABS_BETWEEN2: "ALL (x0::real) (x::real) (y0::real) y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   490
   x0 < y0 &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   491
   abs (x - x0) < (y0 - x0) / (2::real) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   492
   abs (y - y0) < (y0 - x0) / (2::real) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   493
   x < y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   494
  by (import real ABS_BETWEEN2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   495
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   496
lemma POW_PLUS1: "ALL e. 0 < e --> (ALL n. 1 + real n * e <= (1 + e) ^ n)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   497
  by (import real POW_PLUS1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   498
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   499
lemma POW_M1: "ALL n::nat. abs ((- (1::real)) ^ n) = (1::real)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   500
  by (import real POW_M1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   501
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   502
lemma REAL_LE1_POW2: "ALL x::real. (1::real) <= x --> (1::real) <= x ^ 2"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   503
  by (import real REAL_LE1_POW2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   504
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   505
lemma REAL_LT1_POW2: "ALL x::real. (1::real) < x --> (1::real) < x ^ 2"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   506
  by (import real REAL_LT1_POW2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   507
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   508
lemma POW_POS_LT: "ALL (x::real) n::nat. (0::real) < x --> (0::real) < x ^ Suc n"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   509
  by (import real POW_POS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   510
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   511
lemma POW_LT: "ALL (n::nat) (x::real) y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   512
   (0::real) <= x & x < y --> x ^ Suc n < y ^ Suc n"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   513
  by (import real POW_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   514
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   515
lemma POW_ZERO_EQ: "ALL (n::nat) x::real. (x ^ Suc n = (0::real)) = (x = (0::real))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   516
  by (import real POW_ZERO_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   517
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   518
lemma REAL_POW_LT2: "ALL (n::nat) (x::real) y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   519
   n ~= (0::nat) & (0::real) <= x & x < y --> x ^ n < y ^ n"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   520
  by (import real REAL_POW_LT2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   521
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   522
lemma REAL_SUP_SOMEPOS: "ALL P::real => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   523
   (EX x::real. P x & (0::real) < x) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   524
   (EX z::real. ALL x::real. P x --> x < z) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   525
   (EX s::real. ALL y::real. (EX x::real. P x & y < x) = (y < s))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   526
  by (import real REAL_SUP_SOMEPOS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   527
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   528
lemma SUP_LEMMA1: "ALL (P::real => bool) (s::real) d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   529
   (ALL y::real. (EX x::real. P (x + d) & y < x) = (y < s)) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   530
   (ALL y::real. (EX x::real. P x & y < x) = (y < s + d))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   531
  by (import real SUP_LEMMA1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   532
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   533
lemma SUP_LEMMA2: "ALL P::real => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   534
   Ex P --> (EX (d::real) x::real. P (x + d) & (0::real) < x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   535
  by (import real SUP_LEMMA2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   536
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   537
lemma SUP_LEMMA3: "ALL d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   538
   (EX z::real. ALL x::real. (P::real => bool) x --> x < z) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   539
   (EX x::real. ALL xa::real. P (xa + d) --> xa < x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   540
  by (import real SUP_LEMMA3)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   541
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   542
lemma REAL_SUP_EXISTS: "ALL P::real => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   543
   Ex P & (EX z::real. ALL x::real. P x --> x < z) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   544
   (EX x::real. ALL y::real. (EX x::real. P x & y < x) = (y < x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   545
  by (import real REAL_SUP_EXISTS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   546
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   547
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   548
  sup :: "(real => bool) => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   549
  "sup == %P. SOME s. ALL y. (EX x. P x & y < x) = (y < s)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   550
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   551
lemma sup: "ALL P. sup P = (SOME s. ALL y. (EX x. P x & y < x) = (y < s))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   552
  by (import real sup)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   553
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   554
lemma REAL_SUP: "ALL P.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   555
   Ex P & (EX z. ALL x. P x --> x < z) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   556
   (ALL y. (EX x. P x & y < x) = (y < sup P))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   557
  by (import real REAL_SUP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   558
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   559
lemma REAL_SUP_UBOUND: "ALL P. Ex P & (EX z. ALL x. P x --> x < z) --> (ALL y. P y --> y <= sup P)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   560
  by (import real REAL_SUP_UBOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   561
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   562
lemma SETOK_LE_LT: "ALL P::real => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   563
   (Ex P & (EX z::real. ALL x::real. P x --> x <= z)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   564
   (Ex P & (EX z::real. ALL x::real. P x --> x < z))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   565
  by (import real SETOK_LE_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   566
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   567
lemma REAL_SUP_LE: "ALL P.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   568
   Ex P & (EX z. ALL x. P x --> x <= z) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   569
   (ALL y. (EX x. P x & y < x) = (y < sup P))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   570
  by (import real REAL_SUP_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   571
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   572
lemma REAL_SUP_UBOUND_LE: "ALL P. Ex P & (EX z. ALL x. P x --> x <= z) --> (ALL y. P y --> y <= sup P)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   573
  by (import real REAL_SUP_UBOUND_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   574
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   575
lemma REAL_ARCH_LEAST: "ALL y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   576
   0 < y -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   577
   (ALL x. 0 <= x --> (EX n. real n * y <= x & x < real (Suc n) * y))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   578
  by (import real REAL_ARCH_LEAST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   579
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   580
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   581
  sumc :: "nat => nat => (nat => real) => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   582
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   583
specification (sumc) sumc: "(ALL n f. sumc n 0 f = 0) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   584
(ALL n m f. sumc n (Suc m) f = sumc n m f + f (n + m))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   585
  by (import real sumc)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   586
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   587
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   588
  sum :: "nat * nat => (nat => real) => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   589
  "real.sum == split sumc"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   590
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   591
lemma SUM_DEF: "ALL m n f. real.sum (m, n) f = sumc m n f"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   592
  by (import real SUM_DEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   593
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   594
lemma sum: "ALL x xa xb.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   595
   real.sum (xa, 0) x = 0 &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   596
   real.sum (xa, Suc xb) x = real.sum (xa, xb) x + x (xa + xb)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   597
  by (import real sum)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   598
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   599
lemma SUM_TWO: "ALL f n p. real.sum (0, n) f + real.sum (n, p) f = real.sum (0, n + p) f"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   600
  by (import real SUM_TWO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   601
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   602
lemma SUM_DIFF: "ALL f m n. real.sum (m, n) f = real.sum (0, m + n) f - real.sum (0, m) f"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   603
  by (import real SUM_DIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   604
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   605
lemma ABS_SUM: "ALL f m n. abs (real.sum (m, n) f) <= real.sum (m, n) (%n. abs (f n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   606
  by (import real ABS_SUM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   607
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   608
lemma SUM_LE: "ALL f g m n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   609
   (ALL r. m <= r & r < n + m --> f r <= g r) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   610
   real.sum (m, n) f <= real.sum (m, n) g"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   611
  by (import real SUM_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   612
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   613
lemma SUM_EQ: "ALL f g m n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   614
   (ALL r. m <= r & r < n + m --> f r = g r) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   615
   real.sum (m, n) f = real.sum (m, n) g"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   616
  by (import real SUM_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   617
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   618
lemma SUM_POS: "ALL f. (ALL n. 0 <= f n) --> (ALL m n. 0 <= real.sum (m, n) f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   619
  by (import real SUM_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   620
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   621
lemma SUM_POS_GEN: "ALL f m. (ALL n. m <= n --> 0 <= f n) --> (ALL n. 0 <= real.sum (m, n) f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   622
  by (import real SUM_POS_GEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   623
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   624
lemma SUM_ABS: "ALL f m x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   625
   abs (real.sum (m, x) (%m. abs (f m))) = real.sum (m, x) (%m. abs (f m))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   626
  by (import real SUM_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   627
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   628
lemma SUM_ABS_LE: "ALL f m n. abs (real.sum (m, n) f) <= real.sum (m, n) (%n. abs (f n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   629
  by (import real SUM_ABS_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   630
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   631
lemma SUM_ZERO: "ALL f N.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   632
   (ALL n. N <= n --> f n = 0) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   633
   (ALL m n. N <= m --> real.sum (m, n) f = 0)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   634
  by (import real SUM_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   635
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   636
lemma SUM_ADD: "ALL f g m n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   637
   real.sum (m, n) (%n. f n + g n) = real.sum (m, n) f + real.sum (m, n) g"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   638
  by (import real SUM_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   639
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   640
lemma SUM_CMUL: "ALL f c m n. real.sum (m, n) (%n. c * f n) = c * real.sum (m, n) f"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   641
  by (import real SUM_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   642
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   643
lemma SUM_NEG: "ALL f n d. real.sum (n, d) (%n. - f n) = - real.sum (n, d) f"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   644
  by (import real SUM_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   645
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   646
lemma SUM_SUB: "ALL f g m n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   647
   real.sum (m, n) (%x. f x - g x) = real.sum (m, n) f - real.sum (m, n) g"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   648
  by (import real SUM_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   649
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   650
lemma SUM_SUBST: "ALL f g m n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   651
   (ALL p. m <= p & p < m + n --> f p = g p) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   652
   real.sum (m, n) f = real.sum (m, n) g"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   653
  by (import real SUM_SUBST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   654
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   655
lemma SUM_NSUB: "ALL n f c. real.sum (0, n) f - real n * c = real.sum (0, n) (%p. f p - c)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   656
  by (import real SUM_NSUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   657
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   658
lemma SUM_BOUND: "ALL f k m n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   659
   (ALL p. m <= p & p < m + n --> f p <= k) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   660
   real.sum (m, n) f <= real n * k"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   661
  by (import real SUM_BOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   662
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   663
lemma SUM_GROUP: "ALL n k f.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   664
   real.sum (0, n) (%m. real.sum (m * k, k) f) = real.sum (0, n * k) f"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   665
  by (import real SUM_GROUP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   666
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   667
lemma SUM_1: "ALL f n. real.sum (n, 1) f = f n"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   668
  by (import real SUM_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   669
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   670
lemma SUM_2: "ALL f n. real.sum (n, 2) f = f n + f (n + 1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   671
  by (import real SUM_2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   672
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   673
lemma SUM_OFFSET: "ALL f n k.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   674
   real.sum (0, n) (%m. f (m + k)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   675
   real.sum (0, n + k) f - real.sum (0, k) f"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   676
  by (import real SUM_OFFSET)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   677
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   678
lemma SUM_REINDEX: "ALL f m k n. real.sum (m + k, n) f = real.sum (m, n) (%r. f (r + k))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   679
  by (import real SUM_REINDEX)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   680
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   681
lemma SUM_0: "ALL m n. real.sum (m, n) (%r. 0) = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   682
  by (import real SUM_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   683
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   684
lemma SUM_PERMUTE_0: "ALL n p.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   685
   (ALL y<n. EX! x. x < n & p x = y) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   686
   (ALL f. real.sum (0, n) (%n. f (p n)) = real.sum (0, n) f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   687
  by (import real SUM_PERMUTE_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   688
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   689
lemma SUM_CANCEL: "ALL f n d. real.sum (n, d) (%n. f (Suc n) - f n) = f (n + d) - f n"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   690
  by (import real SUM_CANCEL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   691
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   692
lemma REAL_LE_RNEG: "ALL (x::real) y::real. (x <= - y) = (x + y <= (0::real))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   693
  by (import real REAL_LE_RNEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   694
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   695
lemma REAL_EQ_RDIV_EQ: "ALL (x::real) (xa::real) xb::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   696
   (0::real) < xb --> (x = xa / xb) = (x * xb = xa)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   697
  by (import real REAL_EQ_RDIV_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   698
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   699
lemma REAL_EQ_LDIV_EQ: "ALL (x::real) (xa::real) xb::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   700
   (0::real) < xb --> (x / xb = xa) = (x = xa * xb)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   701
  by (import real REAL_EQ_LDIV_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   702
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   703
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   704
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   705
;setup_theory topology
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   706
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   707
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   708
  re_Union :: "(('a => bool) => bool) => 'a => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   709
  "re_Union == %P x. EX s. P s & s x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   710
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   711
lemma re_Union: "ALL P. re_Union P = (%x. EX s. P s & s x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   712
  by (import topology re_Union)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   713
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   714
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   715
  re_union :: "('a => bool) => ('a => bool) => 'a => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   716
  "re_union == %P Q x. P x | Q x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   717
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   718
lemma re_union: "ALL P Q. re_union P Q = (%x. P x | Q x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   719
  by (import topology re_union)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   720
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   721
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   722
  re_intersect :: "('a => bool) => ('a => bool) => 'a => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   723
  "re_intersect == %P Q x. P x & Q x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   724
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   725
lemma re_intersect: "ALL P Q. re_intersect P Q = (%x. P x & Q x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   726
  by (import topology re_intersect)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   727
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   728
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   729
  re_null :: "'a => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   730
  "re_null == %x. False"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   731
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   732
lemma re_null: "re_null = (%x. False)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   733
  by (import topology re_null)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   734
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   735
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   736
  re_universe :: "'a => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   737
  "re_universe == %x. True"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   738
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   739
lemma re_universe: "re_universe = (%x. True)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   740
  by (import topology re_universe)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   741
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   742
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   743
  re_subset :: "('a => bool) => ('a => bool) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   744
  "re_subset == %P Q. ALL x. P x --> Q x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   745
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   746
lemma re_subset: "ALL P Q. re_subset P Q = (ALL x. P x --> Q x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   747
  by (import topology re_subset)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   748
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   749
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   750
  re_compl :: "('a => bool) => 'a => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   751
  "re_compl == %P x. ~ P x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   752
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   753
lemma re_compl: "ALL P. re_compl P = (%x. ~ P x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   754
  by (import topology re_compl)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   755
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   756
lemma SUBSET_REFL: "ALL P. re_subset P P"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   757
  by (import topology SUBSET_REFL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   758
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   759
lemma COMPL_MEM: "ALL P x. P x = (~ re_compl P x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   760
  by (import topology COMPL_MEM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   761
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   762
lemma SUBSET_ANTISYM: "ALL P Q. (re_subset P Q & re_subset Q P) = (P = Q)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   763
  by (import topology SUBSET_ANTISYM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   764
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   765
lemma SUBSET_TRANS: "ALL P Q R. re_subset P Q & re_subset Q R --> re_subset P R"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   766
  by (import topology SUBSET_TRANS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   767
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   768
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   769
  istopology :: "(('a => bool) => bool) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   770
  "istopology ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   771
%L. L re_null &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   772
    L re_universe &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   773
    (ALL a b. L a & L b --> L (re_intersect a b)) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   774
    (ALL P. re_subset P L --> L (re_Union P))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   775
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   776
lemma istopology: "ALL L.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   777
   istopology L =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   778
   (L re_null &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   779
    L re_universe &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   780
    (ALL a b. L a & L b --> L (re_intersect a b)) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   781
    (ALL P. re_subset P L --> L (re_Union P)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   782
  by (import topology istopology)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   783
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   784
typedef (open) ('a) topology = "(Collect::((('a => bool) => bool) => bool) => (('a => bool) => bool) set)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   785
 (istopology::(('a => bool) => bool) => bool)" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   786
  by (rule typedef_helper,import topology topology_TY_DEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   787
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   788
lemmas topology_TY_DEF = typedef_hol2hol4 [OF type_definition_topology]
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   789
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   790
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   791
  topology :: "(('a => bool) => bool) => 'a topology" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   792
  "open" :: "'a topology => ('a => bool) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   793
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   794
specification ("open" topology) topology_tybij: "(ALL a::'a topology. topology (open a) = a) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   795
(ALL r::('a => bool) => bool. istopology r = (open (topology r) = r))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   796
  by (import topology topology_tybij)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   797
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   798
lemma TOPOLOGY: "ALL L.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   799
   open L re_null &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   800
   open L re_universe &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   801
   (ALL a b. open L a & open L b --> open L (re_intersect a b)) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   802
   (ALL P. re_subset P (open L) --> open L (re_Union P))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   803
  by (import topology TOPOLOGY)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   804
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   805
lemma TOPOLOGY_UNION: "ALL x xa. re_subset xa (open x) --> open x (re_Union xa)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   806
  by (import topology TOPOLOGY_UNION)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   807
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   808
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   809
  neigh :: "'a topology => ('a => bool) * 'a => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   810
  "neigh == %top (N, x). EX P. open top P & re_subset P N & P x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   811
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   812
lemma neigh: "ALL top N x. neigh top (N, x) = (EX P. open top P & re_subset P N & P x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   813
  by (import topology neigh)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   814
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   815
lemma OPEN_OWN_NEIGH: "ALL S' top x. open top S' & S' x --> neigh top (S', x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   816
  by (import topology OPEN_OWN_NEIGH)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   817
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   818
lemma OPEN_UNOPEN: "ALL S' top. open top S' = (re_Union (%P. open top P & re_subset P S') = S')"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   819
  by (import topology OPEN_UNOPEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   820
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   821
lemma OPEN_SUBOPEN: "ALL S' top.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   822
   open top S' = (ALL x. S' x --> (EX P. P x & open top P & re_subset P S'))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   823
  by (import topology OPEN_SUBOPEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   824
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   825
lemma OPEN_NEIGH: "ALL S' top.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   826
   open top S' = (ALL x. S' x --> (EX N. neigh top (N, x) & re_subset N S'))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   827
  by (import topology OPEN_NEIGH)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   828
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   829
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   830
  closed :: "'a topology => ('a => bool) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   831
  "closed == %L S'. open L (re_compl S')"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   832
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   833
lemma closed: "ALL L S'. closed L S' = open L (re_compl S')"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   834
  by (import topology closed)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   835
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   836
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   837
  limpt :: "'a topology => 'a => ('a => bool) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   838
  "limpt == %top x S'. ALL N. neigh top (N, x) --> (EX y. x ~= y & S' y & N y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   839
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   840
lemma limpt: "ALL top x S'.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   841
   limpt top x S' =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   842
   (ALL N. neigh top (N, x) --> (EX y. x ~= y & S' y & N y))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   843
  by (import topology limpt)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   844
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   845
lemma CLOSED_LIMPT: "ALL top S'. closed top S' = (ALL x. limpt top x S' --> S' x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   846
  by (import topology CLOSED_LIMPT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   847
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   848
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   849
  ismet :: "('a * 'a => real) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   850
  "ismet ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   851
%m. (ALL x y. (m (x, y) = 0) = (x = y)) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   852
    (ALL x y z. m (y, z) <= m (x, y) + m (x, z))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   853
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   854
lemma ismet: "ALL m.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   855
   ismet m =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   856
   ((ALL x y. (m (x, y) = 0) = (x = y)) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   857
    (ALL x y z. m (y, z) <= m (x, y) + m (x, z)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   858
  by (import topology ismet)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   859
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   860
typedef (open) ('a) metric = "(Collect::(('a * 'a => real) => bool) => ('a * 'a => real) set)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   861
 (ismet::('a * 'a => real) => bool)" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   862
  by (rule typedef_helper,import topology metric_TY_DEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   863
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   864
lemmas metric_TY_DEF = typedef_hol2hol4 [OF type_definition_metric]
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   865
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   866
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   867
  metric :: "('a * 'a => real) => 'a metric" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   868
  dist :: "'a metric => 'a * 'a => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   869
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   870
specification (dist metric) metric_tybij: "(ALL a::'a metric. metric (dist a) = a) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   871
(ALL r::'a * 'a => real. ismet r = (dist (metric r) = r))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   872
  by (import topology metric_tybij)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   873
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   874
lemma METRIC_ISMET: "ALL m. ismet (dist m)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   875
  by (import topology METRIC_ISMET)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   876
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   877
lemma METRIC_ZERO: "ALL m x y. (dist m (x, y) = 0) = (x = y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   878
  by (import topology METRIC_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   879
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   880
lemma METRIC_SAME: "ALL m x. dist m (x, x) = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   881
  by (import topology METRIC_SAME)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   882
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   883
lemma METRIC_POS: "ALL m x y. 0 <= dist m (x, y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   884
  by (import topology METRIC_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   885
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   886
lemma METRIC_SYM: "ALL m x y. dist m (x, y) = dist m (y, x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   887
  by (import topology METRIC_SYM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   888
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   889
lemma METRIC_TRIANGLE: "ALL m x y z. dist m (x, z) <= dist m (x, y) + dist m (y, z)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   890
  by (import topology METRIC_TRIANGLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   891
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   892
lemma METRIC_NZ: "ALL m x y. x ~= y --> 0 < dist m (x, y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   893
  by (import topology METRIC_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   894
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   895
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   896
  mtop :: "'a metric => 'a topology" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   897
  "mtop ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   898
%m. topology
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   899
     (%S'. ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   900
              S' x --> (EX e. 0 < e & (ALL y. dist m (x, y) < e --> S' y)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   901
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   902
lemma mtop: "ALL m.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   903
   mtop m =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   904
   topology
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   905
    (%S'. ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   906
             S' x --> (EX e. 0 < e & (ALL y. dist m (x, y) < e --> S' y)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   907
  by (import topology mtop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   908
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   909
lemma mtop_istopology: "ALL m.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   910
   istopology
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   911
    (%S'. ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   912
             S' x --> (EX e. 0 < e & (ALL y. dist m (x, y) < e --> S' y)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   913
  by (import topology mtop_istopology)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   914
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   915
lemma MTOP_OPEN: "ALL S' x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   916
   open (mtop x) S' =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   917
   (ALL xa. S' xa --> (EX e. 0 < e & (ALL y. dist x (xa, y) < e --> S' y)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   918
  by (import topology MTOP_OPEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   919
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   920
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   921
  B :: "'a metric => 'a * real => 'a => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   922
  "B == %m (x, e) y. dist m (x, y) < e"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   923
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   924
lemma ball: "ALL m x e. B m (x, e) = (%y. dist m (x, y) < e)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   925
  by (import topology ball)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   926
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   927
lemma BALL_OPEN: "ALL m x e. 0 < e --> open (mtop m) (B m (x, e))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   928
  by (import topology BALL_OPEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   929
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   930
lemma BALL_NEIGH: "ALL m x e. 0 < e --> neigh (mtop m) (B m (x, e), x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   931
  by (import topology BALL_NEIGH)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   932
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   933
lemma MTOP_LIMPT: "ALL m x S'.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   934
   limpt (mtop m) x S' =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   935
   (ALL e. 0 < e --> (EX y. x ~= y & S' y & dist m (x, y) < e))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   936
  by (import topology MTOP_LIMPT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   937
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   938
lemma ISMET_R1: "ismet (%(x, y). abs (y - x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   939
  by (import topology ISMET_R1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   940
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   941
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   942
  mr1 :: "real metric" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   943
  "mr1 == metric (%(x, y). abs (y - x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   944
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   945
lemma mr1: "mr1 = metric (%(x, y). abs (y - x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   946
  by (import topology mr1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   947
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   948
lemma MR1_DEF: "ALL x y. dist mr1 (x, y) = abs (y - x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   949
  by (import topology MR1_DEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   950
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   951
lemma MR1_ADD: "ALL x d. dist mr1 (x, x + d) = abs d"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   952
  by (import topology MR1_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   953
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   954
lemma MR1_SUB: "ALL x d. dist mr1 (x, x - d) = abs d"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   955
  by (import topology MR1_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   956
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   957
lemma MR1_ADD_POS: "ALL x d. 0 <= d --> dist mr1 (x, x + d) = d"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   958
  by (import topology MR1_ADD_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   959
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   960
lemma MR1_SUB_LE: "ALL x d. 0 <= d --> dist mr1 (x, x - d) = d"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   961
  by (import topology MR1_SUB_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   962
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   963
lemma MR1_ADD_LT: "ALL x d. 0 < d --> dist mr1 (x, x + d) = d"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   964
  by (import topology MR1_ADD_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   965
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   966
lemma MR1_SUB_LT: "ALL x d. 0 < d --> dist mr1 (x, x - d) = d"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   967
  by (import topology MR1_SUB_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   968
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   969
lemma MR1_BETWEEN1: "ALL x y z. x < z & dist mr1 (x, y) < z - x --> y < z"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   970
  by (import topology MR1_BETWEEN1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   971
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   972
lemma MR1_LIMPT: "ALL x. limpt (mtop mr1) x re_universe"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   973
  by (import topology MR1_LIMPT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   974
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   975
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   976
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   977
;setup_theory nets
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   978
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   979
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   980
  dorder :: "('a => 'a => bool) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   981
  "dorder ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   982
%g. ALL x y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   983
       g x x & g y y --> (EX z. g z z & (ALL w. g w z --> g w x & g w y))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   984
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   985
lemma dorder: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   986
   dorder g =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   987
   (ALL x y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   988
       g x x & g y y --> (EX z. g z z & (ALL w. g w z --> g w x & g w y)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   989
  by (import nets dorder)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   990
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   991
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   992
  tends :: "('b => 'a) => 'a => 'a topology * ('b => 'b => bool) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   993
  "tends ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   994
%(s::'b => 'a) (l::'a) (top::'a topology, g::'b => 'b => bool).
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   995
   ALL N::'a => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   996
      neigh top (N, l) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   997
      (EX n::'b. g n n & (ALL m::'b. g m n --> N (s m)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   998
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   999
lemma tends: "ALL (s::'b => 'a) (l::'a) (top::'a topology) g::'b => 'b => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1000
   tends s l (top, g) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1001
   (ALL N::'a => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1002
       neigh top (N, l) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1003
       (EX n::'b. g n n & (ALL m::'b. g m n --> N (s m))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1004
  by (import nets tends)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1005
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1006
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1007
  bounded :: "'a metric * ('b => 'b => bool) => ('b => 'a) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1008
  "bounded ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1009
%(m, g) f. EX k x N. g N N & (ALL n. g n N --> dist m (f n, x) < k)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1010
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1011
lemma bounded: "ALL m g f.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1012
   bounded (m, g) f =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1013
   (EX k x N. g N N & (ALL n. g n N --> dist m (f n, x) < k))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1014
  by (import nets bounded)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1015
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1016
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1017
  tendsto :: "'a metric * 'a => 'a => 'a => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1018
  "tendsto == %(m, x) y z. 0 < dist m (x, y) & dist m (x, y) <= dist m (x, z)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1019
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1020
lemma tendsto: "ALL m x y z.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1021
   tendsto (m, x) y z = (0 < dist m (x, y) & dist m (x, y) <= dist m (x, z))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1022
  by (import nets tendsto)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1023
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1024
lemma DORDER_LEMMA: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1025
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1026
   (ALL P Q.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1027
       (EX n. g n n & (ALL m. g m n --> P m)) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1028
       (EX n. g n n & (ALL m. g m n --> Q m)) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1029
       (EX n. g n n & (ALL m. g m n --> P m & Q m)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1030
  by (import nets DORDER_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1031
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1032
lemma DORDER_NGE: "dorder nat_ge"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1033
  by (import nets DORDER_NGE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1034
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1035
lemma DORDER_TENDSTO: "ALL m x. dorder (tendsto (m, x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1036
  by (import nets DORDER_TENDSTO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1037
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1038
lemma MTOP_TENDS: "ALL d g x x0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1039
   tends x x0 (mtop d, g) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1040
   (ALL e.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1041
       0 < e --> (EX n. g n n & (ALL m. g m n --> dist d (x m, x0) < e)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1042
  by (import nets MTOP_TENDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1043
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1044
lemma MTOP_TENDS_UNIQ: "ALL (g::'b => 'b => bool) d::'a metric.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1045
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1046
   tends (x::'b => 'a) (x0::'a) (mtop d, g) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1047
   tends x (x1::'a) (mtop d, g) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1048
   x0 = x1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1049
  by (import nets MTOP_TENDS_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1050
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1051
lemma SEQ_TENDS: "ALL d x x0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1052
   tends x x0 (mtop d, nat_ge) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1053
   (ALL xa. 0 < xa --> (EX xb. ALL xc. xb <= xc --> dist d (x xc, x0) < xa))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1054
  by (import nets SEQ_TENDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1055
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1056
lemma LIM_TENDS: "ALL m1 m2 f x0 y0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1057
   limpt (mtop m1) x0 re_universe -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1058
   tends f y0 (mtop m2, tendsto (m1, x0)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1059
   (ALL e.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1060
       0 < e -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1061
       (EX d. 0 < d &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1062
              (ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1063
                  0 < dist m1 (x, x0) & dist m1 (x, x0) <= d -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1064
                  dist m2 (f x, y0) < e)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1065
  by (import nets LIM_TENDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1066
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1067
lemma LIM_TENDS2: "ALL m1 m2 f x0 y0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1068
   limpt (mtop m1) x0 re_universe -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1069
   tends f y0 (mtop m2, tendsto (m1, x0)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1070
   (ALL e.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1071
       0 < e -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1072
       (EX d. 0 < d &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1073
              (ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1074
                  0 < dist m1 (x, x0) & dist m1 (x, x0) < d -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1075
                  dist m2 (f x, y0) < e)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1076
  by (import nets LIM_TENDS2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1077
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1078
lemma MR1_BOUNDED: "ALL g f.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1079
   bounded (mr1, g) f = (EX k N. g N N & (ALL n. g n N --> abs (f n) < k))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1080
  by (import nets MR1_BOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1081
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1082
lemma NET_NULL: "ALL g x x0. tends x x0 (mtop mr1, g) = tends (%n. x n - x0) 0 (mtop mr1, g)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1083
  by (import nets NET_NULL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1084
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1085
lemma NET_CONV_BOUNDED: "ALL g x x0. tends x x0 (mtop mr1, g) --> bounded (mr1, g) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1086
  by (import nets NET_CONV_BOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1087
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1088
lemma NET_CONV_NZ: "ALL g x x0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1089
   tends x x0 (mtop mr1, g) & x0 ~= 0 -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1090
   (EX N. g N N & (ALL n. g n N --> x n ~= 0))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1091
  by (import nets NET_CONV_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1092
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1093
lemma NET_CONV_IBOUNDED: "ALL g x x0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1094
   tends x x0 (mtop mr1, g) & x0 ~= 0 -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1095
   bounded (mr1, g) (%n. inverse (x n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1096
  by (import nets NET_CONV_IBOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1097
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1098
lemma NET_NULL_ADD: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1099
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1100
   (ALL x y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1101
       tends x 0 (mtop mr1, g) & tends y 0 (mtop mr1, g) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1102
       tends (%n. x n + y n) 0 (mtop mr1, g))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1103
  by (import nets NET_NULL_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1104
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1105
lemma NET_NULL_MUL: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1106
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1107
   (ALL x y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1108
       bounded (mr1, g) x & tends y 0 (mtop mr1, g) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1109
       tends (%n. x n * y n) 0 (mtop mr1, g))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1110
  by (import nets NET_NULL_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1111
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1112
lemma NET_NULL_CMUL: "ALL g k x. tends x 0 (mtop mr1, g) --> tends (%n. k * x n) 0 (mtop mr1, g)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1113
  by (import nets NET_NULL_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1114
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1115
lemma NET_ADD: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1116
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1117
   (ALL x x0 y y0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1118
       tends x x0 (mtop mr1, g) & tends y y0 (mtop mr1, g) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1119
       tends (%n. x n + y n) (x0 + y0) (mtop mr1, g))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1120
  by (import nets NET_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1121
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1122
lemma NET_NEG: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1123
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1124
   (ALL x x0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1125
       tends x x0 (mtop mr1, g) = tends (%n. - x n) (- x0) (mtop mr1, g))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1126
  by (import nets NET_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1127
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1128
lemma NET_SUB: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1129
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1130
   (ALL x x0 y y0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1131
       tends x x0 (mtop mr1, g) & tends y y0 (mtop mr1, g) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1132
       tends (%xa. x xa - y xa) (x0 - y0) (mtop mr1, g))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1133
  by (import nets NET_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1134
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1135
lemma NET_MUL: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1136
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1137
   (ALL x y x0 y0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1138
       tends x x0 (mtop mr1, g) & tends y y0 (mtop mr1, g) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1139
       tends (%n. x n * y n) (x0 * y0) (mtop mr1, g))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1140
  by (import nets NET_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1141
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1142
lemma NET_INV: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1143
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1144
   (ALL x x0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1145
       tends x x0 (mtop mr1, g) & x0 ~= 0 -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1146
       tends (%n. inverse (x n)) (inverse x0) (mtop mr1, g))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1147
  by (import nets NET_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1148
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1149
lemma NET_DIV: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1150
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1151
   (ALL x x0 y y0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1152
       tends x x0 (mtop mr1, g) & tends y y0 (mtop mr1, g) & y0 ~= 0 -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1153
       tends (%xa. x xa / y xa) (x0 / y0) (mtop mr1, g))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1154
  by (import nets NET_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1155
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1156
lemma NET_ABS: "ALL g x x0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1157
   tends x x0 (mtop mr1, g) --> tends (%n. abs (x n)) (abs x0) (mtop mr1, g)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1158
  by (import nets NET_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1159
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1160
lemma NET_LE: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1161
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1162
   (ALL x x0 y y0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1163
       tends x x0 (mtop mr1, g) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1164
       tends y y0 (mtop mr1, g) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1165
       (EX N. g N N & (ALL n. g n N --> x n <= y n)) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1166
       x0 <= y0)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1167
  by (import nets NET_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1168
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1169
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1170
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1171
;setup_theory seq
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1172
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1173
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1174
  "-->" :: "(nat => real) => real => bool" ("-->")
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1175
  "--> == %x x0. tends x x0 (mtop mr1, nat_ge)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1176
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1177
lemma tends_num_real: "ALL x x0. --> x x0 = tends x x0 (mtop mr1, nat_ge)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1178
  by (import seq tends_num_real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1179
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1180
lemma SEQ: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1181
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1182
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1183
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1184
          (op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1185
           ((-->::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1186
           ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1187
             (%e::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1188
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1189
                  ((op <::real => real => bool) (0::real) e)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1190
                  ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1191
                    (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1192
                        (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1193
                         (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1194
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1195
                              ((op <=::nat => nat => bool) N n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1196
                              ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1197
                                ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1198
                                  ((op -::real => real => real) (x n) x0))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1199
                                e))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1200
  by (import seq SEQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1201
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1202
lemma SEQ_CONST: "ALL k. --> (%x. k) k"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1203
  by (import seq SEQ_CONST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1204
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1205
lemma SEQ_ADD: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1206
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1207
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1208
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1209
          (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1210
           (%y::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1211
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1212
                (%y0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1213
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1214
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1215
                       ((-->::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1216
                       ((-->::(nat => real) => real => bool) y y0))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1217
                     ((-->::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1218
                       (%n::nat. (op +::real => real => real) (x n) (y n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1219
                       ((op +::real => real => real) x0 y0))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1220
  by (import seq SEQ_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1221
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1222
lemma SEQ_MUL: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1223
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1224
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1225
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1226
          (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1227
           (%y::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1228
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1229
                (%y0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1230
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1231
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1232
                       ((-->::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1233
                       ((-->::(nat => real) => real => bool) y y0))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1234
                     ((-->::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1235
                       (%n::nat. (op *::real => real => real) (x n) (y n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1236
                       ((op *::real => real => real) x0 y0))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1237
  by (import seq SEQ_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1238
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1239
lemma SEQ_NEG: "ALL x x0. --> x x0 = --> (%n. - x n) (- x0)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1240
  by (import seq SEQ_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1241
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1242
lemma SEQ_INV: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1243
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1244
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1245
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1246
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1247
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1248
             ((-->::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1249
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1250
               ((op =::real => real => bool) x0 (0::real))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1251
           ((-->::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1252
             (%n::nat. (inverse::real => real) (x n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1253
             ((inverse::real => real) x0))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1254
  by (import seq SEQ_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1255
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1256
lemma SEQ_SUB: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1257
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1258
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1259
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1260
          (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1261
           (%y::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1262
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1263
                (%y0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1264
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1265
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1266
                       ((-->::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1267
                       ((-->::(nat => real) => real => bool) y y0))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1268
                     ((-->::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1269
                       (%n::nat. (op -::real => real => real) (x n) (y n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1270
                       ((op -::real => real => real) x0 y0))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1271
  by (import seq SEQ_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1272
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1273
lemma SEQ_DIV: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1274
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1275
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1276
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1277
          (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1278
           (%y::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1279
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1280
                (%y0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1281
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1282
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1283
                       ((-->::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1284
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1285
                         ((-->::(nat => real) => real => bool) y y0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1286
                         ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1287
                           ((op =::real => real => bool) y0 (0::real)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1288
                     ((-->::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1289
                       (%n::nat. (op /::real => real => real) (x n) (y n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1290
                       ((op /::real => real => real) x0 y0))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1291
  by (import seq SEQ_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1292
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1293
lemma SEQ_UNIQ: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1294
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1295
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1296
      (%x1::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1297
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1298
           (%x2::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1299
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1300
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1301
                  ((-->::(nat => real) => real => bool) x x1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1302
                  ((-->::(nat => real) => real => bool) x x2))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1303
                ((op =::real => real => bool) x1 x2))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1304
  by (import seq SEQ_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1305
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1306
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1307
  convergent :: "(nat => real) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1308
  "convergent == %f. Ex (--> f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1309
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1310
lemma convergent: "ALL f. convergent f = Ex (--> f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1311
  by (import seq convergent)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1312
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1313
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1314
  cauchy :: "(nat => real) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1315
  "(op ==::((nat => real) => bool) => ((nat => real) => bool) => prop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1316
 (cauchy::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1317
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1318
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1319
      (%e::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1320
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1321
           ((op <::real => real => bool) (0::real) e)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1322
           ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1323
             (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1324
                 (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1325
                  (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1326
                      (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1327
                       (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1328
                           (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1329
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1330
                              ((op <=::nat => nat => bool) N m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1331
                              ((op <=::nat => nat => bool) N n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1332
                            ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1333
                              ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1334
                                ((op -::real => real => real) (f m) (f n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1335
                              e)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1336
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1337
lemma cauchy: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1338
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1339
     (op =::bool => bool => bool) ((cauchy::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1340
      ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1341
        (%e::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1342
            (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1343
             ((op <::real => real => bool) (0::real) e)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1344
             ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1345
               (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1346
                   (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1347
                    (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1348
                        (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1349
                         (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1350
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1351
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1352
                                ((op <=::nat => nat => bool) N m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1353
                                ((op <=::nat => nat => bool) N n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1354
                              ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1355
                                ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1356
                                  ((op -::real => real => real) (f m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1357
                                    (f n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1358
                                e))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1359
  by (import seq cauchy)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1360
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1361
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1362
  lim :: "(nat => real) => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1363
  "lim == %f. Eps (--> f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1364
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1365
lemma lim: "ALL f. lim f = Eps (--> f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1366
  by (import seq lim)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1367
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1368
lemma SEQ_LIM: "ALL f. convergent f = --> f (lim f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1369
  by (import seq SEQ_LIM)
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
  subseq :: "(nat => nat) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1373
  "(op ==::((nat => nat) => bool) => ((nat => nat) => bool) => prop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1374
 (subseq::(nat => nat) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1375
 (%f::nat => nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1376
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1377
      (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1378
          (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1379
           (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1380
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1381
                ((op <::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1382
                ((op <::nat => nat => bool) (f m) (f n)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1383
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1384
lemma subseq: "(All::((nat => nat) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1385
 (%f::nat => nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1386
     (op =::bool => bool => bool) ((subseq::(nat => nat) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1387
      ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1388
        (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1389
            (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1390
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1391
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1392
                  ((op <::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1393
                  ((op <::nat => nat => bool) (f m) (f n))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1394
  by (import seq subseq)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1395
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1396
lemma SUBSEQ_SUC: "ALL f. subseq f = (ALL n. f n < f (Suc n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1397
  by (import seq SUBSEQ_SUC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1398
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1399
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1400
  mono :: "(nat => real) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1401
  "(op ==::((nat => real) => bool) => ((nat => real) => bool) => prop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1402
 (seq.mono::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1403
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1404
     (op |::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1405
      ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1406
        (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1407
            (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1408
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1409
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1410
                  ((op <=::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1411
                  ((op <=::real => real => bool) (f m) (f n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1412
      ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1413
        (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1414
            (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1415
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1416
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1417
                  ((op <=::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1418
                  ((op <=::real => real => bool) (f n) (f m))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1419
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1420
lemma mono: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1421
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1422
     (op =::bool => bool => bool) ((seq.mono::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1423
      ((op |::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1424
        ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1425
          (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1426
              (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1427
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1428
                   (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1429
                    ((op <=::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1430
                    ((op <=::real => real => bool) (f m) (f n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1431
        ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1432
          (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1433
              (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1434
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1435
                   (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1436
                    ((op <=::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1437
                    ((op <=::real => real => bool) (f n) (f m)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1438
  by (import seq mono)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1439
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1440
lemma MONO_SUC: "ALL f. seq.mono f = ((ALL x. f x <= f (Suc x)) | (ALL n. f (Suc n) <= f n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1441
  by (import seq MONO_SUC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1442
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1443
lemma MAX_LEMMA: "ALL (s::nat => real) N::nat. EX k::real. ALL n<N. abs (s n) < k"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1444
  by (import seq MAX_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1445
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1446
lemma SEQ_BOUNDED: "ALL s. bounded (mr1, nat_ge) s = (EX k. ALL n. abs (s n) < k)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1447
  by (import seq SEQ_BOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1448
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1449
lemma SEQ_BOUNDED_2: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1450
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1451
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1452
      (%k::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1453
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1454
           (%k'::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1455
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1456
                ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1457
                  (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1458
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1459
                       ((op <=::real => real => bool) k (f n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1460
                       ((op <=::real => real => bool) (f n) k')))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1461
                ((bounded::real metric * (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1462
                           => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1463
                  ((Pair::real metric
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1464
                          => (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1465
                             => real metric * (nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1466
                    (mr1::real metric) (nat_ge::nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1467
                  f))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1468
  by (import seq SEQ_BOUNDED_2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1469
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1470
lemma SEQ_CBOUNDED: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1471
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1472
     (op -->::bool => bool => bool) ((cauchy::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1473
      ((bounded::real metric * (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1474
                 => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1475
        ((Pair::real metric
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1476
                => (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1477
                   => real metric * (nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1478
          (mr1::real metric) (nat_ge::nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1479
        f))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1480
  by (import seq SEQ_CBOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1481
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1482
lemma SEQ_ICONV: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1483
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1484
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1485
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1486
        ((bounded::real metric * (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1487
                   => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1488
          ((Pair::real metric
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1489
                  => (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1490
                     => real metric * (nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1491
            (mr1::real metric) (nat_ge::nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1492
          f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1493
        ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1494
          (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1495
              (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1496
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1497
                   (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1498
                    ((op <=::nat => nat => bool) n m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1499
                    ((op <=::real => real => bool) (f n) (f m))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1500
      ((convergent::(nat => real) => bool) f))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1501
  by (import seq SEQ_ICONV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1502
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1503
lemma SEQ_NEG_CONV: "ALL f. convergent f = convergent (%n. - f n)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1504
  by (import seq SEQ_NEG_CONV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1505
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1506
lemma SEQ_NEG_BOUNDED: "ALL f. bounded (mr1, nat_ge) (%n. - f n) = bounded (mr1, nat_ge) f"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1507
  by (import seq SEQ_NEG_BOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1508
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1509
lemma SEQ_BCONV: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1510
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1511
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1512
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1513
        ((bounded::real metric * (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1514
                   => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1515
          ((Pair::real metric
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1516
                  => (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1517
                     => real metric * (nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1518
            (mr1::real metric) (nat_ge::nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1519
          f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1520
        ((seq.mono::(nat => real) => bool) f))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1521
      ((convergent::(nat => real) => bool) f))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1522
  by (import seq SEQ_BCONV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1523
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1524
lemma SEQ_MONOSUB: "ALL s. EX f. subseq f & seq.mono (%n. s (f n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1525
  by (import seq SEQ_MONOSUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1526
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1527
lemma SEQ_SBOUNDED: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1528
 (%s::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1529
     (All::((nat => nat) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1530
      (%f::nat => nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1531
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1532
           ((bounded::real metric * (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1533
                      => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1534
             ((Pair::real metric
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1535
                     => (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1536
                        => real metric * (nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1537
               (mr1::real metric) (nat_ge::nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1538
             s)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1539
           ((bounded::real metric * (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1540
                      => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1541
             ((Pair::real metric
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1542
                     => (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1543
                        => real metric * (nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1544
               (mr1::real metric) (nat_ge::nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1545
             (%n::nat. s (f n)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1546
  by (import seq SEQ_SBOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1547
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1548
lemma SEQ_SUBLE: "(All::((nat => nat) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1549
 (%f::nat => nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1550
     (op -->::bool => bool => bool) ((subseq::(nat => nat) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1551
      ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1552
        (%n::nat. (op <=::nat => nat => bool) n (f n))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1553
  by (import seq SEQ_SUBLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1554
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1555
lemma SEQ_DIRECT: "(All::((nat => nat) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1556
 (%f::nat => nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1557
     (op -->::bool => bool => bool) ((subseq::(nat => nat) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1558
      ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1559
        (%N1::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1560
            (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1561
             (%N2::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1562
                 (Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1563
                  (%x::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1564
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1565
                       ((op <=::nat => nat => bool) N1 x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1566
                       ((op <=::nat => nat => bool) N2 (f x)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1567
  by (import seq SEQ_DIRECT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1568
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1569
lemma SEQ_CAUCHY: "ALL f. cauchy f = convergent f"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1570
  by (import seq SEQ_CAUCHY)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1571
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1572
lemma SEQ_LE: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1573
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1574
     (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1575
      (%g::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1576
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1577
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1578
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1579
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1580
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1581
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1582
                       ((-->::(nat => real) => real => bool) f l)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1583
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1584
                         ((-->::(nat => real) => real => bool) g m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1585
                         ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1586
                           (%x::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1587
                               (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1588
                                (%xa::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1589
                                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1590
                                     ((op <=::nat => nat => bool) x xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1591
                                     ((op <=::real => real => bool) (f xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1592
 (g xa)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1593
                     ((op <=::real => real => bool) l m)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1594
  by (import seq SEQ_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1595
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1596
lemma SEQ_SUC: "ALL f l. --> f l = --> (%n. f (Suc n)) l"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1597
  by (import seq SEQ_SUC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1598
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1599
lemma SEQ_ABS: "ALL f. --> (%n. abs (f n)) 0 = --> f 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1600
  by (import seq SEQ_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1601
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1602
lemma SEQ_ABS_IMP: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1603
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1604
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1605
      (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1606
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1607
           ((-->::(nat => real) => real => bool) f l)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1608
           ((-->::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1609
             (%n::nat. (abs::real => real) (f n)) ((abs::real => real) l))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1610
  by (import seq SEQ_ABS_IMP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1611
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1612
lemma SEQ_INV0: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1613
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1614
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1615
      ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1616
        (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1617
            (Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1618
             (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1619
                 (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1620
                  (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1621
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1622
                       ((op <=::nat => nat => bool) N n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1623
                       ((op <::real => real => bool) y (f n))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1624
      ((-->::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1625
        (%n::nat. (inverse::real => real) (f n)) (0::real)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1626
  by (import seq SEQ_INV0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1627
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1628
lemma SEQ_POWER_ABS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1629
 (%c::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1630
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1631
      ((op <::real => real => bool) ((abs::real => real) c) (1::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1632
      ((-->::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1633
        ((op ^::real => nat => real) ((abs::real => real) c)) (0::real)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1634
  by (import seq SEQ_POWER_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1635
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1636
lemma SEQ_POWER: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1637
 (%c::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1638
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1639
      ((op <::real => real => bool) ((abs::real => real) c) (1::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1640
      ((-->::(nat => real) => real => bool) ((op ^::real => nat => real) c)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1641
        (0::real)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1642
  by (import seq SEQ_POWER)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1643
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1644
lemma NEST_LEMMA: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1645
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1646
     (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1647
      (%g::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1648
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1649
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1650
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1651
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1652
                   (op <=::real => real => bool) (f n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1653
                    (f ((Suc::nat => nat) n))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1654
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1655
               ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1656
                 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1657
                     (op <=::real => real => bool) (g ((Suc::nat => nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1658
                      (g n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1659
               ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1660
                 (%n::nat. (op <=::real => real => bool) (f n) (g n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1661
           ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1662
             (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1663
                 (Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1664
                  (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1665
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1666
                       ((op <=::real => real => bool) l m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1667
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1668
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1669
                           ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1670
                             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1671
                                 (op <=::real => real => bool) (f n) l))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1672
                           ((-->::(nat => real) => real => bool) f l))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1673
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1674
                           ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1675
                             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1676
                                 (op <=::real => real => bool) m (g n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1677
                           ((-->::(nat => real) => real => bool) g m))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1678
  by (import seq NEST_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1679
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1680
lemma NEST_LEMMA_UNIQ: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1681
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1682
     (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1683
      (%g::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1684
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1685
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1686
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1687
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1688
                   (op <=::real => real => bool) (f n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1689
                    (f ((Suc::nat => nat) n))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1690
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1691
               ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1692
                 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1693
                     (op <=::real => real => bool) (g ((Suc::nat => nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1694
                      (g n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1695
               ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1696
                 ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1697
                   (%n::nat. (op <=::real => real => bool) (f n) (g n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1698
                 ((-->::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1699
                   (%n::nat. (op -::real => real => real) (f n) (g n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1700
                   (0::real)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1701
           ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1702
             (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1703
                 (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1704
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1705
                    ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1706
                      (%n::nat. (op <=::real => real => bool) (f n) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1707
                    ((-->::(nat => real) => real => bool) f x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1708
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1709
                    ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1710
                      (%n::nat. (op <=::real => real => bool) x (g n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1711
                    ((-->::(nat => real) => real => bool) g x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1712
  by (import seq NEST_LEMMA_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1713
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1714
lemma BOLZANO_LEMMA: "(All::((real * real => bool) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1715
 (%P::real * real => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1716
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1717
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1718
        ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1719
          (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1720
              (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1721
               (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1722
                   (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1723
                    (%c::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1724
                        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1725
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1726
                           ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1727
                           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1728
                             ((op <=::real => real => bool) b c)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1729
                             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1730
                               (P ((Pair::real => real => real * real) a b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1731
                               (P ((Pair::real => real => real * real) b
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1732
                                    c)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1733
                         (P ((Pair::real => real => real * real) a c))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1734
        ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1735
          (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1736
              (Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1737
               (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1738
                   (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1739
                    ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1740
                    ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1741
                      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1742
                          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1743
                           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1744
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1745
                                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1746
                                  ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1747
                                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1748
                                    ((op <=::real => real => bool) x b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1749
                                    ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1750
((op -::real => real => real) b a) d)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1751
                                (P ((Pair::real => real => real * real) a
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1752
                                     b)))))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1753
      ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1754
        (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1755
            (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1756
             (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1757
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1758
                  ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1759
                  (P ((Pair::real => real => real * real) a b))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1760
  by (import seq BOLZANO_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1761
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1762
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1763
  sums :: "(nat => real) => real => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1764
  "sums == %f. --> (%n. real.sum (0, n) f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1765
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1766
lemma sums: "ALL f s. sums f s = --> (%n. real.sum (0, n) f) s"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1767
  by (import seq sums)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1768
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1769
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1770
  summable :: "(nat => real) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1771
  "summable == %f. Ex (sums f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1772
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1773
lemma summable: "ALL f. summable f = Ex (sums f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1774
  by (import seq summable)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1775
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1776
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1777
  suminf :: "(nat => real) => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1778
  "suminf == %f. Eps (sums f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1779
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1780
lemma suminf: "ALL f. suminf f = Eps (sums f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1781
  by (import seq suminf)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1782
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1783
lemma SUM_SUMMABLE: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1784
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1785
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1786
      (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1787
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1788
           ((sums::(nat => real) => real => bool) f l)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1789
           ((summable::(nat => real) => bool) f)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1790
  by (import seq SUM_SUMMABLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1791
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1792
lemma SUMMABLE_SUM: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1793
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1794
     (op -->::bool => bool => bool) ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1795
      ((sums::(nat => real) => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1796
        ((suminf::(nat => real) => real) f)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1797
  by (import seq SUMMABLE_SUM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1798
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1799
lemma SUM_UNIQ: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1800
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1801
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1802
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1803
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1804
           ((sums::(nat => real) => real => bool) f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1805
           ((op =::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1806
             ((suminf::(nat => real) => real) f))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1807
  by (import seq SUM_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1808
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1809
lemma SER_0: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1810
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1811
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1812
      (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1813
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1814
           ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1815
             (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1816
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1817
                  ((op <=::nat => nat => bool) n m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1818
                  ((op =::real => real => bool) (f m) (0::real))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1819
           ((sums::(nat => real) => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1820
             ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1821
               ((Pair::nat => nat => nat * nat) (0::nat) n) f))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1822
  by (import seq SER_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1823
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1824
lemma SER_POS_LE: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1825
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1826
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1827
      (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1828
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1829
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1830
             ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1831
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1832
               (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1833
                   (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1834
                    ((op <=::nat => nat => bool) n m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1835
                    ((op <=::real => real => bool) (0::real) (f m)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1836
           ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1837
             ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1838
               ((Pair::nat => nat => nat * nat) (0::nat) n) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1839
             ((suminf::(nat => real) => real) f))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1840
  by (import seq SER_POS_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1841
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1842
lemma SER_POS_LT: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1843
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1844
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1845
      (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1846
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1847
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1848
             ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1849
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1850
               (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1851
                   (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1852
                    ((op <=::nat => nat => bool) n m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1853
                    ((op <::real => real => bool) (0::real) (f m)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1854
           ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1855
             ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1856
               ((Pair::nat => nat => nat * nat) (0::nat) n) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1857
             ((suminf::(nat => real) => real) f))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1858
  by (import seq SER_POS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1859
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1860
lemma SER_GROUP: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1861
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1862
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1863
      (%k::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1864
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1865
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1866
             ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1867
             ((op <::nat => nat => bool) (0::nat) k))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1868
           ((sums::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1869
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1870
                 (real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1871
                  ((Pair::nat => nat => nat * nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1872
                    ((op *::nat => nat => nat) n k) k)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1873
                  f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1874
             ((suminf::(nat => real) => real) f))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1875
  by (import seq SER_GROUP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1876
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1877
lemma SER_PAIR: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1878
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1879
     (op -->::bool => bool => bool) ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1880
      ((sums::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1881
        (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1882
            (real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1883
             ((Pair::nat => nat => nat * nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1884
               ((op *::nat => nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1885
                 ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1886
                   ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1887
                     ((op BIT::bin => bool => bin) (bin.Pls::bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1888
                       (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1889
                     (False::bool)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1890
                 n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1891
               ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1892
                 ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1893
                   ((op BIT::bin => bool => bin) (bin.Pls::bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1894
                     (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1895
                   (False::bool))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1896
             f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1897
        ((suminf::(nat => real) => real) f)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1898
  by (import seq SER_PAIR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1899
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1900
lemma SER_OFFSET: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1901
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1902
     (op -->::bool => bool => bool) ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1903
      ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1904
        (%k::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1905
            (sums::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1906
             (%n::nat. f ((op +::nat => nat => nat) n k))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1907
             ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1908
               ((suminf::(nat => real) => real) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1909
               ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1910
                 ((Pair::nat => nat => nat * nat) (0::nat) k) f)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1911
  by (import seq SER_OFFSET)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1912
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1913
lemma SER_POS_LT_PAIR: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1914
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1915
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1916
      (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1917
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1918
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1919
             ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1920
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1921
               (%d::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1922
                   (op <::real => real => bool) (0::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1923
                    ((op +::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1924
                      (f ((op +::nat => nat => nat) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1925
                           ((op *::nat => nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1926
                             ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1927
                               ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1928
                                 ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1929
                                   (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1930
                                 (False::bool)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1931
                             d)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1932
                      (f ((op +::nat => nat => nat) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1933
                           ((op +::nat => nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1934
                             ((op *::nat => nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1935
                               ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1936
                                 ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1937
                                   ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1938
                                     (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1939
                                   (False::bool)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1940
                               d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1941
                             (1::nat))))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1942
           ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1943
             ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1944
               ((Pair::nat => nat => nat * nat) (0::nat) n) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1945
             ((suminf::(nat => real) => real) f))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1946
  by (import seq SER_POS_LT_PAIR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1947
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1948
lemma SER_ADD: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1949
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1950
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1951
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1952
          (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1953
           (%y::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1954
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1955
                (%y0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1956
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1957
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1958
                       ((sums::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1959
                       ((sums::(nat => real) => real => bool) y y0))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1960
                     ((sums::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1961
                       (%n::nat. (op +::real => real => real) (x n) (y n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1962
                       ((op +::real => real => real) x0 y0))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1963
  by (import seq SER_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1964
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1965
lemma SER_CMUL: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1966
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1967
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1968
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1969
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1970
           (%c::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1971
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1972
                ((sums::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1973
                ((sums::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1974
                  (%n::nat. (op *::real => real => real) c (x n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1975
                  ((op *::real => real => real) c x0)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1976
  by (import seq SER_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1977
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1978
lemma SER_NEG: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1979
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1980
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1981
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1982
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1983
           ((sums::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1984
           ((sums::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1985
             (%xa::nat. (uminus::real => real) (x xa))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1986
             ((uminus::real => real) x0))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1987
  by (import seq SER_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1988
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1989
lemma SER_SUB: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1990
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1991
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1992
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1993
          (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1994
           (%y::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1995
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1996
                (%y0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1997
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1998
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1999
                       ((sums::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2000
                       ((sums::(nat => real) => real => bool) y y0))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2001
                     ((sums::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2002
                       (%xa::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2003
                           (op -::real => real => real) (x xa) (y xa))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2004
                       ((op -::real => real => real) x0 y0))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2005
  by (import seq SER_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2006
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2007
lemma SER_CDIV: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2008
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2009
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2010
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2011
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2012
           (%c::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2013
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2014
                ((sums::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2015
                ((sums::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2016
                  (%xa::nat. (op /::real => real => real) (x xa) c)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2017
                  ((op /::real => real => real) x0 c)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2018
  by (import seq SER_CDIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2019
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2020
lemma SER_CAUCHY: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2021
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2022
     (op =::bool => bool => bool) ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2023
      ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2024
        (%e::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2025
            (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2026
             ((op <::real => real => bool) (0::real) e)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2027
             ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2028
               (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2029
                   (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2030
                    (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2031
                        (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2032
                         (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2033
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2034
                              ((op <=::nat => nat => bool) N m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2035
                              ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2036
                                ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2037
                                  ((real.sum::nat * nat
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2038
        => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2039
                                    ((Pair::nat => nat => nat * nat) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2040
                                    f))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2041
                                e))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2042
  by (import seq SER_CAUCHY)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2043
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2044
lemma SER_ZERO: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2045
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2046
     (op -->::bool => bool => bool) ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2047
      ((-->::(nat => real) => real => bool) f (0::real)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2048
  by (import seq SER_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2049
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2050
lemma SER_COMPAR: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2051
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2052
     (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2053
      (%g::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2054
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2055
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2056
             ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2057
               (%x::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2058
                   (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2059
                    (%xa::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2060
                        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2061
                         ((op <=::nat => nat => bool) x xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2062
                         ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2063
                           ((abs::real => real) (f xa)) (g xa)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2064
             ((summable::(nat => real) => bool) g))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2065
           ((summable::(nat => real) => bool) f)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2066
  by (import seq SER_COMPAR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2067
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2068
lemma SER_COMPARA: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2069
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2070
     (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2071
      (%g::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2072
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2073
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2074
             ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2075
               (%x::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2076
                   (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2077
                    (%xa::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2078
                        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2079
                         ((op <=::nat => nat => bool) x xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2080
                         ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2081
                           ((abs::real => real) (f xa)) (g xa)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2082
             ((summable::(nat => real) => bool) g))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2083
           ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2084
             (%k::nat. (abs::real => real) (f k)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2085
  by (import seq SER_COMPARA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2086
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2087
lemma SER_LE: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2088
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2089
     (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2090
      (%g::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2091
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2092
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2093
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2094
               (%n::nat. (op <=::real => real => bool) (f n) (g n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2095
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2096
               ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2097
               ((summable::(nat => real) => bool) g)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2098
           ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2099
             ((suminf::(nat => real) => real) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2100
             ((suminf::(nat => real) => real) g))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2101
  by (import seq SER_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2102
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2103
lemma SER_LE2: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2104
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2105
     (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2106
      (%g::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2107
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2108
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2109
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2110
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2111
                   (op <=::real => real => bool) ((abs::real => real) (f n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2112
                    (g n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2113
             ((summable::(nat => real) => bool) g))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2114
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2115
             ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2116
             ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2117
               ((suminf::(nat => real) => real) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2118
               ((suminf::(nat => real) => real) g)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2119
  by (import seq SER_LE2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2120
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2121
lemma SER_ACONV: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2122
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2123
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2124
      ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2125
        (%n::nat. (abs::real => real) (f n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2126
      ((summable::(nat => real) => bool) f))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2127
  by (import seq SER_ACONV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2128
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2129
lemma SER_ABS: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2130
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2131
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2132
      ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2133
        (%n::nat. (abs::real => real) (f n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2134
      ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2135
        ((abs::real => real) ((suminf::(nat => real) => real) f))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2136
        ((suminf::(nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2137
          (%n::nat. (abs::real => real) (f n)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2138
  by (import seq SER_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2139
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2140
lemma GP_FINITE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2141
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2142
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2143
      ((Not::bool => bool) ((op =::real => real => bool) x (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2144
      ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2145
        (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2146
            (op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2147
             ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2148
               ((Pair::nat => nat => nat * nat) (0::nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2149
               ((op ^::real => nat => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2150
             ((op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2151
               ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2152
                 ((op ^::real => nat => real) x n) (1::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2153
               ((op -::real => real => real) x (1::real))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2154
  by (import seq GP_FINITE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2155
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2156
lemma GP: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2157
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2158
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2159
      ((op <::real => real => bool) ((abs::real => real) x) (1::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2160
      ((sums::(nat => real) => real => bool) ((op ^::real => nat => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2161
        ((inverse::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2162
          ((op -::real => real => real) (1::real) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2163
  by (import seq GP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2164
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2165
lemma ABS_NEG_LEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2166
 (%c::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2167
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2168
      ((op <=::real => real => bool) c (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2169
      ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2170
        (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2171
            (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2172
             (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2173
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2174
                  ((op <=::real => real => bool) ((abs::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2175
                    ((op *::real => real => real) c
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2176
                      ((abs::real => real) y)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2177
                  ((op =::real => real => bool) x (0::real))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2178
  by (import seq ABS_NEG_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2179
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2180
lemma SER_RATIO: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2181
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2182
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2183
      (%c::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2184
          (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2185
           (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2186
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2187
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2188
                  ((op <::real => real => bool) c (1::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2189
                  ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2190
                    (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2191
                        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2192
                         ((op <=::nat => nat => bool) N n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2193
                         ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2194
                           ((abs::real => real) (f ((Suc::nat => nat) n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2195
                           ((op *::real => real => real) c
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2196
                             ((abs::real => real) (f n)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2197
                ((summable::(nat => real) => bool) f))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2198
  by (import seq SER_RATIO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2199
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2200
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2201
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2202
;setup_theory lim
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2203
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2204
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2205
  tends_real_real :: "(real => real) => real => real => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2206
  "tends_real_real == %f l x0. tends f l (mtop mr1, tendsto (mr1, x0))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2207
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2208
lemma tends_real_real: "ALL f l x0. tends_real_real f l x0 = tends f l (mtop mr1, tendsto (mr1, x0))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2209
  by (import lim tends_real_real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2210
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2211
lemma LIM: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2212
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2213
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2214
      (%y0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2215
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2216
           (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2217
               (op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2218
                ((tends_real_real::(real => real) => real => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2219
                  y0 x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2220
                ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2221
                  (%e::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2222
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2223
                       ((op <::real => real => bool) (0::real) e)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2224
                       ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2225
                         (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2226
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2227
                              ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2228
                              ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2229
                                (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2230
                                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2231
                                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2232
 ((op <::real => real => bool) (0::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2233
   ((abs::real => real) ((op -::real => real => real) x x0)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2234
 ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2235
   ((abs::real => real) ((op -::real => real => real) x x0)) d))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2236
                                     ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2237
 ((abs::real => real) ((op -::real => real => real) (f x) y0)) e))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2238
  by (import lim LIM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2239
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2240
lemma LIM_CONST: "ALL k. All (tends_real_real (%x. k) k)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2241
  by (import lim LIM_CONST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2242
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2243
lemma LIM_ADD: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2244
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2245
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2246
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2247
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2248
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2249
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2250
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2251
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2252
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2253
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2254
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2255
                            ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2256
         => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2257
                              f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2258
                            ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2259
         => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2260
                              g m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2261
                          ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2262
       => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2263
                            (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2264
                                (op +::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2265
                            ((op +::real => real => real) l m) x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2266
  by (import lim LIM_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2267
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2268
lemma LIM_MUL: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2269
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2270
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2271
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2272
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2273
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2274
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2275
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2276
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2277
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2278
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2279
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2280
                            ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2281
         => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2282
                              f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2283
                            ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2284
         => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2285
                              g m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2286
                          ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2287
       => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2288
                            (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2289
                                (op *::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2290
                            ((op *::real => real => real) l m) x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2291
  by (import lim LIM_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2292
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2293
lemma LIM_NEG: "ALL f l x. tends_real_real f l x = tends_real_real (%x. - f x) (- l) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2294
  by (import lim LIM_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2295
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2296
lemma LIM_INV: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2297
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2298
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2299
      (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2300
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2301
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2302
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2303
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2304
                  ((tends_real_real::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2305
                    f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2306
                  ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2307
                    ((op =::real => real => bool) l (0::real))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2308
                ((tends_real_real::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2309
                  (%x::real. (inverse::real => real) (f x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2310
                  ((inverse::real => real) l) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2311
  by (import lim LIM_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2312
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2313
lemma LIM_SUB: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2314
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2315
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2316
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2317
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2318
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2319
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2320
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2321
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2322
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2323
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2324
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2325
                            ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2326
         => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2327
                              f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2328
                            ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2329
         => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2330
                              g m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2331
                          ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2332
       => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2333
                            (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2334
                                (op -::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2335
                            ((op -::real => real => real) l m) x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2336
  by (import lim LIM_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2337
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2338
lemma LIM_DIV: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2339
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2340
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2341
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2342
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2343
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2344
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2345
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2346
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2347
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2348
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2349
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2350
                            ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2351
         => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2352
                              f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2353
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2354
                              ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2355
           => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2356
                                g m x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2357
                              ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2358
                                ((op =::real => real => bool) m
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2359
                                  (0::real)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2360
                          ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2361
       => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2362
                            (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2363
                                (op /::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2364
                            ((op /::real => real => real) l m) x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2365
  by (import lim LIM_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2366
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2367
lemma LIM_NULL: "ALL f l x. tends_real_real f l x = tends_real_real (%x. f x - l) 0 x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2368
  by (import lim LIM_NULL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2369
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2370
lemma LIM_X: "ALL x0. tends_real_real (%x. x) x0 x0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2371
  by (import lim LIM_X)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2372
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2373
lemma LIM_UNIQ: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2374
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2375
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2376
      (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2377
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2378
           (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2379
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2380
                (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2381
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2382
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2383
                       ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2384
    => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2385
                         f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2386
                       ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2387
    => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2388
                         f m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2389
                     ((op =::real => real => bool) l m)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2390
  by (import lim LIM_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2391
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2392
lemma LIM_EQUAL: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2393
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2394
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2395
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2396
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2397
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2398
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2399
                (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2400
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2401
                     ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2402
                       (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2403
                           (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2404
                            ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2405
                              ((op =::real => real => bool) x x0))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2406
                            ((op =::real => real => bool) (f x) (g x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2407
                     ((op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2408
                       ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2409
    => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2410
                         f l x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2411
                       ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2412
    => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2413
                         g l x0))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2414
  by (import lim LIM_EQUAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2415
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2416
lemma LIM_TRANSFORM: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2417
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2418
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2419
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2420
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2421
           (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2422
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2423
                (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2424
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2425
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2426
                       ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2427
    => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2428
                         (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2429
                             (op -::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2430
                         (0::real) x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2431
                       ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2432
    => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2433
                         g l x0))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2434
                     ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2435
  => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2436
                       f l x0)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2437
  by (import lim LIM_TRANSFORM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2438
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2439
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2440
  diffl :: "(real => real) => real => real => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2441
  "diffl == %f l x. tends_real_real (%h. (f (x + h) - f x) / h) l 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2442
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2443
lemma diffl: "ALL f l x. diffl f l x = tends_real_real (%h. (f (x + h) - f x) / h) l 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2444
  by (import lim diffl)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2445
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2446
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2447
  contl :: "(real => real) => real => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2448
  "contl == %f x. tends_real_real (%h. f (x + h)) (f x) 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2449
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2450
lemma contl: "ALL f x. contl f x = tends_real_real (%h. f (x + h)) (f x) 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2451
  by (import lim contl)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2452
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2453
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2454
  differentiable :: "(real => real) => real => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2455
  "differentiable == %f x. EX l. diffl f l x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2456
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2457
lemma differentiable: "ALL f x. differentiable f x = (EX l. diffl f l x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2458
  by (import lim differentiable)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2459
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2460
lemma DIFF_UNIQ: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2461
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2462
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2463
      (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2464
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2465
           (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2466
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2467
                (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2468
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2469
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2470
                       ((diffl::(real => real) => real => real => bool) f l
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2471
                         x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2472
                       ((diffl::(real => real) => real => real => bool) f m
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2473
                         x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2474
                     ((op =::real => real => bool) l m)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2475
  by (import lim DIFF_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2476
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2477
lemma DIFF_CONT: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2478
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2479
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2480
      (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2481
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2482
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2483
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2484
                ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2485
                ((contl::(real => real) => real => bool) f x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2486
  by (import lim DIFF_CONT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2487
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2488
lemma CONTL_LIM: "ALL f x. contl f x = tends_real_real f (f x) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2489
  by (import lim CONTL_LIM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2490
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2491
lemma DIFF_CARAT: "ALL f l x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2492
   diffl f l x =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2493
   (EX g. (ALL z. f z - f x = g z * (z - x)) & contl g x & g x = l)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2494
  by (import lim DIFF_CARAT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2495
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2496
lemma CONT_CONST: "ALL k. All (contl (%x. k))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2497
  by (import lim CONT_CONST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2498
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2499
lemma CONT_ADD: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2500
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2501
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2502
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2503
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2504
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2505
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2506
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2507
                  ((contl::(real => real) => real => bool) f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2508
                  ((contl::(real => real) => real => bool) g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2509
                ((contl::(real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2510
                  (%x::real. (op +::real => real => real) (f x) (g x)) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2511
  by (import lim CONT_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2512
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2513
lemma CONT_MUL: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2514
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2515
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2516
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2517
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2518
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2519
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2520
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2521
                  ((contl::(real => real) => real => bool) f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2522
                  ((contl::(real => real) => real => bool) g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2523
                ((contl::(real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2524
                  (%x::real. (op *::real => real => real) (f x) (g x)) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2525
  by (import lim CONT_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2526
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2527
lemma CONT_NEG: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2528
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2529
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2530
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2531
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2532
           ((contl::(real => real) => real => bool) f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2533
           ((contl::(real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2534
             (%x::real. (uminus::real => real) (f x)) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2535
  by (import lim CONT_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2536
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2537
lemma CONT_INV: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2538
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2539
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2540
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2541
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2542
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2543
             ((contl::(real => real) => real => bool) f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2544
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2545
               ((op =::real => real => bool) (f x) (0::real))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2546
           ((contl::(real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2547
             (%x::real. (inverse::real => real) (f x)) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2548
  by (import lim CONT_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2549
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2550
lemma CONT_SUB: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2551
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2552
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2553
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2554
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2555
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2556
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2557
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2558
                  ((contl::(real => real) => real => bool) f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2559
                  ((contl::(real => real) => real => bool) g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2560
                ((contl::(real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2561
                  (%x::real. (op -::real => real => real) (f x) (g x)) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2562
  by (import lim CONT_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2563
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2564
lemma CONT_DIV: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2565
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2566
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2567
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2568
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2569
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2570
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2571
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2572
                  ((contl::(real => real) => real => bool) f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2573
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2574
                    ((contl::(real => real) => real => bool) g x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2575
                    ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2576
                      ((op =::real => real => bool) (g x) (0::real)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2577
                ((contl::(real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2578
                  (%x::real. (op /::real => real => real) (f x) (g x)) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2579
  by (import lim CONT_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2580
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2581
lemma CONT_COMPOSE: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2582
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2583
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2584
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2585
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2586
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2587
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2588
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2589
                  ((contl::(real => real) => real => bool) f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2590
                  ((contl::(real => real) => real => bool) g (f x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2591
                ((contl::(real => real) => real => bool) (%x::real. g (f x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2592
                  x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2593
  by (import lim CONT_COMPOSE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2594
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2595
lemma IVT: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2596
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2597
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2598
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2599
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2600
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2601
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2602
                (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2603
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2604
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2605
                       ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2606
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2607
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2608
                           ((op <=::real => real => bool) (f a) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2609
                           ((op <=::real => real => bool) y (f b)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2610
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2611
                           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2612
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2613
                                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2614
                                  ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2615
                                  ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2616
                                ((contl::(real => real) => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2617
                                  x)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2618
                     ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2619
                       (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2620
                           (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2621
                            ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2622
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2623
                              ((op <=::real => real => bool) x b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2624
                              ((op =::real => real => bool) (f x) y))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2625
  by (import lim IVT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2626
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2627
lemma IVT2: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2628
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2629
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2630
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2631
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2632
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2633
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2634
                (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2635
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2636
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2637
                       ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2638
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2639
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2640
                           ((op <=::real => real => bool) (f b) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2641
                           ((op <=::real => real => bool) y (f a)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2642
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2643
                           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2644
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2645
                                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2646
                                  ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2647
                                  ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2648
                                ((contl::(real => real) => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2649
                                  x)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2650
                     ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2651
                       (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2652
                           (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2653
                            ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2654
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2655
                              ((op <=::real => real => bool) x b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2656
                              ((op =::real => real => bool) (f x) y))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2657
  by (import lim IVT2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2658
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2659
lemma DIFF_CONST: "ALL k. All (diffl (%x. k) 0)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2660
  by (import lim DIFF_CONST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2661
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2662
lemma DIFF_ADD: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2663
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2664
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2665
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2666
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2667
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2668
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2669
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2670
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2671
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2672
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2673
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2674
                            ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2675
                              f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2676
                            ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2677
                              g m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2678
                          ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2679
                            (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2680
                                (op +::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2681
                            ((op +::real => real => real) l m) x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2682
  by (import lim DIFF_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2683
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2684
lemma DIFF_MUL: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2685
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2686
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2687
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2688
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2689
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2690
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2691
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2692
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2693
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2694
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2695
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2696
                            ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2697
                              f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2698
                            ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2699
                              g m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2700
                          ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2701
                            (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2702
                                (op *::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2703
                            ((op +::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2704
                              ((op *::real => real => real) l (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2705
                              ((op *::real => real => real) m (f x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2706
                            x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2707
  by (import lim DIFF_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2708
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2709
lemma DIFF_CMUL: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2710
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2711
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2712
      (%c::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2713
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2714
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2715
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2716
                (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2717
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2718
                     ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2719
                     ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2720
                       (%x::real. (op *::real => real => real) c (f x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2721
                       ((op *::real => real => real) c l) x)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2722
  by (import lim DIFF_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2723
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2724
lemma DIFF_NEG: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2725
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2726
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2727
      (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2728
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2729
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2730
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2731
                ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2732
                ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2733
                  (%x::real. (uminus::real => real) (f x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2734
                  ((uminus::real => real) l) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2735
  by (import lim DIFF_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2736
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2737
lemma DIFF_SUB: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2738
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2739
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2740
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2741
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2742
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2743
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2744
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2745
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2746
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2747
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2748
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2749
                            ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2750
                              f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2751
                            ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2752
                              g m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2753
                          ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2754
                            (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2755
                                (op -::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2756
                            ((op -::real => real => real) l m) x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2757
  by (import lim DIFF_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2758
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2759
lemma DIFF_CHAIN: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2760
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2761
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2762
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2763
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2764
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2765
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2766
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2767
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2768
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2769
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2770
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2771
                            ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2772
                              f l (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2773
                            ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2774
                              g m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2775
                          ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2776
                            (%x::real. f (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2777
                            ((op *::real => real => real) l m) x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2778
  by (import lim DIFF_CHAIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2779
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2780
lemma DIFF_X: "All (diffl (%x. x) 1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2781
  by (import lim DIFF_X)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2782
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2783
lemma DIFF_POW: "ALL n x. diffl (%x. x ^ n) (real n * x ^ (n - 1)) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2784
  by (import lim DIFF_POW)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2785
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2786
lemma DIFF_XM1: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2787
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2788
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2789
      ((Not::bool => bool) ((op =::real => real => bool) x (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2790
      ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2791
        (inverse::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2792
        ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2793
          ((op ^::real => nat => real) ((inverse::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2794
            ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2795
              ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2796
                ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2797
                (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2798
        x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2799
  by (import lim DIFF_XM1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2800
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2801
lemma DIFF_INV: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2802
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2803
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2804
      (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2805
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2806
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2807
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2808
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2809
                  ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2810
                  ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2811
                    ((op =::real => real => bool) (f x) (0::real))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2812
                ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2813
                  (%x::real. (inverse::real => real) (f x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2814
                  ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2815
                    ((op /::real => real => real) l
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2816
                      ((op ^::real => nat => real) (f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2817
                        ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2818
                          ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2819
                            ((op BIT::bin => bool => bin) (bin.Pls::bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2820
                              (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2821
                            (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2822
                  x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2823
  by (import lim DIFF_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2824
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2825
lemma DIFF_DIV: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2826
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2827
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2828
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2829
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2830
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2831
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2832
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2833
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2834
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2835
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2836
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2837
                            ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2838
                              f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2839
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2840
                              ((diffl::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2841
 => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2842
                                g m x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2843
                              ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2844
                                ((op =::real => real => bool) (g x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2845
                                  (0::real)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2846
                          ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2847
                            (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2848
                                (op /::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2849
                            ((op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2850
                              ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2851
                                ((op *::real => real => real) l (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2852
                                ((op *::real => real => real) m (f x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2853
                              ((op ^::real => nat => real) (g x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2854
                                ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2855
                                  ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2856
                                    ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2857
(bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2858
                                    (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2859
                            x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2860
  by (import lim DIFF_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2861
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2862
lemma DIFF_SUM: "(All::((nat => real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2863
 (%f::nat => real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2864
     (All::((nat => real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2865
      (%f'::nat => real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2866
          (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2867
           (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2868
               (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2869
                (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2870
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2871
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2872
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2873
                          ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2874
                            (%r::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2875
                                (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2876
                                 ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2877
                                   ((op <=::nat => nat => bool) m r)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2878
                                   ((op <::nat => nat => bool) r
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2879
                                     ((op +::nat => nat => nat) m n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2880
                                 ((diffl::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2881
    => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2882
                                   (f r) (f' r x) x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2883
                          ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2884
                            (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2885
                                (real.sum::nat * nat
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2886
     => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2887
                                 ((Pair::nat => nat => nat * nat) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2888
                                 (%n::nat. f n x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2889
                            ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2890
                              ((Pair::nat => nat => nat * nat) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2891
                              (%r::nat. f' r x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2892
                            x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2893
  by (import lim DIFF_SUM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2894
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2895
lemma CONT_BOUNDED: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2896
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2897
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2898
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2899
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2900
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2901
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2902
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2903
                  ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2904
                  ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2905
                    (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2906
                        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2907
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2908
                           ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2909
                           ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2910
                         ((contl::(real => real) => real => bool) f x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2911
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2912
                  (%M::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2913
                      (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2914
                       (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2915
                           (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2916
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2917
                              ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2918
                              ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2919
                            ((op <=::real => real => bool) (f x) M)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2920
  by (import lim CONT_BOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2921
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2922
lemma CONT_HASSUP: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2923
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2924
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2925
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2926
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2927
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2928
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2929
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2930
                  ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2931
                  ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2932
                    (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2933
                        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2934
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2935
                           ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2936
                           ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2937
                         ((contl::(real => real) => real => bool) f x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2938
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2939
                  (%M::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2940
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2941
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2942
                         (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2943
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2944
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2945
                                ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2946
                                ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2947
                              ((op <=::real => real => bool) (f x) M)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2948
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2949
                         (%N::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2950
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2951
                              ((op <::real => real => bool) N M)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2952
                              ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2953
                                (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2954
                                    (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2955
                                     ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2956
                                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2957
 ((op <=::real => real => bool) x b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2958
 ((op <::real => real => bool) N (f x))))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2959
  by (import lim CONT_HASSUP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2960
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2961
lemma CONT_ATTAINS: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2962
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2963
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2964
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2965
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2966
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2967
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2968
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2969
                  ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2970
                  ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2971
                    (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2972
                        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2973
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2974
                           ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2975
                           ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2976
                         ((contl::(real => real) => real => bool) f x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2977
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2978
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2979
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2980
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2981
                         (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2982
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2983
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2984
                                ((op <=::real => real => bool) a xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2985
                                ((op <=::real => real => bool) xa b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2986
                              ((op <=::real => real => bool) (f xa) x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2987
                       ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2988
                         (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2989
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2990
                              ((op <=::real => real => bool) a xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2991
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2992
                                ((op <=::real => real => bool) xa b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2993
                                ((op =::real => real => bool) (f xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2994
                                  x)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2995
  by (import lim CONT_ATTAINS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2996
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2997
lemma CONT_ATTAINS2: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2998
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2999
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3000
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3001
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3002
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3003
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3004
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3005
                  ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3006
                  ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3007
                    (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3008
                        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3009
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3010
                           ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3011
                           ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3012
                         ((contl::(real => real) => real => bool) f x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3013
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3014
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3015
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3016
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3017
                         (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3018
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3019
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3020
                                ((op <=::real => real => bool) a xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3021
                                ((op <=::real => real => bool) xa b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3022
                              ((op <=::real => real => bool) x (f xa))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3023
                       ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3024
                         (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3025
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3026
                              ((op <=::real => real => bool) a xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3027
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3028
                                ((op <=::real => real => bool) xa b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3029
                                ((op =::real => real => bool) (f xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3030
                                  x)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3031
  by (import lim CONT_ATTAINS2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3032
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3033
lemma CONT_ATTAINS_ALL: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3034
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3035
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3036
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3037
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3038
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3039
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3040
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3041
                  ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3042
                  ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3043
                    (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3044
                        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3045
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3046
                           ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3047
                           ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3048
                         ((contl::(real => real) => real => bool) f x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3049
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3050
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3051
                      (Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3052
                       (%M::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3053
                           (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3054
                            ((op <=::real => real => bool) x M)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3055
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3056
                              ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3057
                                (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3058
                                    (op -->::bool => bool => bool)
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) x y) ((op <=::real => real => bool) y M))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3061
                                     ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3062
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3063
     (op &::bool => bool => bool) ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3064
      ((op &::bool => bool => bool) ((op <=::real => real => bool) x b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3065
        ((op =::real => real => bool) (f x) y))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3066
                              ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3067
                                (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3068
                                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3069
                                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3070
 ((op <=::real => real => bool) a xa) ((op <=::real => real => bool) xa b))
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 <=::real => real => bool) x (f xa))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3073
 ((op <=::real => real => bool) (f xa) M)))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3074
  by (import lim CONT_ATTAINS_ALL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3075
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3076
lemma DIFF_LINC: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3077
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3078
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3079
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3080
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3081
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3082
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3083
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3084
                  ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3085
                  ((op <::real => real => bool) (0::real) l))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3086
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3087
                  (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3088
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3089
                       ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3090
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3091
                         (%h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3092
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3093
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3094
                                ((op <::real => real => bool) (0::real) h)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3095
                                ((op <::real => real => bool) h d))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3096
                              ((op <::real => real => bool) (f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3097
                                (f ((op +::real => real => real) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3098
                                     h))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3099
  by (import lim DIFF_LINC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3100
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3101
lemma DIFF_LDEC: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3102
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3103
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3104
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3105
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3106
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3107
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3108
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3109
                  ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3110
                  ((op <::real => real => bool) l (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3111
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3112
                  (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3113
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3114
                       ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3115
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3116
                         (%h::real.
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 &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3119
                                ((op <::real => real => bool) (0::real) h)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3120
                                ((op <::real => real => bool) h d))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3121
                              ((op <::real => real => bool) (f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3122
                                (f ((op -::real => real => real) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3123
                                     h))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3124
  by (import lim DIFF_LDEC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3125
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3126
lemma DIFF_LMAX: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3127
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3128
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3129
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3130
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3131
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3132
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3133
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3134
                  ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3135
                  ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3136
                    (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3137
                        (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3138
                         ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3139
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3140
                           (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3141
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3142
                                ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3143
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3144
                                    ((op -::real => real => real) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3145
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3146
                                ((op <=::real => real => bool) (f y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3147
                                  (f x)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3148
                ((op =::real => real => bool) l (0::real)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3149
  by (import lim DIFF_LMAX)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3150
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3151
lemma DIFF_LMIN: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3152
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3153
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3154
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3155
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3156
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3157
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3158
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3159
                  ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3160
                  ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3161
                    (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3162
                        (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3163
                         ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3164
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3165
                           (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3166
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3167
                                ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3168
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3169
                                    ((op -::real => real => real) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3170
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3171
                                ((op <=::real => real => bool) (f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3172
                                  (f y)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3173
                ((op =::real => real => bool) l (0::real)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3174
  by (import lim DIFF_LMIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3175
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3176
lemma DIFF_LCONST: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3177
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3178
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3179
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3180
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3181
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3182
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3183
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3184
                  ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3185
                  ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3186
                    (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3187
                        (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3188
                         ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3189
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3190
                           (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3191
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3192
                                ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3193
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3194
                                    ((op -::real => real => real) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3195
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3196
                                ((op =::real => real => bool) (f y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3197
                                  (f x)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3198
                ((op =::real => real => bool) l (0::real)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3199
  by (import lim DIFF_LCONST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3200
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3201
lemma INTERVAL_LEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3202
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3203
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3204
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3205
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3206
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3207
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3208
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3209
                  ((op <::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3210
                  ((op <::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3211
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3212
                  (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3213
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3214
                       ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3215
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3216
                         (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3217
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3218
                              ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3219
                                ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3220
                                  ((op -::real => real => real) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3221
                                d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3222
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3223
                                ((op <=::real => real => bool) a y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3224
                                ((op <=::real => real => bool) y b)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3225
  by (import lim INTERVAL_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3226
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3227
lemma ROLLE: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3228
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3229
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3230
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3231
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3232
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3233
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3234
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3235
                  ((op <::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3236
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3237
                    ((op =::real => real => bool) (f a) (f b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3238
                    ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3239
                      ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3240
                        (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3241
                            (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3242
                             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3243
                               ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3244
                               ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3245
                             ((contl::(real => real) => real => bool) f x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3246
                      ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3247
                        (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3248
                            (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3249
                             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3250
                               ((op <::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3251
                               ((op <::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3252
                             ((differentiable::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3253
         => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3254
                               f x))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3255
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3256
                  (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3257
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3258
                       ((op <::real => real => bool) a z)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3259
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3260
                         ((op <::real => real => bool) z b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3261
                         ((diffl::(real => real) => real => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3262
                           (0::real) z)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3263
  by (import lim ROLLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3264
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3265
lemma MVT_LEMMA: "ALL (f::real => real) (a::real) b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3266
   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
  3267
  by (import lim MVT_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3268
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3269
lemma MVT: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3270
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3271
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3272
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3273
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3274
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3275
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3276
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3277
                  ((op <::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3278
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3279
                    ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3280
                      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3281
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3282
                           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3283
                             ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3284
                             ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3285
                           ((contl::(real => real) => real => bool) f x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3286
                    ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3287
                      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3288
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3289
                           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3290
                             ((op <::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3291
                             ((op <::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3292
                           ((differentiable::(real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3293
                             f x)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3294
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3295
                  (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3296
                      (Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3297
                       (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3298
                           (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3299
                            ((op <::real => real => bool) a z)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3300
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3301
                              ((op <::real => real => bool) z b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3302
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3303
                                ((diffl::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3304
   => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3305
                                  f l z)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3306
                                ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3307
                                  ((op -::real => real => real) (f b) (f a))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3308
                                  ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3309
                                    ((op -::real => real => real) b a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3310
                                    l))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3311
  by (import lim MVT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3312
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3313
lemma DIFF_ISCONST_END: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3314
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3315
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3316
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3317
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3318
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3319
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3320
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3321
                  ((op <::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3322
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3323
                    ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3324
                      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3325
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3326
                           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3327
                             ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3328
                             ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3329
                           ((contl::(real => real) => real => bool) f x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3330
                    ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3331
                      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3332
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3333
                           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3334
                             ((op <::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3335
                             ((op <::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3336
                           ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3337
                             f (0::real) x)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3338
                ((op =::real => real => bool) (f b) (f a)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3339
  by (import lim DIFF_ISCONST_END)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3340
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3341
lemma DIFF_ISCONST: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3342
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3343
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3344
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3345
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3346
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3347
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3348
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3349
                  ((op <::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3350
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3351
                    ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3352
                      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3353
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3354
                           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3355
                             ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3356
                             ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3357
                           ((contl::(real => real) => real => bool) f x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3358
                    ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3359
                      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3360
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3361
                           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3362
                             ((op <::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3363
                             ((op <::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3364
                           ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3365
                             f (0::real) x)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3366
                ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3367
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3368
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3369
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3370
                         ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3371
                         ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3372
                       ((op =::real => real => bool) (f x) (f a)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3373
  by (import lim DIFF_ISCONST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3374
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3375
lemma DIFF_ISCONST_ALL: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3376
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3377
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3378
      ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3379
        ((diffl::(real => real) => real => real => bool) f (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3380
      ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3381
        (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3382
            (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3383
             (%y::real. (op =::real => real => bool) (f x) (f y)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3384
  by (import lim DIFF_ISCONST_ALL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3385
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3386
lemma INTERVAL_ABS: "ALL (x::real) (z::real) d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3387
   (x - d <= z & z <= x + d) = (abs (z - x) <= d)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3388
  by (import lim INTERVAL_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3389
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3390
lemma CONT_INJ_LEMMA: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3391
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3392
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3393
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3394
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3395
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3396
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3397
                (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3398
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3399
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3400
                       ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3401
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3402
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3403
                           (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3404
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3405
                                ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3406
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3407
                                    ((op -::real => real => real) z x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3408
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3409
                                ((op =::real => real => bool) (g (f z)) z)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3410
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3411
                           (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3412
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3413
                                ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3414
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3415
                                    ((op -::real => real => real) z x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3416
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3417
                                ((contl::(real => real) => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3418
                                  z)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3419
                     ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3420
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3421
                         (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3422
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3423
                              ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3424
                                ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3425
                                  ((op -::real => real => real) z x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3426
                                d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3427
                              ((op <=::real => real => bool) (f z)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3428
                                (f x)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3429
  by (import lim CONT_INJ_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3430
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3431
lemma CONT_INJ_LEMMA2: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3432
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3433
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3434
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3435
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3436
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3437
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3438
                (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3439
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3440
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3441
                       ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3442
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3443
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3444
                           (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3445
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3446
                                ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3447
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3448
                                    ((op -::real => real => real) z x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3449
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3450
                                ((op =::real => real => bool) (g (f z)) z)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3451
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3452
                           (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3453
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3454
                                ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3455
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3456
                                    ((op -::real => real => real) z x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3457
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3458
                                ((contl::(real => real) => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3459
                                  z)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3460
                     ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3461
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3462
                         (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3463
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3464
                              ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3465
                                ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3466
                                  ((op -::real => real => real) z x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3467
                                d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3468
                              ((op <=::real => real => bool) (f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3469
                                (f z)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3470
  by (import lim CONT_INJ_LEMMA2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3471
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3472
lemma CONT_INJ_RANGE: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3473
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3474
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3475
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3476
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3477
           (%x::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
                (%d::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 &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3482
                       ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3483
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3484
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3485
                           (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3486
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3487
                                ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3488
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3489
                                    ((op -::real => real => real) z x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3490
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3491
                                ((op =::real => real => bool) (g (f z)) z)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3492
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3493
                           (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3494
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3495
                                ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3496
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3497
                                    ((op -::real => real => real) z x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3498
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3499
                                ((contl::(real => real) => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3500
                                  z)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3501
                     ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3502
                       (%e::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3503
                           (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3504
                            ((op <::real => real => bool) (0::real) e)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3505
                            ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3506
                              (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3507
                                  (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3508
                                   ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3509
                                     ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3510
 ((op -::real => real => real) y (f x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3511
                                     e)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3512
                                   ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3513
                                     (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3514
   (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3515
    ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3516
      ((abs::real => real) ((op -::real => real => real) z x)) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3517
    ((op =::real => real => bool) (f z) y)))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3518
  by (import lim CONT_INJ_RANGE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3519
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3520
lemma CONT_INVERSE: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3521
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3522
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3523
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3524
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3525
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3526
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3527
                (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3528
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3529
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3530
                       ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3531
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3532
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3533
                           (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3534
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3535
                                ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3536
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3537
                                    ((op -::real => real => real) z x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3538
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3539
                                ((op =::real => real => bool) (g (f z)) z)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3540
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3541
                           (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3542
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3543
                                ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3544
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3545
                                    ((op -::real => real => real) z x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3546
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3547
                                ((contl::(real => real) => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3548
                                  z)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3549
                     ((contl::(real => real) => real => bool) g (f x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3550
  by (import lim CONT_INVERSE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3551
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3552
lemma DIFF_INVERSE: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3553
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3554
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3555
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3556
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3557
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3558
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3559
                (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3560
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3561
                     (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3562
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3563
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3564
                            ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3565
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3566
                              ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3567
                                (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3568
                                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3569
                                     ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3570
 ((abs::real => real) ((op -::real => real => real) z x)) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3571
                                     ((op =::real => real => bool) (g (f z))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3572
 z)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3573
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3574
                                ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3575
                                  (%z::real.
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 <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3578
   ((abs::real => real) ((op -::real => real => real) z x)) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3579
 ((contl::(real => real) => real => bool) f z)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3580
                                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3581
                                  ((diffl::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3582
     => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3583
                                    f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3584
                                  ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3585
                                    ((op =::real => real => bool) l
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3586
(0::real)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3587
                          ((diffl::(real => real) => real => real => bool) g
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3588
                            ((inverse::real => real) l) (f x)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3589
  by (import lim DIFF_INVERSE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3590
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3591
lemma DIFF_INVERSE_LT: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3592
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3593
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3594
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3595
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3596
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3597
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3598
                (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3599
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3600
                     (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3601
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3602
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3603
                            ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3604
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3605
                              ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3606
                                (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3607
                                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3608
                                     ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3609
 ((abs::real => real) ((op -::real => real => real) z x)) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3610
                                     ((op =::real => real => bool) (g (f z))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3611
 z)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3612
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3613
                                ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3614
                                  (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3615
(op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3616
 ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3617
   ((abs::real => real) ((op -::real => real => real) z x)) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3618
 ((contl::(real => real) => real => bool) f z)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3619
                                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3620
                                  ((diffl::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3621
     => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3622
                                    f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3623
                                  ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3624
                                    ((op =::real => real => bool) l
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3625
(0::real)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3626
                          ((diffl::(real => real) => real => real => bool) g
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3627
                            ((inverse::real => real) l) (f x)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3628
  by (import lim DIFF_INVERSE_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3629
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3630
lemma INTERVAL_CLEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3631
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3632
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3633
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3634
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3635
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3636
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3637
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3638
                  ((op <::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3639
                  ((op <::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3640
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3641
                  (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3642
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3643
                       ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3644
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3645
                         (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3646
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3647
                              ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3648
                                ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3649
                                  ((op -::real => real => real) y x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3650
                                d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3651
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3652
                                ((op <::real => real => bool) a y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3653
                                ((op <::real => real => bool) y b)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3654
  by (import lim INTERVAL_CLEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3655
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3656
lemma DIFF_INVERSE_OPEN: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3657
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3658
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3659
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3660
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3661
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3662
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3663
                (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3664
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3665
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3666
                         (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3667
                          (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3668
                              (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3669
                               ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3670
                                 ((op <::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3671
                                 ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3672
                                   ((op <::real => real => bool) x b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3673
                                   ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3674
                                     ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3675
 (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3676
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3677
      ((op &::bool => bool => bool) ((op <::real => real => bool) a z)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3678
        ((op <::real => real => bool) z b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3679
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3680
        ((op =::real => real => bool) (g (f z)) z)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3681
        ((contl::(real => real) => real => bool) f z))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3682
                                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3683
 ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3684
 ((Not::bool => bool) ((op =::real => real => bool) l (0::real)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3685
                               ((diffl::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3686
  => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3687
                                 g ((inverse::real => real) l) (f x))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3688
  by (import lim DIFF_INVERSE_OPEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3689
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3690
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3691
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3692
;setup_theory powser
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3693
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3694
lemma POWDIFF_LEMMA: "ALL n x y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3695
   real.sum (0, Suc n) (%p. x ^ p * y ^ (Suc n - p)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3696
   y * real.sum (0, Suc n) (%p. x ^ p * y ^ (n - p))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3697
  by (import powser POWDIFF_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3698
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3699
lemma POWDIFF: "ALL n x y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3700
   x ^ Suc n - y ^ Suc n =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3701
   (x - y) * real.sum (0, Suc n) (%p. x ^ p * y ^ (n - p))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3702
  by (import powser POWDIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3703
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3704
lemma POWREV: "ALL n x y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3705
   real.sum (0, Suc n) (%xa. x ^ xa * y ^ (n - xa)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3706
   real.sum (0, Suc n) (%xa. x ^ (n - xa) * y ^ xa)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3707
  by (import powser POWREV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3708
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3709
lemma POWSER_INSIDEA: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3710
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3711
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3712
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3713
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3714
           (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3715
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3716
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3717
                  ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3718
                    (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3719
                        (op *::real => real => real) (f n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3720
                         ((op ^::real => nat => real) x n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3721
                  ((op <::real => real => bool) ((abs::real => real) z)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3722
                    ((abs::real => real) x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3723
                ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3724
                  (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3725
                      (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3726
                       ((abs::real => real) (f n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3727
                       ((op ^::real => nat => real) z n))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3728
  by (import powser POWSER_INSIDEA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3729
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3730
lemma POWSER_INSIDE: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3731
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3732
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3733
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3734
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3735
           (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3736
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3737
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3738
                  ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3739
                    (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3740
                        (op *::real => real => real) (f n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3741
                         ((op ^::real => nat => real) x n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3742
                  ((op <::real => real => bool) ((abs::real => real) z)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3743
                    ((abs::real => real) x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3744
                ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3745
                  (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3746
                      (op *::real => real => real) (f n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3747
                       ((op ^::real => nat => real) z n))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3748
  by (import powser POWSER_INSIDE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3749
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3750
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3751
  diffs :: "(nat => real) => nat => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3752
  "diffs == %c n. real (Suc n) * c (Suc n)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3753
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3754
lemma diffs: "ALL c. diffs c = (%n. real (Suc n) * c (Suc n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3755
  by (import powser diffs)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3756
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3757
lemma DIFFS_NEG: "ALL c. diffs (%n. - c n) = (%x. - diffs c x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3758
  by (import powser DIFFS_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3759
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3760
lemma DIFFS_LEMMA: "ALL n c x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3761
   real.sum (0, n) (%n. diffs c n * x ^ n) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3762
   real.sum (0, n) (%n. real n * (c n * x ^ (n - 1))) +
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3763
   real n * (c n * x ^ (n - 1))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3764
  by (import powser DIFFS_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3765
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3766
lemma DIFFS_LEMMA2: "ALL n c x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3767
   real.sum (0, n) (%n. real n * (c n * x ^ (n - 1))) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3768
   real.sum (0, n) (%n. diffs c n * x ^ n) - real n * (c n * x ^ (n - 1))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3769
  by (import powser DIFFS_LEMMA2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3770
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3771
lemma DIFFS_EQUIV: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3772
 (%c::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3773
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3774
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3775
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3776
           ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3777
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3778
                 (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3779
                  ((diffs::(nat => real) => nat => real) c n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3780
                  ((op ^::real => nat => real) x n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3781
           ((sums::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3782
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3783
                 (op *::real => real => real) ((real::nat => real) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3784
                  ((op *::real => real => real) (c n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3785
                    ((op ^::real => nat => real) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3786
                      ((op -::nat => nat => nat) n (1::nat)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3787
             ((suminf::(nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3788
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3789
                   (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3790
                    ((diffs::(nat => real) => nat => real) c n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3791
                    ((op ^::real => nat => real) x n))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3792
  by (import powser DIFFS_EQUIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3793
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3794
lemma TERMDIFF_LEMMA1: "ALL m z h.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3795
   real.sum (0, m) (%p. (z + h) ^ (m - p) * z ^ p - z ^ m) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3796
   real.sum (0, m) (%p. z ^ p * ((z + h) ^ (m - p) - z ^ (m - p)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3797
  by (import powser TERMDIFF_LEMMA1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3798
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3799
lemma TERMDIFF_LEMMA2: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3800
 (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3801
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3802
      (%h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3803
          (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3804
           (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3805
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3806
                ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3807
                  ((op =::real => real => bool) h (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3808
                ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3809
                  ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3810
                    ((op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3811
                      ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3812
                        ((op ^::real => nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3813
                          ((op +::real => real => real) z h) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3814
                        ((op ^::real => nat => real) z n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3815
                      h)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3816
                    ((op *::real => real => real) ((real::nat => real) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3817
                      ((op ^::real => nat => real) z
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3818
                        ((op -::nat => nat => nat) n (1::nat)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3819
                  ((op *::real => real => real) h
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3820
                    ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3821
                      ((Pair::nat => nat => nat * nat) (0::nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3822
                        ((op -::nat => nat => nat) n (1::nat)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3823
                      (%p::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3824
                          (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3825
                           ((op ^::real => nat => real) z p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3826
                           ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3827
                             ((Pair::nat => nat => nat * nat) (0::nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3828
                               ((op -::nat => nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3829
                                 ((op -::nat => nat => nat) n (1::nat)) p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3830
                             (%q::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3831
                                 (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3832
                                  ((op ^::real => nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3833
                                    ((op +::real => real => real) z h) q)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3834
                                  ((op ^::real => nat => real) z
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3835
                                    ((op -::nat => nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3836
((op -::nat => nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3837
  ((op -::nat => nat => nat) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3838
    ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3839
      ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3840
        ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3841
        (False::bool))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3842
  p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3843
q)))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3844
  by (import powser TERMDIFF_LEMMA2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3845
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3846
lemma TERMDIFF_LEMMA3: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3847
 (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3848
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3849
      (%h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3850
          (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3851
           (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3852
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3853
                (%k'::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3854
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3855
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3856
                       ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3857
                         ((op =::real => real => bool) h (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3858
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3859
                         ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3860
                           ((abs::real => real) z) k')
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3861
                         ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3862
                           ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3863
                             ((op +::real => real => real) z h))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3864
                           k')))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3865
                     ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3866
                       ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3867
                         ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3868
                           ((op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3869
                             ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3870
                               ((op ^::real => nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3871
                                 ((op +::real => real => real) z h) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3872
                               ((op ^::real => nat => real) z n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3873
                             h)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3874
                           ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3875
                             ((real::nat => real) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3876
                             ((op ^::real => nat => real) z
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3877
                               ((op -::nat => nat => nat) n (1::nat))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3878
                       ((op *::real => real => real) ((real::nat => real) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3879
                         ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3880
                           ((real::nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3881
                             ((op -::nat => nat => nat) n (1::nat)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3882
                           ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3883
                             ((op ^::real => nat => real) k'
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3884
                               ((op -::nat => nat => nat) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3885
                                 ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3886
                                   ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3887
                                     ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3888
 (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3889
                                     (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3890
                             ((abs::real => real) h)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3891
  by (import powser TERMDIFF_LEMMA3)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3892
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3893
lemma TERMDIFF_LEMMA4: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3894
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3895
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3896
      (%k'::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3897
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3898
           (%k::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3899
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3900
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3901
                  ((op <::real => real => bool) (0::real) k)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3902
                  ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3903
                    (%h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3904
                        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3905
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3906
                           ((op <::real => real => bool) (0::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3907
                             ((abs::real => real) h))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3908
                           ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3909
                             ((abs::real => real) h) k))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3910
                         ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3911
                           ((abs::real => real) (f h))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3912
                           ((op *::real => real => real) k'
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3913
                             ((abs::real => real) h))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3914
                ((tends_real_real::(real => real) => real => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3915
                  (0::real) (0::real)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3916
  by (import powser TERMDIFF_LEMMA4)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3917
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3918
lemma TERMDIFF_LEMMA5: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3919
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3920
     (All::((real => nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3921
      (%g::real => nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3922
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3923
           (%k::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3924
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3925
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3926
                  ((op <::real => real => bool) (0::real) k)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3927
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3928
                    ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3929
                    ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3930
                      (%h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3931
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3932
                           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3933
                             ((op <::real => real => bool) (0::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3934
                               ((abs::real => real) h))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3935
                             ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3936
                               ((abs::real => real) h) k))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3937
                           ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3938
                             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3939
                                 (op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3940
                                  ((abs::real => real) (g h n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3941
                                  ((op *::real => real => real) (f n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3942
                                    ((abs::real => real) h))))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3943
                ((tends_real_real::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3944
                  (%h::real. (suminf::(nat => real) => real) (g h))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3945
                  (0::real) (0::real)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3946
  by (import powser TERMDIFF_LEMMA5)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3947
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3948
lemma TERMDIFF: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3949
 (%c::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3950
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3951
      (%k'::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3952
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3953
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3954
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3955
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3956
                  ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3957
                    (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3958
                        (op *::real => real => real) (c n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3959
                         ((op ^::real => nat => real) k' n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3960
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3961
                    ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3962
                      (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3963
                          (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3964
                           ((diffs::(nat => real) => nat => real) c n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3965
                           ((op ^::real => nat => real) k' n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3966
                    ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3967
                      ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3968
                        (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3969
                            (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3970
                             ((diffs::(nat => real) => nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3971
                               ((diffs::(nat => real) => nat => real) c) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3972
                             ((op ^::real => nat => real) k' n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3973
                      ((op <::real => real => bool) ((abs::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3974
                        ((abs::real => real) k')))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3975
                ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3976
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3977
                      (suminf::(nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3978
                       (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3979
                           (op *::real => real => real) (c n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3980
                            ((op ^::real => nat => real) x n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3981
                  ((suminf::(nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3982
                    (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3983
                        (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3984
                         ((diffs::(nat => real) => nat => real) c n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3985
                         ((op ^::real => nat => real) x n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3986
                  x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3987
  by (import powser TERMDIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3988
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3989
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3990
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3991
;setup_theory transc
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3992
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3993
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3994
  exp :: "real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3995
  "exp == %x. suminf (%n. inverse (real (FACT n)) * x ^ n)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3996
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3997
lemma exp: "ALL x. exp x = suminf (%n. inverse (real (FACT n)) * x ^ n)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3998
  by (import transc exp)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3999
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4000
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4001
  cos :: "real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4002
  "cos ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4003
%x. suminf
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4004
     (%n. (if EVEN n then (- 1) ^ (n div 2) / real (FACT n) else 0) * x ^ n)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4005
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4006
lemma cos: "ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4007
   cos x =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4008
   suminf
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4009
    (%n. (if EVEN n then (- 1) ^ (n div 2) / real (FACT n) else 0) * x ^ n)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4010
  by (import transc cos)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4011
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4012
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4013
  sin :: "real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4014
  "sin ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4015
%x. suminf
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4016
     (%n. (if EVEN n then 0 else (- 1) ^ ((n - 1) div 2) / real (FACT n)) *
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4017
          x ^ n)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4018
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4019
lemma sin: "ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4020
   sin x =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4021
   suminf
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4022
    (%n. (if EVEN n then 0 else (- 1) ^ ((n - 1) div 2) / real (FACT n)) *
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4023
         x ^ n)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4024
  by (import transc sin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4025
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4026
lemma EXP_CONVERGES: "ALL x. sums (%n. inverse (real (FACT n)) * x ^ n) (exp x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4027
  by (import transc EXP_CONVERGES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4028
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4029
lemma SIN_CONVERGES: "ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4030
   sums
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4031
    (%n. (if EVEN n then 0 else (- 1) ^ ((n - 1) div 2) / real (FACT n)) *
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4032
         x ^ n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4033
    (sin x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4034
  by (import transc SIN_CONVERGES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4035
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4036
lemma COS_CONVERGES: "ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4037
   sums
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4038
    (%n. (if EVEN n then (- 1) ^ (n div 2) / real (FACT n) else 0) * x ^ n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4039
    (cos x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4040
  by (import transc COS_CONVERGES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4041
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4042
lemma EXP_FDIFF: "diffs (%n. inverse (real (FACT n))) = (%n. inverse (real (FACT n)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4043
  by (import transc EXP_FDIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4044
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4045
lemma SIN_FDIFF: "diffs (%n. if EVEN n then 0 else (- 1) ^ ((n - 1) div 2) / real (FACT n)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4046
(%n. if EVEN n then (- 1) ^ (n div 2) / real (FACT n) else 0)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4047
  by (import transc SIN_FDIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4048
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4049
lemma COS_FDIFF: "diffs (%n. if EVEN n then (- 1) ^ (n div 2) / real (FACT n) else 0) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4050
(%n. - (if EVEN n then 0 else (- 1) ^ ((n - 1) div 2) / real (FACT n)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4051
  by (import transc COS_FDIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4052
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4053
lemma SIN_NEGLEMMA: "ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4054
   - sin x =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4055
   suminf
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4056
    (%n. - ((if EVEN n then 0
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4057
             else (- 1) ^ ((n - 1) div 2) / real (FACT n)) *
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4058
            x ^ n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4059
  by (import transc SIN_NEGLEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4060
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4061
lemma DIFF_EXP: "ALL x. diffl exp (exp x) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4062
  by (import transc DIFF_EXP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4063
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4064
lemma DIFF_SIN: "ALL x. diffl sin (cos x) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4065
  by (import transc DIFF_SIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4066
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4067
lemma DIFF_COS: "ALL x. diffl cos (- sin x) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4068
  by (import transc DIFF_COS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4069
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4070
lemma DIFF_COMPOSITE: "(op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4071
 ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4072
   ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4073
     ((diffl::(real => real) => real => real => bool) (f::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4074
       (l::real) (x::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4075
     ((Not::bool => bool) ((op =::real => real => bool) (f x) (0::real))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4076
   ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4077
     (%x::real. (inverse::real => real) (f x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4078
     ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4079
       ((op /::real => real => real) l
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4080
         ((op ^::real => nat => real) (f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4081
           ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4082
             ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4083
               ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4084
               (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4085
     x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4086
 ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4087
   ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4088
     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4089
       ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4090
       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4091
         ((diffl::(real => real) => real => real => bool) (g::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4092
           (m::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4093
         ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4094
           ((op =::real => real => bool) (g x) (0::real)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4095
     ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4096
       (%x::real. (op /::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4097
       ((op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4098
         ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4099
           ((op *::real => real => real) l (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4100
           ((op *::real => real => real) m (f x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4101
         ((op ^::real => nat => real) (g x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4102
           ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4103
             ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4104
               ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4105
               (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4106
       x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4107
   ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4108
     ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4109
       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4110
         ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4111
         ((diffl::(real => real) => real => real => bool) g m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4112
       ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4113
         (%x::real. (op +::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4114
         ((op +::real => real => real) l m) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4115
     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4116
       ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4117
         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4118
           ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4119
           ((diffl::(real => real) => real => real => bool) g m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4120
         ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4121
           (%x::real. (op *::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4122
           ((op +::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4123
             ((op *::real => real => real) l (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4124
             ((op *::real => real => real) m (f x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4125
           x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4126
       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4127
         ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4128
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4129
             ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4130
             ((diffl::(real => real) => real => real => bool) g m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4131
           ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4132
             (%x::real. (op -::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4133
             ((op -::real => real => real) l m) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4134
         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4135
           ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4136
             ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4137
             ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4138
               (%x::real. (uminus::real => real) (f x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4139
               ((uminus::real => real) l) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4140
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4141
             ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4142
               ((diffl::(real => real) => real => real => bool) g m x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4143
               ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4144
                 (%x::real. (op ^::real => nat => real) (g x) (n::nat))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4145
                 ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4146
                   ((op *::real => real => real) ((real::nat => real) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4147
                     ((op ^::real => nat => real) (g x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4148
                       ((op -::nat => nat => nat) n (1::nat))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4149
                   m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4150
                 x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4151
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4152
               ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4153
                 ((diffl::(real => real) => real => real => bool) g m x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4154
                 ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4155
                   (%x::real. (exp::real => real) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4156
                   ((op *::real => real => real) ((exp::real => real) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4157
                     m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4158
                   x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4159
               ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4160
                 ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4161
                   ((diffl::(real => real) => real => real => bool) g m x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4162
                   ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4163
                     (%x::real. (sin::real => real) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4164
                     ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4165
                       ((cos::real => real) (g x)) m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4166
                     x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4167
                 ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4168
                   ((diffl::(real => real) => real => real => bool) g m x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4169
                   ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4170
                     (%x::real. (cos::real => real) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4171
                     ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4172
                       ((uminus::real => real) ((sin::real => real) (g x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4173
                       m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4174
                     x))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4175
  by (import transc DIFF_COMPOSITE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4176
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4177
lemma EXP_0: "exp 0 = 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4178
  by (import transc EXP_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4179
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4180
lemma EXP_LE_X: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4181
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4182
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4183
      ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4184
      ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4185
        ((op +::real => real => real) (1::real) x) ((exp::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4186
  by (import transc EXP_LE_X)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4187
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4188
lemma EXP_LT_1: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4189
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4190
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4191
      ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4192
      ((op <::real => real => bool) (1::real) ((exp::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4193
  by (import transc EXP_LT_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4194
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4195
lemma EXP_ADD_MUL: "ALL x y. exp (x + y) * exp (- x) = exp y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4196
  by (import transc EXP_ADD_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4197
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4198
lemma EXP_NEG_MUL: "ALL x. exp x * exp (- x) = 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4199
  by (import transc EXP_NEG_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4200
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4201
lemma EXP_NEG_MUL2: "ALL x. exp (- x) * exp x = 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4202
  by (import transc EXP_NEG_MUL2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4203
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4204
lemma EXP_NEG: "ALL x. exp (- x) = inverse (exp x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4205
  by (import transc EXP_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4206
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4207
lemma EXP_ADD: "ALL x y. exp (x + y) = exp x * exp y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4208
  by (import transc EXP_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4209
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4210
lemma EXP_POS_LE: "ALL x. 0 <= exp x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4211
  by (import transc EXP_POS_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4212
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4213
lemma EXP_NZ: "ALL x. exp x ~= 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4214
  by (import transc EXP_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4215
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4216
lemma EXP_POS_LT: "ALL x. 0 < exp x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4217
  by (import transc EXP_POS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4218
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4219
lemma EXP_N: "ALL n x. exp (real n * x) = exp x ^ n"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4220
  by (import transc EXP_N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4221
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4222
lemma EXP_SUB: "ALL x y. exp (x - y) = exp x / exp y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4223
  by (import transc EXP_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4224
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4225
lemma EXP_MONO_IMP: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4226
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4227
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4228
      (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4229
          (op -->::bool => bool => bool) ((op <::real => real => bool) x y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4230
           ((op <::real => real => bool) ((exp::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4231
             ((exp::real => real) y))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4232
  by (import transc EXP_MONO_IMP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4233
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4234
lemma EXP_MONO_LT: "ALL x y. (exp x < exp y) = (x < y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4235
  by (import transc EXP_MONO_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4236
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4237
lemma EXP_MONO_LE: "ALL x y. (exp x <= exp y) = (x <= y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4238
  by (import transc EXP_MONO_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4239
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4240
lemma EXP_INJ: "ALL x y. (exp x = exp y) = (x = y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4241
  by (import transc EXP_INJ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4242
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4243
lemma EXP_TOTAL_LEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4244
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4245
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4246
      ((op <=::real => real => bool) (1::real) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4247
      ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4248
        (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4249
            (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4250
             ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4251
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4252
               ((op <=::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4253
                 ((op -::real => real => real) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4254
               ((op =::real => real => bool) ((exp::real => real) x) y)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4255
  by (import transc EXP_TOTAL_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4256
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4257
lemma EXP_TOTAL: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4258
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4259
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4260
      ((op <::real => real => bool) (0::real) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4261
      ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4262
        (%x::real. (op =::real => real => bool) ((exp::real => real) x) y)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4263
  by (import transc EXP_TOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4264
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4265
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4266
  ln :: "real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4267
  "ln == %x. SOME u. exp u = x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4268
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4269
lemma ln: "ALL x. ln x = (SOME u. exp u = x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4270
  by (import transc ln)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4271
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4272
lemma LN_EXP: "ALL x. ln (exp x) = x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4273
  by (import transc LN_EXP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4274
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4275
lemma EXP_LN: "ALL x. (exp (ln x) = x) = (0 < x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4276
  by (import transc EXP_LN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4277
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4278
lemma LN_MUL: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4279
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4280
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4281
      (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4282
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4283
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4284
             ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4285
             ((op <::real => real => bool) (0::real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4286
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4287
             ((ln::real => real) ((op *::real => real => real) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4288
             ((op +::real => real => real) ((ln::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4289
               ((ln::real => real) y)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4290
  by (import transc LN_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4291
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4292
lemma LN_INJ: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4293
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4294
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4295
      (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4296
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4297
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4298
             ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4299
             ((op <::real => real => bool) (0::real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4300
           ((op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4301
             ((op =::real => real => bool) ((ln::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4302
               ((ln::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4303
             ((op =::real => real => bool) x y))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4304
  by (import transc LN_INJ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4305
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4306
lemma LN_1: "ln 1 = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4307
  by (import transc LN_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4308
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4309
lemma LN_INV: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4310
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4311
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4312
      ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4313
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4314
        ((ln::real => real) ((inverse::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4315
        ((uminus::real => real) ((ln::real => real) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4316
  by (import transc LN_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4317
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4318
lemma LN_DIV: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4319
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4320
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4321
      (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4322
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4323
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4324
             ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4325
             ((op <::real => real => bool) (0::real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4326
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4327
             ((ln::real => real) ((op /::real => real => real) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4328
             ((op -::real => real => real) ((ln::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4329
               ((ln::real => real) y)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4330
  by (import transc LN_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4331
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4332
lemma LN_MONO_LT: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4333
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4334
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4335
      (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4336
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4337
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4338
             ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4339
             ((op <::real => real => bool) (0::real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4340
           ((op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4341
             ((op <::real => real => bool) ((ln::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4342
               ((ln::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4343
             ((op <::real => real => bool) x y))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4344
  by (import transc LN_MONO_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4345
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4346
lemma LN_MONO_LE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4347
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4348
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4349
      (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4350
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4351
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4352
             ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4353
             ((op <::real => real => bool) (0::real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4354
           ((op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4355
             ((op <=::real => real => bool) ((ln::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4356
               ((ln::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4357
             ((op <=::real => real => bool) x y))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4358
  by (import transc LN_MONO_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4359
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4360
lemma LN_POW: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4361
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4362
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4363
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4364
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4365
           ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4366
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4367
             ((ln::real => real) ((op ^::real => nat => real) x n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4368
             ((op *::real => real => real) ((real::nat => real) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4369
               ((ln::real => real) x)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4370
  by (import transc LN_POW)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4371
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4372
lemma LN_LE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4373
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4374
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4375
      ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4376
      ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4377
        ((ln::real => real) ((op +::real => real => real) (1::real) x)) x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4378
  by (import transc LN_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4379
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4380
lemma LN_LT_X: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4381
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4382
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4383
      ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4384
      ((op <::real => real => bool) ((ln::real => real) x) x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4385
  by (import transc LN_LT_X)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4386
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4387
lemma LN_POS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4388
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4389
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4390
      ((op <=::real => real => bool) (1::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4391
      ((op <=::real => real => bool) (0::real) ((ln::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4392
  by (import transc LN_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4393
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4394
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4395
  root :: "nat => real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4396
  "(op ==::(nat => real => real) => (nat => real => real) => prop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4397
 (root::nat => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4398
 (%(n::nat) x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4399
     (Eps::(real => bool) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4400
      (%u::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4401
          (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4402
           ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4403
             ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4404
             ((op <::real => real => bool) (0::real) u))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4405
           ((op =::real => real => bool) ((op ^::real => nat => real) u n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4406
             x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4407
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4408
lemma root: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4409
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4410
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4411
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4412
          (op =::real => real => bool) ((root::nat => real => real) n x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4413
           ((Eps::(real => bool) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4414
             (%u::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4415
                 (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4416
                  ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4417
                    ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4418
                    ((op <::real => real => bool) (0::real) u))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4419
                  ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4420
                    ((op ^::real => nat => real) u n) x)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4421
  by (import transc root)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4422
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4423
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4424
  sqrt :: "real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4425
  "sqrt == root 2"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4426
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4427
lemma sqrt: "ALL x. sqrt x = root 2 x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4428
  by (import transc sqrt)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4429
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4430
lemma ROOT_LT_LEMMA: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4431
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4432
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4433
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4434
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4435
           ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4436
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4437
             ((op ^::real => nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4438
               ((exp::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4439
                 ((op /::real => real => real) ((ln::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4440
                   ((real::nat => real) ((Suc::nat => nat) n))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4441
               ((Suc::nat => nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4442
             x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4443
  by (import transc ROOT_LT_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4444
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4445
lemma ROOT_LN: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4446
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4447
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4448
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4449
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4450
           ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4451
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4452
             ((root::nat => real => real) ((Suc::nat => nat) n) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4453
             ((exp::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4454
               ((op /::real => real => real) ((ln::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4455
                 ((real::nat => real) ((Suc::nat => nat) n)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4456
  by (import transc ROOT_LN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4457
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4458
lemma ROOT_0: "ALL n. root (Suc n) 0 = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4459
  by (import transc ROOT_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4460
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4461
lemma ROOT_1: "ALL n. root (Suc n) 1 = 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4462
  by (import transc ROOT_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4463
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4464
lemma ROOT_POS_LT: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4465
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4466
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4467
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4468
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4469
           ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4470
           ((op <::real => real => bool) (0::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4471
             ((root::nat => real => real) ((Suc::nat => nat) n) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4472
  by (import transc ROOT_POS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4473
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4474
lemma ROOT_POW_POS: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4475
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4476
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4477
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4478
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4479
           ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4480
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4481
             ((op ^::real => nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4482
               ((root::nat => real => real) ((Suc::nat => nat) n) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4483
               ((Suc::nat => nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4484
             x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4485
  by (import transc ROOT_POW_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4486
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4487
lemma POW_ROOT_POS: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4488
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4489
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4490
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4491
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4492
           ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4493
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4494
             ((root::nat => real => real) ((Suc::nat => nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4495
               ((op ^::real => nat => real) x ((Suc::nat => nat) n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4496
             x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4497
  by (import transc POW_ROOT_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4498
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4499
lemma ROOT_POS: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4500
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4501
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4502
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4503
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4504
           ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4505
           ((op <=::real => real => bool) (0::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4506
             ((root::nat => real => real) ((Suc::nat => nat) n) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4507
  by (import transc ROOT_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4508
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4509
lemma ROOT_POS_UNIQ: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4510
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4511
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4512
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4513
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4514
           (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4515
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4516
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4517
                  ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4518
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4519
                    ((op <=::real => real => bool) (0::real) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4520
                    ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4521
                      ((op ^::real => nat => real) y ((Suc::nat => nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4522
                      x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4523
                ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4524
                  ((root::nat => real => real) ((Suc::nat => nat) n) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4525
                  y))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4526
  by (import transc ROOT_POS_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4527
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4528
lemma ROOT_MUL: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4529
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4530
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4531
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4532
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4533
           (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4534
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4535
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4536
                  ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4537
                  ((op <=::real => real => bool) (0::real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4538
                ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4539
                  ((root::nat => real => real) ((Suc::nat => nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4540
                    ((op *::real => real => real) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4541
                  ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4542
                    ((root::nat => real => real) ((Suc::nat => nat) n) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4543
                    ((root::nat => real => real) ((Suc::nat => nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4544
                      y))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4545
  by (import transc ROOT_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4546
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4547
lemma ROOT_INV: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4548
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4549
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4550
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4551
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4552
           ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4553
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4554
             ((root::nat => real => real) ((Suc::nat => nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4555
               ((inverse::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4556
             ((inverse::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4557
               ((root::nat => real => real) ((Suc::nat => nat) n) x)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4558
  by (import transc ROOT_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4559
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4560
lemma ROOT_DIV: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4561
 (%x::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4562
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4563
      (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4564
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4565
           (%xb::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4566
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4567
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4568
                  ((op <=::real => real => bool) (0::real) xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4569
                  ((op <=::real => real => bool) (0::real) xb))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4570
                ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4571
                  ((root::nat => real => real) ((Suc::nat => nat) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4572
                    ((op /::real => real => real) xa xb))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4573
                  ((op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4574
                    ((root::nat => real => real) ((Suc::nat => nat) x) xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4575
                    ((root::nat => real => real) ((Suc::nat => nat) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4576
                      xb))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4577
  by (import transc ROOT_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4578
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4579
lemma ROOT_MONO_LE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4580
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4581
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4582
      (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4583
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4584
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4585
             ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4586
             ((op <=::real => real => bool) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4587
           ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4588
             ((root::nat => real => real) ((Suc::nat => nat) (n::nat)) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4589
             ((root::nat => real => real) ((Suc::nat => nat) n) y))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4590
  by (import transc ROOT_MONO_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4591
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4592
lemma SQRT_0: "sqrt 0 = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4593
  by (import transc SQRT_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4594
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4595
lemma SQRT_1: "sqrt 1 = 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4596
  by (import transc SQRT_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4597
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4598
lemma SQRT_POS_LT: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4599
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4600
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4601
      ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4602
      ((op <::real => real => bool) (0::real) ((sqrt::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4603
  by (import transc SQRT_POS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4604
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4605
lemma SQRT_POS_LE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4606
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4607
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4608
      ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4609
      ((op <=::real => real => bool) (0::real) ((sqrt::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4610
  by (import transc SQRT_POS_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4611
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4612
lemma SQRT_POW2: "ALL x. (sqrt x ^ 2 = x) = (0 <= x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4613
  by (import transc SQRT_POW2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4614
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4615
lemma SQRT_POW_2: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4616
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4617
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4618
      ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4619
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4620
        ((op ^::real => nat => real) ((sqrt::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4621
          ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4622
            ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4623
              ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4624
              (False::bool))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4625
        x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4626
  by (import transc SQRT_POW_2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4627
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4628
lemma POW_2_SQRT: "(op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4629
 ((op <=::real => real => bool) (0::real) (x::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4630
 ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4631
   ((sqrt::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4632
     ((op ^::real => nat => real) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4633
       ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4634
         ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4635
           ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4636
           (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4637
   x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4638
  by (import transc POW_2_SQRT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4639
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4640
lemma SQRT_POS_UNIQ: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4641
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4642
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4643
      (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4644
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4645
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4646
             ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4647
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4648
               ((op <=::real => real => bool) (0::real) xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4649
               ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4650
                 ((op ^::real => nat => real) xa
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4651
                   ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4652
                     ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4653
                       ((op BIT::bin => bool => bin) (bin.Pls::bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4654
                         (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4655
                       (False::bool))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4656
                 x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4657
           ((op =::real => real => bool) ((sqrt::real => real) x) xa)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4658
  by (import transc SQRT_POS_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4659
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4660
lemma SQRT_MUL: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4661
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4662
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4663
      (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4664
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4665
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4666
             ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4667
             ((op <=::real => real => bool) (0::real) xa))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4668
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4669
             ((sqrt::real => real) ((op *::real => real => real) x xa))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4670
             ((op *::real => real => real) ((sqrt::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4671
               ((sqrt::real => real) xa)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4672
  by (import transc SQRT_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4673
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4674
lemma SQRT_INV: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4675
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4676
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4677
      ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4678
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4679
        ((sqrt::real => real) ((inverse::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4680
        ((inverse::real => real) ((sqrt::real => real) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4681
  by (import transc SQRT_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4682
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4683
lemma SQRT_DIV: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4684
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4685
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4686
      (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4687
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4688
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4689
             ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4690
             ((op <=::real => real => bool) (0::real) xa))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4691
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4692
             ((sqrt::real => real) ((op /::real => real => real) x xa))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4693
             ((op /::real => real => real) ((sqrt::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4694
               ((sqrt::real => real) xa)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4695
  by (import transc SQRT_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4696
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4697
lemma SQRT_MONO_LE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4698
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4699
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4700
      (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4701
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4702
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4703
             ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4704
             ((op <=::real => real => bool) x xa))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4705
           ((op <=::real => real => bool) ((sqrt::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4706
             ((sqrt::real => real) xa))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4707
  by (import transc SQRT_MONO_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4708
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4709
lemma SQRT_EVEN_POW2: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4710
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4711
     (op -->::bool => bool => bool) ((EVEN::nat => bool) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4712
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4713
        ((sqrt::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4714
          ((op ^::real => nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4715
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4716
              ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4717
                ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4718
                (False::bool)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4719
            n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4720
        ((op ^::real => nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4721
          ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4722
            ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4723
              ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4724
              (False::bool)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4725
          ((op div::nat => nat => nat) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4726
            ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4727
              ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4728
                ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4729
                (False::bool)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4730
  by (import transc SQRT_EVEN_POW2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4731
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4732
lemma REAL_DIV_SQRT: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4733
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4734
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4735
      ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4736
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4737
        ((op /::real => real => real) x ((sqrt::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4738
        ((sqrt::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4739
  by (import transc REAL_DIV_SQRT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4740
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4741
lemma SQRT_EQ: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4742
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4743
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4744
      (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4745
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4746
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4747
             ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4748
               ((op ^::real => nat => real) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4749
                 ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4750
                   ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4751
                     ((op BIT::bin => bool => bin) (bin.Pls::bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4752
                       (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4753
                     (False::bool))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4754
               y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4755
             ((op <=::real => real => bool) (0::real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4756
           ((op =::real => real => bool) x ((sqrt::real => real) y))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4757
  by (import transc SQRT_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4758
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4759
lemma SIN_0: "sin 0 = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4760
  by (import transc SIN_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4761
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4762
lemma COS_0: "cos 0 = 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4763
  by (import transc COS_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4764
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4765
lemma SIN_CIRCLE: "ALL x. sin x ^ 2 + cos x ^ 2 = 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4766
  by (import transc SIN_CIRCLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4767
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4768
lemma SIN_BOUND: "ALL x. abs (sin x) <= 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4769
  by (import transc SIN_BOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4770
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4771
lemma SIN_BOUNDS: "ALL x. - 1 <= sin x & sin x <= 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4772
  by (import transc SIN_BOUNDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4773
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4774
lemma COS_BOUND: "ALL x. abs (cos x) <= 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4775
  by (import transc COS_BOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4776
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4777
lemma COS_BOUNDS: "ALL x. - 1 <= cos x & cos x <= 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4778
  by (import transc COS_BOUNDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4779
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4780
lemma SIN_COS_ADD: "ALL x y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4781
   (sin (x + y) - (sin x * cos y + cos x * sin y)) ^ 2 +
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4782
   (cos (x + y) - (cos x * cos y - sin x * sin y)) ^ 2 =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4783
   0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4784
  by (import transc SIN_COS_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4785
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4786
lemma SIN_COS_NEG: "ALL x. (sin (- x) + sin x) ^ 2 + (cos (- x) - cos x) ^ 2 = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4787
  by (import transc SIN_COS_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4788
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4789
lemma SIN_ADD: "ALL x y. sin (x + y) = sin x * cos y + cos x * sin y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4790
  by (import transc SIN_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4791
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4792
lemma COS_ADD: "ALL x y. cos (x + y) = cos x * cos y - sin x * sin y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4793
  by (import transc COS_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4794
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4795
lemma SIN_NEG: "ALL x. sin (- x) = - sin x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4796
  by (import transc SIN_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4797
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4798
lemma COS_NEG: "ALL x. cos (- x) = cos x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4799
  by (import transc COS_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4800
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4801
lemma SIN_DOUBLE: "ALL x. sin (2 * x) = 2 * (sin x * cos x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4802
  by (import transc SIN_DOUBLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4803
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4804
lemma COS_DOUBLE: "ALL x. cos (2 * x) = cos x ^ 2 - sin x ^ 2"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4805
  by (import transc COS_DOUBLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4806
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4807
lemma SIN_PAIRED: "ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4808
   sums (%n. (- 1) ^ n / real (FACT (2 * n + 1)) * x ^ (2 * n + 1)) (sin x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4809
  by (import transc SIN_PAIRED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4810
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4811
lemma SIN_POS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4812
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4813
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4814
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4815
        ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4816
        ((op <::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4817
          ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4818
            ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4819
              ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4820
              (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4821
      ((op <::real => real => bool) (0::real) ((sin::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4822
  by (import transc SIN_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4823
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4824
lemma COS_PAIRED: "ALL x. sums (%n. (- 1) ^ n / real (FACT (2 * n)) * x ^ (2 * n)) (cos x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4825
  by (import transc COS_PAIRED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4826
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4827
lemma COS_2: "cos 2 < 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4828
  by (import transc COS_2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4829
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4830
lemma COS_ISZERO: "EX! x. 0 <= x & x <= 2 & cos x = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4831
  by (import transc COS_ISZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4832
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4833
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4834
  pi :: "real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4835
  "pi == 2 * (SOME x. 0 <= x & x <= 2 & cos x = 0)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4836
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4837
lemma pi: "pi = 2 * (SOME x. 0 <= x & x <= 2 & cos x = 0)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4838
  by (import transc pi)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4839
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4840
lemma PI2: "pi / 2 = (SOME x. 0 <= x & x <= 2 & cos x = 0)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4841
  by (import transc PI2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4842
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4843
lemma COS_PI2: "cos (pi / 2) = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4844
  by (import transc COS_PI2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4845
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4846
lemma PI2_BOUNDS: "0 < pi / 2 & pi / 2 < 2"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4847
  by (import transc PI2_BOUNDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4848
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4849
lemma PI_POS: "0 < pi"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4850
  by (import transc PI_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4851
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4852
lemma SIN_PI2: "sin (pi / 2) = 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4853
  by (import transc SIN_PI2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4854
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4855
lemma COS_PI: "cos pi = - 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4856
  by (import transc COS_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4857
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4858
lemma SIN_PI: "sin pi = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4859
  by (import transc SIN_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4860
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4861
lemma SIN_COS: "ALL x. sin x = cos (pi / 2 - x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4862
  by (import transc SIN_COS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4863
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4864
lemma COS_SIN: "ALL x. cos x = sin (pi / 2 - x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4865
  by (import transc COS_SIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4866
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4867
lemma SIN_PERIODIC_PI: "ALL x. sin (x + pi) = - sin x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4868
  by (import transc SIN_PERIODIC_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4869
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4870
lemma COS_PERIODIC_PI: "ALL x. cos (x + pi) = - cos x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4871
  by (import transc COS_PERIODIC_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4872
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4873
lemma SIN_PERIODIC: "ALL x. sin (x + 2 * pi) = sin x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4874
  by (import transc SIN_PERIODIC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4875
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4876
lemma COS_PERIODIC: "ALL x. cos (x + 2 * pi) = cos x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4877
  by (import transc COS_PERIODIC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4878
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4879
lemma COS_NPI: "ALL n. cos (real n * pi) = (- 1) ^ n"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4880
  by (import transc COS_NPI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4881
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4882
lemma SIN_NPI: "ALL n::nat. sin (real n * pi) = (0::real)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4883
  by (import transc SIN_NPI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4884
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4885
lemma SIN_POS_PI2: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4886
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4887
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4888
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4889
        ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4890
        ((op <::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4891
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4892
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4893
              ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4894
                ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4895
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4896
      ((op <::real => real => bool) (0::real) ((sin::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4897
  by (import transc SIN_POS_PI2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4898
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4899
lemma COS_POS_PI2: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4900
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4901
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4902
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4903
        ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4904
        ((op <::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4905
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4906
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4907
              ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4908
                ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4909
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4910
      ((op <::real => real => bool) (0::real) ((cos::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4911
  by (import transc COS_POS_PI2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4912
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4913
lemma COS_POS_PI: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4914
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4915
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4916
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4917
        ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4918
          ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4919
            ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4920
              ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4921
                ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4922
                  ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4923
                  (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4924
          x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4925
        ((op <::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4926
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4927
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4928
              ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4929
                ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4930
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4931
      ((op <::real => real => bool) (0::real) ((cos::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4932
  by (import transc COS_POS_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4933
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4934
lemma SIN_POS_PI: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4935
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4936
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4937
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4938
        ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4939
        ((op <::real => real => bool) x (pi::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4940
      ((op <::real => real => bool) (0::real) ((sin::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4941
  by (import transc SIN_POS_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4942
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4943
lemma COS_POS_PI2_LE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4944
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4945
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4946
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4947
        ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4948
        ((op <=::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4949
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4950
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4951
              ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4952
                ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4953
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4954
      ((op <=::real => real => bool) (0::real) ((cos::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4955
  by (import transc COS_POS_PI2_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4956
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4957
lemma COS_POS_PI_LE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4958
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4959
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4960
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4961
        ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4962
          ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4963
            ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4964
              ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4965
                ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4966
                  ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4967
                  (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4968
          x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4969
        ((op <=::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4970
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4971
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4972
              ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4973
                ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4974
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4975
      ((op <=::real => real => bool) (0::real) ((cos::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4976
  by (import transc COS_POS_PI_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4977
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4978
lemma SIN_POS_PI2_LE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4979
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4980
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4981
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4982
        ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4983
        ((op <=::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4984
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4985
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4986
              ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4987
                ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4988
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4989
      ((op <=::real => real => bool) (0::real) ((sin::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4990
  by (import transc SIN_POS_PI2_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4991
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4992
lemma SIN_POS_PI_LE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4993
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4994
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4995
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4996
        ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4997
        ((op <=::real => real => bool) x (pi::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4998
      ((op <=::real => real => bool) (0::real) ((sin::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4999
  by (import transc SIN_POS_PI_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5000
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5001
lemma COS_TOTAL: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5002
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5003
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5004
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5005
        ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5006
        ((op <=::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5007
      ((Ex1::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5008
        (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5009
            (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5010
             ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5011
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5012
               ((op <=::real => real => bool) x (pi::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5013
               ((op =::real => real => bool) ((cos::real => real) x) y)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5014
  by (import transc COS_TOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5015
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5016
lemma SIN_TOTAL: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5017
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5018
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5019
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5020
        ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5021
        ((op <=::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5022
      ((Ex1::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5023
        (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5024
            (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5025
             ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5026
               ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5027
                 ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5028
                   ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5029
                     ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5030
                       ((op BIT::bin => bool => bin) (bin.Pls::bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5031
                         (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5032
                       (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5033
               x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5034
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5035
               ((op <=::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5036
                 ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5037
                   ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5038
                     ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5039
                       ((op BIT::bin => bool => bin) (bin.Pls::bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5040
                         (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5041
                       (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5042
               ((op =::real => real => bool) ((sin::real => real) x) y)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5043
  by (import transc SIN_TOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5044
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5045
lemma COS_ZERO_LEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5046
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5047
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5048
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5049
        ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5050
        ((op =::real => real => bool) ((cos::real => real) x) (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5051
      ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5052
        (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5053
            (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5054
             ((Not::bool => bool) ((EVEN::nat => bool) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5055
             ((op =::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5056
               ((op *::real => real => real) ((real::nat => real) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5057
                 ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5058
                   ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5059
                     ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5060
                       ((op BIT::bin => bool => bin) (bin.Pls::bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5061
                         (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5062
                       (False::bool)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5063
  by (import transc COS_ZERO_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5064
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5065
lemma SIN_ZERO_LEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5066
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5067
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5068
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5069
        ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5070
        ((op =::real => real => bool) ((sin::real => real) x) (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5071
      ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5072
        (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5073
            (op &::bool => bool => bool) ((EVEN::nat => bool) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5074
             ((op =::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5075
               ((op *::real => real => real) ((real::nat => real) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5076
                 ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5077
                   ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5078
                     ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5079
                       ((op BIT::bin => bool => bin) (bin.Pls::bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5080
                         (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5081
                       (False::bool)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5082
  by (import transc SIN_ZERO_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5083
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5084
lemma COS_ZERO: "ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5085
   (cos x = 0) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5086
   ((EX n. ~ EVEN n & x = real n * (pi / 2)) |
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5087
    (EX n. ~ EVEN n & x = - (real n * (pi / 2))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5088
  by (import transc COS_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5089
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5090
lemma SIN_ZERO: "ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5091
   (sin x = 0) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5092
   ((EX n. EVEN n & x = real n * (pi / 2)) |
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5093
    (EX n. EVEN n & x = - (real n * (pi / 2))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5094
  by (import transc SIN_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5095
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5096
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5097
  tan :: "real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5098
  "tan == %x. sin x / cos x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5099
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5100
lemma tan: "ALL x. tan x = sin x / cos x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5101
  by (import transc tan)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5102
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5103
lemma TAN_0: "tan 0 = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5104
  by (import transc TAN_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5105
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5106
lemma TAN_PI: "tan pi = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5107
  by (import transc TAN_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5108
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5109
lemma TAN_NPI: "ALL n::nat. tan (real n * pi) = (0::real)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5110
  by (import transc TAN_NPI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5111
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5112
lemma TAN_NEG: "ALL x. tan (- x) = - tan x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5113
  by (import transc TAN_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5114
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5115
lemma TAN_PERIODIC: "ALL x. tan (x + 2 * pi) = tan x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5116
  by (import transc TAN_PERIODIC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5117
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5118
lemma TAN_ADD: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5119
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5120
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5121
      (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5122
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5123
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5124
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5125
               ((op =::real => real => bool) ((cos::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5126
                 (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5127
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5128
               ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5129
                 ((op =::real => real => bool) ((cos::real => real) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5130
                   (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5131
               ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5132
                 ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5133
                   ((cos::real => real) ((op +::real => real => real) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5134
                   (0::real)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5135
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5136
             ((tan::real => real) ((op +::real => real => real) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5137
             ((op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5138
               ((op +::real => real => real) ((tan::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5139
                 ((tan::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5140
               ((op -::real => real => real) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5141
                 ((op *::real => real => real) ((tan::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5142
                   ((tan::real => real) y)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5143
  by (import transc TAN_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5144
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5145
lemma TAN_DOUBLE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5146
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5147
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5148
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5149
        ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5150
          ((op =::real => real => bool) ((cos::real => real) x) (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5151
        ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5152
          ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5153
            ((cos::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5154
              ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5155
                ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5156
                  ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5157
                    ((op BIT::bin => bool => bin) (bin.Pls::bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5158
                      (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5159
                    (False::bool)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5160
                x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5161
            (0::real))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5162
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5163
        ((tan::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5164
          ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5165
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5166
              ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5167
                ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5168
                (False::bool)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5169
            x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5170
        ((op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5171
          ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5172
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5173
              ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5174
                ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5175
                (False::bool)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5176
            ((tan::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5177
          ((op -::real => real => real) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5178
            ((op ^::real => nat => real) ((tan::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5179
              ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5180
                ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5181
                  ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5182
                  (False::bool))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5183
  by (import transc TAN_DOUBLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5184
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5185
lemma TAN_POS_PI2: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5186
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5187
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5188
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5189
        ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5190
        ((op <::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5191
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5192
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5193
              ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5194
                ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5195
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5196
      ((op <::real => real => bool) (0::real) ((tan::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5197
  by (import transc TAN_POS_PI2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5198
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5199
lemma DIFF_TAN: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5200
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5201
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5202
      ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5203
        ((op =::real => real => bool) ((cos::real => real) x) (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5204
      ((diffl::(real => real) => real => real => bool) (tan::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5205
        ((inverse::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5206
          ((op ^::real => nat => real) ((cos::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5207
            ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5208
              ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5209
                ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5210
                (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5211
        x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5212
  by (import transc DIFF_TAN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5213
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5214
lemma TAN_TOTAL_LEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5215
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5216
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5217
      ((op <::real => real => bool) (0::real) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5218
      ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5219
        (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5220
            (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5221
             ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5222
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5223
               ((op <::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5224
                 ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5225
                   ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5226
                     ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5227
                       ((op BIT::bin => bool => bin) (bin.Pls::bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5228
                         (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5229
                       (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5230
               ((op <::real => real => bool) y ((tan::real => real) x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5231
  by (import transc TAN_TOTAL_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5232
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5233
lemma TAN_TOTAL_POS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5234
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5235
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5236
      ((op <=::real => real => bool) (0::real) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5237
      ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5238
        (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5239
            (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5240
             ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5241
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5242
               ((op <::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5243
                 ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5244
                   ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5245
                     ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5246
                       ((op BIT::bin => bool => bin) (bin.Pls::bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5247
                         (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5248
                       (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5249
               ((op =::real => real => bool) ((tan::real => real) x) y)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5250
  by (import transc TAN_TOTAL_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5251
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5252
lemma TAN_TOTAL: "ALL y. EX! x. - (pi / 2) < x & x < pi / 2 & tan x = y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5253
  by (import transc TAN_TOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5254
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5255
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5256
  asn :: "real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5257
  "asn == %y. SOME x. - (pi / 2) <= x & x <= pi / 2 & sin x = y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5258
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5259
lemma asn: "ALL y. asn y = (SOME x. - (pi / 2) <= x & x <= pi / 2 & sin x = y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5260
  by (import transc asn)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5261
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5262
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5263
  acs :: "real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5264
  "acs == %y. SOME x. 0 <= x & x <= pi & cos x = y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5265
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5266
lemma acs: "ALL y. acs y = (SOME x. 0 <= x & x <= pi & cos x = y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5267
  by (import transc acs)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5268
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5269
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5270
  atn :: "real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5271
  "atn == %y. SOME x. - (pi / 2) < x & x < pi / 2 & tan x = y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5272
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5273
lemma atn: "ALL y. atn y = (SOME x. - (pi / 2) < x & x < pi / 2 & tan x = y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5274
  by (import transc atn)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5275
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5276
lemma ASN: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5277
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5278
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5279
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5280
        ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5281
        ((op <=::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5282
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5283
        ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5284
          ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5285
            ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5286
              ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5287
                ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5288
                  ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5289
                  (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5290
          ((asn::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5291
        ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5292
          ((op <=::real => real => bool) ((asn::real => real) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5293
            ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5294
              ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5295
                ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5296
                  ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5297
                  (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5298
          ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5299
            ((sin::real => real) ((asn::real => real) y)) y))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5300
  by (import transc ASN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5301
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5302
lemma ASN_SIN: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5303
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5304
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5305
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5306
        ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5307
        ((op <=::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5308
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5309
        ((sin::real => real) ((asn::real => real) y)) y))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5310
  by (import transc ASN_SIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5311
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5312
lemma ASN_BOUNDS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5313
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5314
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5315
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5316
        ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5317
        ((op <=::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5318
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5319
        ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5320
          ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5321
            ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5322
              ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5323
                ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5324
                  ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5325
                  (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5326
          ((asn::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5327
        ((op <=::real => real => bool) ((asn::real => real) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5328
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5329
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5330
              ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5331
                ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5332
                (False::bool)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5333
  by (import transc ASN_BOUNDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5334
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5335
lemma ASN_BOUNDS_LT: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5336
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5337
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5338
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5339
        ((op <::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5340
        ((op <::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5341
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5342
        ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5343
          ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5344
            ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5345
              ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5346
                ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5347
                  ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5348
                  (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5349
          ((asn::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5350
        ((op <::real => real => bool) ((asn::real => real) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5351
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5352
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5353
              ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5354
                ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5355
                (False::bool)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5356
  by (import transc ASN_BOUNDS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5357
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5358
lemma SIN_ASN: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5359
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5360
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5361
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5362
        ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5363
          ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5364
            ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5365
              ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5366
                ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5367
                  ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5368
                  (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5369
          x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5370
        ((op <=::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5371
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5372
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5373
              ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5374
                ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5375
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5376
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5377
        ((asn::real => real) ((sin::real => real) x)) x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5378
  by (import transc SIN_ASN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5379
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5380
lemma ACS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5381
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5382
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5383
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5384
        ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5385
        ((op <=::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5386
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5387
        ((op <=::real => real => bool) (0::real) ((acs::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5388
        ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5389
          ((op <=::real => real => bool) ((acs::real => real) y) (pi::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5390
          ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5391
            ((cos::real => real) ((acs::real => real) y)) y))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5392
  by (import transc ACS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5393
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5394
lemma ACS_COS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5395
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5396
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5397
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5398
        ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5399
        ((op <=::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5400
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5401
        ((cos::real => real) ((acs::real => real) y)) y))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5402
  by (import transc ACS_COS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5403
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5404
lemma ACS_BOUNDS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5405
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5406
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5407
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5408
        ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5409
        ((op <=::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5410
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5411
        ((op <=::real => real => bool) (0::real) ((acs::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5412
        ((op <=::real => real => bool) ((acs::real => real) y) (pi::real))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5413
  by (import transc ACS_BOUNDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5414
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5415
lemma ACS_BOUNDS_LT: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5416
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5417
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5418
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5419
        ((op <::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5420
        ((op <::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5421
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5422
        ((op <::real => real => bool) (0::real) ((acs::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5423
        ((op <::real => real => bool) ((acs::real => real) y) (pi::real))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5424
  by (import transc ACS_BOUNDS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5425
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5426
lemma COS_ACS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5427
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5428
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5429
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5430
        ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5431
        ((op <=::real => real => bool) x (pi::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5432
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5433
        ((acs::real => real) ((cos::real => real) x)) x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5434
  by (import transc COS_ACS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5435
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5436
lemma ATN: "ALL y. - (pi / 2) < atn y & atn y < pi / 2 & tan (atn y) = y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5437
  by (import transc ATN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5438
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5439
lemma ATN_TAN: "ALL x. tan (atn x) = x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5440
  by (import transc ATN_TAN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5441
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5442
lemma ATN_BOUNDS: "ALL x. - (pi / 2) < atn x & atn x < pi / 2"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5443
  by (import transc ATN_BOUNDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5444
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5445
lemma TAN_ATN: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5446
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5447
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5448
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5449
        ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5450
          ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5451
            ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5452
              ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5453
                ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5454
                  ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5455
                  (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5456
          x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5457
        ((op <::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5458
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5459
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5460
              ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5461
                ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5462
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5463
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5464
        ((atn::real => real) ((tan::real => real) x)) x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5465
  by (import transc TAN_ATN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5466
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5467
lemma TAN_SEC: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5468
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5469
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5470
      ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5471
        ((op =::real => real => bool) ((cos::real => real) x) (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5472
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5473
        ((op +::real => real => real) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5474
          ((op ^::real => nat => real) ((tan::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5475
            ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5476
              ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5477
                ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5478
                (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5479
        ((op ^::real => nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5480
          ((inverse::real => real) ((cos::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5481
          ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5482
            ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5483
              ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5484
              (False::bool))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5485
  by (import transc TAN_SEC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5486
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5487
lemma SIN_COS_SQ: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5488
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5489
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5490
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5491
        ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5492
        ((op <=::real => real => bool) x (pi::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5493
      ((op =::real => real => bool) ((sin::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5494
        ((sqrt::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5495
          ((op -::real => real => real) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5496
            ((op ^::real => nat => real) ((cos::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5497
              ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5498
                ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5499
                  ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5500
                  (False::bool))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5501
  by (import transc SIN_COS_SQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5502
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5503
lemma COS_SIN_SQ: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5504
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5505
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5506
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5507
        ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5508
          ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5509
            ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5510
              ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5511
                ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5512
                  ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5513
                  (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5514
          x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5515
        ((op <=::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5516
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5517
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5518
              ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5519
                ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5520
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5521
      ((op =::real => real => bool) ((cos::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5522
        ((sqrt::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5523
          ((op -::real => real => real) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5524
            ((op ^::real => nat => real) ((sin::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5525
              ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5526
                ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5527
                  ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5528
                  (False::bool))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5529
  by (import transc COS_SIN_SQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5530
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5531
lemma COS_ATN_NZ: "ALL x. cos (atn x) ~= 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5532
  by (import transc COS_ATN_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5533
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5534
lemma COS_ASN_NZ: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5535
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5536
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5537
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5538
        ((op <::real => real => bool) ((uminus::real => real) (1::real)) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5539
        ((op <::real => real => bool) x (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5540
      ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5541
        ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5542
          ((cos::real => real) ((asn::real => real) x)) (0::real))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5543
  by (import transc COS_ASN_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5544
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5545
lemma SIN_ACS_NZ: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5546
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5547
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5548
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5549
        ((op <::real => real => bool) ((uminus::real => real) (1::real)) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5550
        ((op <::real => real => bool) x (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5551
      ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5552
        ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5553
          ((sin::real => real) ((acs::real => real) x)) (0::real))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5554
  by (import transc SIN_ACS_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5555
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5556
lemma COS_SIN_SQRT: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5557
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5558
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5559
      ((op <=::real => real => bool) (0::real) ((cos::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5560
      ((op =::real => real => bool) ((cos::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5561
        ((sqrt::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5562
          ((op -::real => real => real) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5563
            ((op ^::real => nat => real) ((sin::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5564
              ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5565
                ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5566
                  ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5567
                  (False::bool))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5568
  by (import transc COS_SIN_SQRT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5569
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5570
lemma SIN_COS_SQRT: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5571
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5572
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5573
      ((op <=::real => real => bool) (0::real) ((sin::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5574
      ((op =::real => real => bool) ((sin::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5575
        ((sqrt::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5576
          ((op -::real => real => real) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5577
            ((op ^::real => nat => real) ((cos::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5578
              ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5579
                ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5580
                  ((op BIT::bin => bool => bin) (bin.Pls::bin) (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5581
                  (False::bool))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5582
  by (import transc SIN_COS_SQRT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5583
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5584
lemma DIFF_LN: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5585
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5586
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5587
      ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5588
      ((diffl::(real => real) => real => real => bool) (ln::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5589
        ((inverse::real => real) x) x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5590
  by (import transc DIFF_LN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5591
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5592
lemma DIFF_ASN_LEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5593
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5594
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5595
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5596
        ((op <::real => real => bool) ((uminus::real => real) (1::real)) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5597
        ((op <::real => real => bool) x (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5598
      ((diffl::(real => real) => real => real => bool) (asn::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5599
        ((inverse::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5600
          ((cos::real => real) ((asn::real => real) x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5601
        x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5602
  by (import transc DIFF_ASN_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5603
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5604
lemma DIFF_ASN: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5605
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5606
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5607
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5608
        ((op <::real => real => bool) ((uminus::real => real) (1::real)) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5609
        ((op <::real => real => bool) x (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5610
      ((diffl::(real => real) => real => real => bool) (asn::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5611
        ((inverse::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5612
          ((sqrt::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5613
            ((op -::real => real => real) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5614
              ((op ^::real => nat => real) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5615
                ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5616
                  ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5617
                    ((op BIT::bin => bool => bin) (bin.Pls::bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5618
                      (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5619
                    (False::bool)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5620
        x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5621
  by (import transc DIFF_ASN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5622
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5623
lemma DIFF_ACS_LEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5624
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5625
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5626
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5627
        ((op <::real => real => bool) ((uminus::real => real) (1::real)) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5628
        ((op <::real => real => bool) x (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5629
      ((diffl::(real => real) => real => real => bool) (acs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5630
        ((inverse::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5631
          ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5632
            ((sin::real => real) ((acs::real => real) x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5633
        x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5634
  by (import transc DIFF_ACS_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5635
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5636
lemma DIFF_ACS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5637
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5638
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5639
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5640
        ((op <::real => real => bool) ((uminus::real => real) (1::real)) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5641
        ((op <::real => real => bool) x (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5642
      ((diffl::(real => real) => real => real => bool) (acs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5643
        ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5644
          ((inverse::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5645
            ((sqrt::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5646
              ((op -::real => real => real) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5647
                ((op ^::real => nat => real) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5648
                  ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5649
                    ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5650
                      ((op BIT::bin => bool => bin) (bin.Pls::bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5651
                        (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5652
                      (False::bool))))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5653
        x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5654
  by (import transc DIFF_ACS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5655
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5656
lemma DIFF_ATN: "ALL x. diffl atn (inverse (1 + x ^ 2)) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5657
  by (import transc DIFF_ATN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5658
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5659
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5660
  division :: "real * real => (nat => real) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5661
  "(op ==::(real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5662
        => (real * real => (nat => real) => bool) => prop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5663
 (division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5664
 ((split::(real => real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5665
          => real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5666
   (%(a::real) (b::real) D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5667
       (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5668
        ((op =::real => real => bool) (D (0::nat)) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5669
        ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5670
          (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5671
              (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5672
               ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5673
                 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5674
                     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5675
                      ((op <::nat => nat => bool) n N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5676
                      ((op <::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5677
                        (D ((Suc::nat => nat) n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5678
               ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5679
                 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5680
                     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5681
                      ((op <=::nat => nat => bool) N n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5682
                      ((op =::real => real => bool) (D n) b)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5683
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5684
lemma division: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5685
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5686
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5687
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5688
          (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5689
           (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5690
               (op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5691
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5692
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5693
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5694
                  ((op =::real => real => bool) (D (0::nat)) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5695
                  ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5696
                    (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5697
                        (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5698
                         ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5699
                           (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5700
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5701
                                ((op <::nat => nat => bool) n N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5702
                                ((op <::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5703
                                  (D ((Suc::nat => nat) n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5704
                         ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5705
                           (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5706
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5707
                                ((op <=::nat => nat => bool) N n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5708
                                ((op =::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5709
                                  b)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5710
  by (import transc division)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5711
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5712
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5713
  dsize :: "(nat => real) => nat" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5714
  "(op ==::((nat => real) => nat) => ((nat => real) => nat) => prop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5715
 (dsize::(nat => real) => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5716
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5717
     (Eps::(nat => bool) => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5718
      (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5719
          (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5720
           ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5721
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5722
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5723
                  ((op <::nat => nat => bool) n N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5724
                  ((op <::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5725
                    (D ((Suc::nat => nat) n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5726
           ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5727
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5728
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5729
                  ((op <=::nat => nat => bool) N n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5730
                  ((op =::real => real => bool) (D n) (D N))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5731
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5732
lemma dsize: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5733
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5734
     (op =::nat => nat => bool) ((dsize::(nat => real) => nat) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5735
      ((Eps::(nat => bool) => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5736
        (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5737
            (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5738
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5739
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5740
                   (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5741
                    ((op <::nat => nat => bool) n N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5742
                    ((op <::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5743
                      (D ((Suc::nat => nat) n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5744
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5745
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5746
                   (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5747
                    ((op <=::nat => nat => bool) N n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5748
                    ((op =::real => real => bool) (D n) (D N)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5749
  by (import transc dsize)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5750
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5751
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5752
  tdiv :: "real * real => (nat => real) * (nat => real) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5753
  "tdiv ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5754
%(a, b) (D, p). division (a, b) D & (ALL n. D n <= p n & p n <= D (Suc n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5755
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5756
lemma tdiv: "ALL a b D p.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5757
   tdiv (a, b) (D, p) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5758
   (division (a, b) D & (ALL n. D n <= p n & p n <= D (Suc n)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5759
  by (import transc tdiv)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5760
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5761
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5762
  gauge :: "(real => bool) => (real => real) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5763
  "(op ==::((real => bool) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5764
        => ((real => bool) => (real => real) => bool) => prop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5765
 (gauge::(real => bool) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5766
 (%(E::real => bool) g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5767
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5768
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5769
          (op -->::bool => bool => bool) (E x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5770
           ((op <::real => real => bool) (0::real) (g x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5771
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5772
lemma gauge: "(All::((real => bool) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5773
 (%E::real => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5774
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5775
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5776
          (op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5777
           ((gauge::(real => bool) => (real => real) => bool) E g)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5778
           ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5779
             (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5780
                 (op -->::bool => bool => bool) (E x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5781
                  ((op <::real => real => bool) (0::real) (g x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5782
  by (import transc gauge)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5783
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5784
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5785
  fine :: "(real => real) => (nat => real) * (nat => real) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5786
  "fine == %g (D, p). ALL n<dsize D. D (Suc n) - D n < g (p n)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5787
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5788
lemma fine: "ALL g D p. fine g (D, p) = (ALL n<dsize D. D (Suc n) - D n < g (p n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5789
  by (import transc fine)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5790
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5791
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5792
  rsum :: "(nat => real) * (nat => real) => (real => real) => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5793
  "rsum == %(D, p) f. real.sum (0, dsize D) (%n. f (p n) * (D (Suc n) - D n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5794
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5795
lemma rsum: "ALL D p f.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5796
   rsum (D, p) f = real.sum (0, dsize D) (%n. f (p n) * (D (Suc n) - D n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5797
  by (import transc rsum)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5798
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5799
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5800
  Dint :: "real * real => (real => real) => real => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5801
  "(op ==::(real * real => (real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5802
        => (real * real => (real => real) => real => bool) => prop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5803
 (Dint::real * real => (real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5804
 ((split::(real => real => (real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5805
          => real * real => (real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5806
   (%(a::real) (b::real) (f::real => real) k::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5807
       (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5808
        (%e::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5809
            (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5810
             ((op <::real => real => bool) (0::real) e)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5811
             ((Ex::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5812
               (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5813
                   (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5814
                    ((gauge::(real => bool) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5815
                      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5816
                          (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5817
                           ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5818
                           ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5819
                      g)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5820
                    ((All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5821
                      (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5822
                          (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5823
                           (%p::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5824
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5825
                                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5826
                                  ((tdiv::real * real
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5827
    => (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5828
                                    ((Pair::real => real => real * real) a
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5829
b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5830
                                    ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5831
      => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5832
D p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5833
                                  ((fine::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5834
    => (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5835
                                    g ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5836
        => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5837
  D p)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5838
                                ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5839
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5840
                                    ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5841
((rsum::(nat => real) * (nat => real) => (real => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5842
  ((Pair::(nat => real) => (nat => real) => (nat => real) * (nat => real)) D
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5843
    p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5844
  f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5845
k))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5846
                                  e)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5847
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5848
lemma Dint: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5849
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5850
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5851
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5852
          (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5853
           (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5854
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5855
                (%k::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5856
                    (op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5857
                     ((Dint::real * real => (real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5858
                       ((Pair::real => real => real * real) a b) f k)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5859
                     ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5860
                       (%e::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5861
                           (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5862
                            ((op <::real => real => bool) (0::real) e)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5863
                            ((Ex::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5864
                              (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5865
                                  (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5866
                                   ((gauge::(real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5867
      => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5868
                                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5869
   (op &::bool => bool => bool) ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5870
    ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5871
                                     g)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5872
                                   ((All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5873
                                     (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5874
   (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5875
    (%p::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5876
        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5877
         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5878
           ((tdiv::real * real => (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5879
             ((Pair::real => real => real * real) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5880
             ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5881
                     => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5882
               D p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5883
           ((fine::(real => real) => (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5884
             g ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5885
                       => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5886
                 D p)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5887
         ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5888
           ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5889
             ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5890
               ((rsum::(nat => real) * (nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5891
                       => (real => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5892
                 ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5893
                         => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5894
                   D p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5895
                 f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5896
               k))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5897
           e))))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5898
  by (import transc Dint)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5899
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5900
lemma DIVISION_0: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5901
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5902
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5903
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5904
          (op -->::bool => bool => bool) ((op =::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5905
           ((op =::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5906
             ((dsize::(nat => real) => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5907
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5908
                   (If::bool => real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5909
                    ((op =::nat => nat => bool) n (0::nat)) a b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5910
             (0::nat))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5911
  by (import transc DIVISION_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5912
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5913
lemma DIVISION_1: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5914
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5915
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5916
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5917
          (op -->::bool => bool => bool) ((op <::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5918
           ((op =::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5919
             ((dsize::(nat => real) => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5920
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5921
                   (If::bool => real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5922
                    ((op =::nat => nat => bool) n (0::nat)) a b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5923
             (1::nat))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5924
  by (import transc DIVISION_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5925
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5926
lemma DIVISION_SINGLE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5927
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5928
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5929
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5930
          (op -->::bool => bool => bool) ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5931
           ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5932
             ((Pair::real => real => real * real) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5933
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5934
                 (If::bool => real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5935
                  ((op =::nat => nat => bool) n (0::nat)) a b))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5936
  by (import transc DIVISION_SINGLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5937
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5938
lemma DIVISION_LHS: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5939
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5940
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5941
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5942
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5943
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5944
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5945
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5946
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5947
                ((op =::real => real => bool) (D (0::nat)) a))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5948
  by (import transc DIVISION_LHS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5949
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5950
lemma DIVISION_THM: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5951
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5952
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5953
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5954
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5955
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5956
               (op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5957
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5958
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5959
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5960
                  ((op =::real => real => bool) (D (0::nat)) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5961
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5962
                    ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5963
                      (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5964
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5965
                           ((op <::nat => nat => bool) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5966
                             ((dsize::(nat => real) => nat) D))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5967
                           ((op <::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5968
                             (D ((Suc::nat => nat) n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5969
                    ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5970
                      (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5971
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5972
                           ((op <=::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5973
                             ((dsize::(nat => real) => nat) D) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5974
                           ((op =::real => real => bool) (D n) b))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5975
  by (import transc DIVISION_THM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5976
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5977
lemma DIVISION_RHS: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5978
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5979
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5980
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5981
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5982
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5983
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5984
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5985
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5986
                ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5987
                  (D ((dsize::(nat => real) => nat) D)) b))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5988
  by (import transc DIVISION_RHS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5989
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5990
lemma DIVISION_LT_GEN: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5991
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5992
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5993
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5994
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5995
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5996
               (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5997
                (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5998
                    (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5999
                     (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6000
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6001
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6002
                            ((division::real * real
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6003
  => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6004
                              ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6005
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6006
                              ((op <::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6007
                              ((op <=::nat => nat => bool) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6008
                                ((dsize::(nat => real) => nat) D))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6009
                          ((op <::real => real => bool) (D m) (D n)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6010
  by (import transc DIVISION_LT_GEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6011
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6012
lemma DIVISION_LT: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6013
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6014
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6015
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6016
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6017
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6018
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6019
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6020
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6021
                ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6022
                  (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6023
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6024
                       ((op <::nat => nat => bool) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6025
                         ((dsize::(nat => real) => nat) D))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6026
                       ((op <::real => real => bool) (D (0::nat))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6027
                         (D ((Suc::nat => nat) n))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6028
  by (import transc DIVISION_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6029
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6030
lemma DIVISION_LE: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6031
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6032
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6033
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6034
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6035
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6036
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6037
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6038
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6039
                ((op <=::real => real => bool) a b))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6040
  by (import transc DIVISION_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6041
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6042
lemma DIVISION_GT: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6043
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6044
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6045
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6046
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6047
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6048
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6049
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6050
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6051
                ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6052
                  (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6053
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6054
                       ((op <::nat => nat => bool) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6055
                         ((dsize::(nat => real) => nat) D))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6056
                       ((op <::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6057
                         (D ((dsize::(nat => real) => nat) D))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6058
  by (import transc DIVISION_GT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6059
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6060
lemma DIVISION_EQ: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6061
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6062
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6063
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6064
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6065
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6066
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6067
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6068
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6069
                ((op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6070
                  ((op =::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6071
                  ((op =::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6072
                    ((dsize::(nat => real) => nat) D) (0::nat))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6073
  by (import transc DIVISION_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6074
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6075
lemma DIVISION_LBOUND: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6076
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6077
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6078
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6079
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6080
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6081
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6082
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6083
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6084
                ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6085
                  (%r::nat. (op <=::real => real => bool) a (D r))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6086
  by (import transc DIVISION_LBOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6087
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6088
lemma DIVISION_LBOUND_LT: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6089
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6090
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6091
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6092
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6093
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6094
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6095
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6096
                  ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6097
                    ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6098
                  ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6099
                    ((op =::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6100
                      ((dsize::(nat => real) => nat) D) (0::nat))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6101
                ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6102
                  (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6103
                      (op <::real => real => bool) a
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6104
                       (D ((Suc::nat => nat) n)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6105
  by (import transc DIVISION_LBOUND_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6106
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6107
lemma DIVISION_UBOUND: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6108
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6109
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6110
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6111
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6112
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6113
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6114
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6115
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6116
                ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6117
                  (%r::nat. (op <=::real => real => bool) (D r) b)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6118
  by (import transc DIVISION_UBOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6119
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6120
lemma DIVISION_UBOUND_LT: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6121
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6122
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6123
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6124
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6125
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6126
               (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6127
                (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6128
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6129
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6130
                       ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6131
                         ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6132
                       ((op <::nat => nat => bool) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6133
                         ((dsize::(nat => real) => nat) D)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6134
                     ((op <::real => real => bool) (D n) b)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6135
  by (import transc DIVISION_UBOUND_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6136
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6137
lemma DIVISION_APPEND: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6138
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6139
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6140
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6141
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6142
           (%c::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6143
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6144
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6145
                  ((Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6146
                    (%D1::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6147
                        (Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6148
                         (%p1::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6149
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6150
                              ((tdiv::real * real
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6151
=> (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6152
                                ((Pair::real => real => real * real) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6153
                                ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6154
  => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6155
                                  D1 p1))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6156
                              ((fine::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6157
=> (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6158
                                (g::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6159
                                ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6160
  => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6161
                                  D1 p1)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6162
                  ((Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6163
                    (%D2::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6164
                        (Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6165
                         (%p2::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6166
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6167
                              ((tdiv::real * real
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6168
=> (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6169
                                ((Pair::real => real => real * real) b c)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6170
                                ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6171
  => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6172
                                  D2 p2))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6173
                              ((fine::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6174
=> (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6175
                                g ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6176
    => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6177
                                    D2 p2))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6178
                ((Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6179
                  (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6180
                      (Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6181
                       (%p::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6182
                           (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6183
                            ((tdiv::real * real
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6184
                                    => (nat => real) * (nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6185
 => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6186
                              ((Pair::real => real => real * real) a c)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6187
                              ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6188
=> (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6189
                                x p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6190
                            ((fine::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6191
                                    => (nat => real) * (nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6192
 => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6193
                              g ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6194
  => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6195
                                  x p))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6196
  by (import transc DIVISION_APPEND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6197
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6198
lemma DIVISION_EXISTS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6199
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6200
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6201
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6202
          (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6203
           (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6204
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6205
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6206
                  ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6207
                  ((gauge::(real => bool) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6208
                    (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6209
                        (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6210
                         ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6211
                         ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6212
                    g))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6213
                ((Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6214
                  (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6215
                      (Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6216
                       (%p::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6217
                           (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6218
                            ((tdiv::real * real
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6219
                                    => (nat => real) * (nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6220
 => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6221
                              ((Pair::real => real => real * real) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6222
                              ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6223
=> (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6224
                                D p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6225
                            ((fine::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6226
                                    => (nat => real) * (nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6227
 => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6228
                              g ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6229
  => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6230
                                  D p))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6231
  by (import transc DIVISION_EXISTS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6232
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6233
lemma GAUGE_MIN: "(All::((real => bool) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6234
 (%E::real => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6235
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6236
      (%g1::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6237
          (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6238
           (%g2::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6239
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6240
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6241
                  ((gauge::(real => bool) => (real => real) => bool) E g1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6242
                  ((gauge::(real => bool) => (real => real) => bool) E g2))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6243
                ((gauge::(real => bool) => (real => real) => bool) E
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6244
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6245
                      (If::bool => real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6246
                       ((op <::real => real => bool) (g1 x) (g2 x)) (g1 x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6247
                       (g2 x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6248
  by (import transc GAUGE_MIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6249
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6250
lemma FINE_MIN: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6251
 (%g1::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6252
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6253
      (%g2::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6254
          (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6255
           (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6256
               (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6257
                (%p::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6258
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6259
                     ((fine::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6260
                             => (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6261
                       (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6262
                           (If::bool => real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6263
                            ((op <::real => real => bool) (g1 x) (g2 x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6264
                            (g1 x) (g2 x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6265
                       ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6266
                               => (nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6267
                                  => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6268
                         D p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6269
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6270
                       ((fine::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6271
                               => (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6272
                         g1 ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6273
                                    => (nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6274
 => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6275
                              D p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6276
                       ((fine::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6277
                               => (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6278
                         g2 ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6279
                                    => (nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6280
 => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6281
                              D p)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6282
  by (import transc FINE_MIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6283
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6284
lemma DINT_UNIQ: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6285
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6286
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6287
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6288
          (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6289
           (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6290
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6291
                (%k1::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6292
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6293
                     (%k2::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6294
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6295
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6296
                            ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6297
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6298
                              ((Dint::real * real
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6299
=> (real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6300
                                ((Pair::real => real => real * real) a b) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6301
                                k1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6302
                              ((Dint::real * real
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6303
=> (real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6304
                                ((Pair::real => real => real * real) a b) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6305
                                k2)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6306
                          ((op =::real => real => bool) k1 k2))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6307
  by (import transc DINT_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6308
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6309
lemma INTEGRAL_NULL: "ALL f a. Dint (a, a) f 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6310
  by (import transc INTEGRAL_NULL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6311
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6312
lemma FTC1: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6313
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6314
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6315
      (%f'::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6316
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6317
           (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6318
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6319
                (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6320
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6321
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6322
                       ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6323
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6324
                         (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6325
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6326
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6327
                                ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6328
                                ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6329
                              ((diffl::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6330
 => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6331
                                f (f' x) x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6332
                     ((Dint::real * real => (real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6333
                       ((Pair::real => real => real * real) a b) f'
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6334
                       ((op -::real => real => real) (f b) (f a)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6335
  by (import transc FTC1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6336
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6337
lemma MCLAURIN: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6338
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6339
     (All::((nat => real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6340
      (%diff::nat => real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6341
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6342
           (%h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6343
               (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6344
                (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6345
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6346
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6347
                       ((op <::real => real => bool) (0::real) h)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6348
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6349
                         ((op <::nat => nat => bool) (0::nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6350
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6351
                           ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6352
                             (diff (0::nat)) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6353
                           ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6354
                             (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6355
                                 (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6356
                                  (%t::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6357
(op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6358
 ((op &::bool => bool => bool) ((op <::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6359
   ((op &::bool => bool => bool) ((op <=::real => real => bool) (0::real) t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6360
     ((op <=::real => real => bool) t h)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6361
 ((diffl::(real => real) => real => real => bool) (diff m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6362
   (diff ((Suc::nat => nat) m) t) t)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6363
                     ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6364
                       (%t::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6365
                           (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6366
                            ((op <::real => real => bool) (0::real) t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6367
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6368
                              ((op <::real => real => bool) t h)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6369
                              ((op =::real => real => bool) (f h)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6370
                                ((op +::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6371
                                  ((real.sum::nat * nat
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6372
        => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6373
                                    ((Pair::nat => nat => nat * nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6374
(0::nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6375
                                    (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6376
  (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6377
   ((op /::real => real => real) (diff m (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6378
     ((real::nat => real) ((FACT::nat => nat) m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6379
   ((op ^::real => nat => real) h m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6380
                                  ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6381
                                    ((op /::real => real => real) (diff n t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6382
((real::nat => real) ((FACT::nat => nat) n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6383
                                    ((op ^::real => nat => real) h
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6384
n)))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6385
  by (import transc MCLAURIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6386
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6387
lemma MCLAURIN_NEG: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6388
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6389
     (All::((nat => real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6390
      (%diff::nat => real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6391
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6392
           (%h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6393
               (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6394
                (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6395
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6396
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6397
                       ((op <::real => real => bool) h (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6398
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6399
                         ((op <::nat => nat => bool) (0::nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6400
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6401
                           ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6402
                             (diff (0::nat)) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6403
                           ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6404
                             (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6405
                                 (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6406
                                  (%t::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6407
(op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6408
 ((op &::bool => bool => bool) ((op <::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6409
   ((op &::bool => bool => bool) ((op <=::real => real => bool) h t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6410
     ((op <=::real => real => bool) t (0::real))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6411
 ((diffl::(real => real) => real => real => bool) (diff m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6412
   (diff ((Suc::nat => nat) m) t) t)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6413
                     ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6414
                       (%t::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6415
                           (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6416
                            ((op <::real => real => bool) h t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6417
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6418
                              ((op <::real => real => bool) t (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6419
                              ((op =::real => real => bool) (f h)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6420
                                ((op +::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6421
                                  ((real.sum::nat * nat
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6422
        => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6423
                                    ((Pair::nat => nat => nat * nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6424
(0::nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6425
                                    (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6426
  (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6427
   ((op /::real => real => real) (diff m (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6428
     ((real::nat => real) ((FACT::nat => nat) m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6429
   ((op ^::real => nat => real) h m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6430
                                  ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6431
                                    ((op /::real => real => real) (diff n t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6432
((real::nat => real) ((FACT::nat => nat) n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6433
                                    ((op ^::real => nat => real) h
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6434
n)))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6435
  by (import transc MCLAURIN_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6436
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6437
lemma MCLAURIN_ALL_LT: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6438
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6439
     (All::((nat => real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6440
      (%diff::nat => real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6441
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6442
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6443
             ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6444
               (diff (0::nat)) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6445
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6446
               (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6447
                   (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6448
                    (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6449
                        (diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6450
                         (diff m) (diff ((Suc::nat => nat) m) x) x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6451
           ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6452
             (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6453
                 (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6454
                  (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6455
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6456
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6457
                         ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6458
                           ((op =::real => real => bool) x (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6459
                         ((op <::nat => nat => bool) (0::nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6460
                       ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6461
                         (%t::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6462
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6463
                              ((op <::real => real => bool) (0::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6464
                                ((abs::real => real) t))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6465
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6466
                                ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6467
                                  ((abs::real => real) t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6468
                                  ((abs::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6469
                                ((op =::real => real => bool) (f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6470
                                  ((op +::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6471
                                    ((real.sum::nat * nat
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6472
          => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6473
((Pair::nat => nat => nat * nat) (0::nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6474
(%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6475
    (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6476
     ((op /::real => real => real) (diff m (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6477
       ((real::nat => real) ((FACT::nat => nat) m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6478
     ((op ^::real => nat => real) x m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6479
                                    ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6480
((op /::real => real => real) (diff n t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6481
  ((real::nat => real) ((FACT::nat => nat) n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6482
((op ^::real => nat => real) x n))))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6483
  by (import transc MCLAURIN_ALL_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6484
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6485
lemma MCLAURIN_ZERO: "(All::((nat => real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6486
 (%diff::nat => real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6487
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6488
      (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6489
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6490
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6491
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6492
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6493
                  ((op =::real => real => bool) x (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6494
                  ((op <::nat => nat => bool) (0::nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6495
                ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6496
                  ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6497
                    ((Pair::nat => nat => nat * nat) (0::nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6498
                    (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6499
                        (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6500
                         ((op /::real => real => real) (diff m (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6501
                           ((real::nat => real) ((FACT::nat => nat) m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6502
                         ((op ^::real => nat => real) x m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6503
                  (diff (0::nat) (0::real))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6504
  by (import transc MCLAURIN_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6505
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6506
lemma MCLAURIN_ALL_LE: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6507
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6508
     (All::((nat => real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6509
      (%diff::nat => real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6510
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6511
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6512
             ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6513
               (diff (0::nat)) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6514
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6515
               (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6516
                   (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6517
                    (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6518
                        (diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6519
                         (diff m) (diff ((Suc::nat => nat) m) x) x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6520
           ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6521
             (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6522
                 (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6523
                  (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6524
                      (Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6525
                       (%t::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6526
                           (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6527
                            ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6528
                              ((abs::real => real) t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6529
                              ((abs::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6530
                            ((op =::real => real => bool) (f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6531
                              ((op +::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6532
                                ((real.sum::nat * nat
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6533
      => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6534
                                  ((Pair::nat => nat => nat * nat) (0::nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6535
                                    n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6536
                                  (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6537
(op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6538
 ((op /::real => real => real) (diff m (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6539
   ((real::nat => real) ((FACT::nat => nat) m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6540
 ((op ^::real => nat => real) x m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6541
                                ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6542
                                  ((op /::real => real => real) (diff n t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6543
                                    ((real::nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6544
((FACT::nat => nat) n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6545
                                  ((op ^::real => nat => real) x n))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6546
  by (import transc MCLAURIN_ALL_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6547
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6548
lemma MCLAURIN_EXP_LT: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6549
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6550
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6551
      (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6552
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6553
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6554
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6555
               ((op =::real => real => bool) x (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6556
             ((op <::nat => nat => bool) (0::nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6557
           ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6558
             (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6559
                 (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6560
                  ((op <::real => real => bool) (0::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6561
                    ((abs::real => real) xa))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6562
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6563
                    ((op <::real => real => bool) ((abs::real => real) xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6564
                      ((abs::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6565
                    ((op =::real => real => bool) ((exp::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6566
                      ((op +::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6567
                        ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6568
                          ((Pair::nat => nat => nat * nat) (0::nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6569
                          (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6570
                              (op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6571
                               ((op ^::real => nat => real) x m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6572
                               ((real::nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6573
                                 ((FACT::nat => nat) m))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6574
                        ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6575
                          ((op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6576
                            ((exp::real => real) xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6577
                            ((real::nat => real) ((FACT::nat => nat) n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6578
                          ((op ^::real => nat => real) x n)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6579
  by (import transc MCLAURIN_EXP_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6580
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6581
lemma MCLAURIN_EXP_LE: "ALL x n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6582
   EX xa.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6583
      abs xa <= abs x &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6584
      exp x =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6585
      real.sum (0, n) (%m. x ^ m / real (FACT m)) +
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6586
      exp xa / real (FACT n) * x ^ n"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6587
  by (import transc MCLAURIN_EXP_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6588
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6589
lemma DIFF_LN_COMPOSITE: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6590
 (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6591
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6592
      (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6593
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6594
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6595
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6596
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6597
                  ((diffl::(real => real) => real => real => bool) g m x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6598
                  ((op <::real => real => bool) (0::real) (g x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6599
                ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6600
                  (%x::real. (ln::real => real) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6601
                  ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6602
                    ((inverse::real => real) (g x)) m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6603
                  x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6604
  by (import transc DIFF_LN_COMPOSITE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6605
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6606
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6607
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6608
;setup_theory poly
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6609
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6610
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6611
  poly :: "real list => real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6612
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6613
specification (poly_primdef: poly) poly_def: "(ALL x. poly [] x = 0) & (ALL h t x. poly (h # t) x = h + x * poly t x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6614
  by (import poly poly_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6615
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6616
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6617
  poly_add :: "real list => real list => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6618
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6619
specification (poly_add_primdef: poly_add) poly_add_def: "(ALL l2. poly_add [] l2 = l2) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6620
(ALL h t l2.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6621
    poly_add (h # t) l2 =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6622
    (if l2 = [] then h # t else (h + hd l2) # poly_add t (tl l2)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6623
  by (import poly poly_add_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6624
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6625
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6626
  "##" :: "real => real list => real list" ("##")
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6627
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6628
specification ("##") poly_cmul_def: "(ALL c. ## c [] = []) & (ALL c h t. ## c (h # t) = c * h # ## c t)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6629
  by (import poly poly_cmul_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6630
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6631
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6632
  poly_neg :: "real list => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6633
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6634
defs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6635
  poly_neg_primdef: "poly_neg == ## (- 1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6636
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6637
lemma poly_neg_def: "poly_neg = ## (- 1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6638
  by (import poly poly_neg_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6639
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6640
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6641
  poly_mul :: "real list => real list => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6642
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6643
specification (poly_mul_primdef: poly_mul) poly_mul_def: "(ALL l2. poly_mul [] l2 = []) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6644
(ALL h t l2.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6645
    poly_mul (h # t) l2 =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6646
    (if t = [] then ## h l2 else poly_add (## h l2) (0 # poly_mul t l2)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6647
  by (import poly poly_mul_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6648
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6649
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6650
  poly_exp :: "real list => nat => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6651
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6652
specification (poly_exp_primdef: poly_exp) poly_exp_def: "(ALL p. poly_exp p 0 = [1]) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6653
(ALL p n. poly_exp p (Suc n) = poly_mul p (poly_exp p n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6654
  by (import poly poly_exp_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6655
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6656
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6657
  poly_diff_aux :: "nat => real list => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6658
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6659
specification (poly_diff_aux_primdef: poly_diff_aux) poly_diff_aux_def: "(ALL n. poly_diff_aux n [] = []) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6660
(ALL n h t. poly_diff_aux n (h # t) = real n * h # poly_diff_aux (Suc n) t)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6661
  by (import poly poly_diff_aux_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6662
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6663
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6664
  diff :: "real list => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6665
  "diff == %l. if l = [] then [] else poly_diff_aux 1 (tl l)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6666
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6667
lemma poly_diff_def: "ALL l. diff l = (if l = [] then [] else poly_diff_aux 1 (tl l))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6668
  by (import poly poly_diff_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6669
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6670
lemma POLY_ADD_CLAUSES: "poly_add [] p2 = p2 &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6671
poly_add p1 [] = p1 &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6672
poly_add (h1 # t1) (h2 # t2) = (h1 + h2) # poly_add t1 t2"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6673
  by (import poly POLY_ADD_CLAUSES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6674
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6675
lemma POLY_CMUL_CLAUSES: "## c [] = [] & ## c (h # t) = c * h # ## c t"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6676
  by (import poly POLY_CMUL_CLAUSES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6677
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6678
lemma POLY_NEG_CLAUSES: "poly_neg [] = [] & poly_neg (h # t) = - h # poly_neg t"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6679
  by (import poly POLY_NEG_CLAUSES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6680
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6681
lemma POLY_MUL_CLAUSES: "poly_mul [] p2 = [] &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6682
poly_mul [h1] p2 = ## h1 p2 &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6683
poly_mul (h1 # k1 # t1) p2 = poly_add (## h1 p2) (0 # poly_mul (k1 # t1) p2)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6684
  by (import poly POLY_MUL_CLAUSES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6685
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6686
lemma POLY_DIFF_CLAUSES: "diff [] = [] & diff [c] = [] & diff (h # t) = poly_diff_aux 1 t"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6687
  by (import poly POLY_DIFF_CLAUSES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6688
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6689
lemma POLY_ADD: "ALL t p2 x. poly (poly_add t p2) x = poly t x + poly p2 x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6690
  by (import poly POLY_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6691
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6692
lemma POLY_CMUL: "ALL t c x. poly (## c t) x = c * poly t x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6693
  by (import poly POLY_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6694
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6695
lemma POLY_NEG: "ALL x xa. poly (poly_neg x) xa = - poly x xa"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6696
  by (import poly POLY_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6697
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6698
lemma POLY_MUL: "ALL x t p2. poly (poly_mul t p2) x = poly t x * poly p2 x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6699
  by (import poly POLY_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6700
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6701
lemma POLY_EXP: "ALL p n x. poly (poly_exp p n) x = poly p x ^ n"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6702
  by (import poly POLY_EXP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6703
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6704
lemma POLY_DIFF_LEMMA: "ALL t n x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6705
   diffl (%x. x ^ Suc n * poly t x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6706
    (x ^ n * poly (poly_diff_aux (Suc n) t) x) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6707
  by (import poly POLY_DIFF_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6708
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6709
lemma POLY_DIFF: "ALL t x. diffl (poly t) (poly (diff t) x) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6710
  by (import poly POLY_DIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6711
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6712
lemma POLY_DIFFERENTIABLE: "ALL l. All (differentiable (poly l))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6713
  by (import poly POLY_DIFFERENTIABLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6714
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6715
lemma POLY_CONT: "ALL l. All (contl (poly l))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6716
  by (import poly POLY_CONT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6717
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6718
lemma POLY_IVT_POS: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6719
 (%x::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6720
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6721
      (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6722
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6723
           (%xb::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6724
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6725
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6726
                  ((op <::real => real => bool) xa xb)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6727
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6728
                    ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6729
                      ((poly::real list => real => real) x xa) (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6730
                    ((op <::real => real => bool) (0::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6731
                      ((poly::real list => real => real) x xb))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6732
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6733
                  (%xc::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6734
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6735
                       ((op <::real => real => bool) xa xc)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6736
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6737
                         ((op <::real => real => bool) xc xb)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6738
                         ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6739
                           ((poly::real list => real => real) x xc)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6740
                           (0::real))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6741
  by (import poly POLY_IVT_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6742
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6743
lemma POLY_IVT_NEG: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6744
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6745
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6746
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6747
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6748
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6749
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6750
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6751
                  ((op <::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6752
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6753
                    ((op <::real => real => bool) (0::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6754
                      ((poly::real list => real => real) p a))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6755
                    ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6756
                      ((poly::real list => real => real) p b) (0::real))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6757
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6758
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6759
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6760
                       ((op <::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6761
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6762
                         ((op <::real => real => bool) x b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6763
                         ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6764
                           ((poly::real list => real => real) p x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6765
                           (0::real))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6766
  by (import poly POLY_IVT_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6767
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6768
lemma POLY_MVT: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6769
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6770
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6771
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6772
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6773
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6774
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6775
                ((op <::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6776
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6777
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6778
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6779
                       ((op <::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6780
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6781
                         ((op <::real => real => bool) x b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6782
                         ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6783
                           ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6784
                             ((poly::real list => real => real) p b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6785
                             ((poly::real list => real => real) p a))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6786
                           ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6787
                             ((op -::real => real => real) b a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6788
                             ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6789
                               ((diff::real list => real list) p) x)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6790
  by (import poly POLY_MVT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6791
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6792
lemma POLY_ADD_RZERO: "ALL x. poly (poly_add x []) = poly x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6793
  by (import poly POLY_ADD_RZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6794
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6795
lemma POLY_MUL_ASSOC: "ALL x xa xb.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6796
   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
  6797
  by (import poly POLY_MUL_ASSOC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6798
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6799
lemma POLY_EXP_ADD: "ALL x xa xb.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6800
   poly (poly_exp xb (xa + x)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6801
   poly (poly_mul (poly_exp xb xa) (poly_exp xb x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6802
  by (import poly POLY_EXP_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6803
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6804
lemma POLY_DIFF_AUX_ADD: "ALL t p2 n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6805
   poly (poly_diff_aux n (poly_add t p2)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6806
   poly (poly_add (poly_diff_aux n t) (poly_diff_aux n p2))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6807
  by (import poly POLY_DIFF_AUX_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6808
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6809
lemma POLY_DIFF_AUX_CMUL: "ALL t c n. poly (poly_diff_aux n (## c t)) = poly (## c (poly_diff_aux n t))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6810
  by (import poly POLY_DIFF_AUX_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6811
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6812
lemma POLY_DIFF_AUX_NEG: "ALL x xa.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6813
   poly (poly_diff_aux xa (poly_neg x)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6814
   poly (poly_neg (poly_diff_aux xa x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6815
  by (import poly POLY_DIFF_AUX_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6816
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6817
lemma POLY_DIFF_AUX_MUL_LEMMA: "ALL t n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6818
   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
  6819
  by (import poly POLY_DIFF_AUX_MUL_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6820
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6821
lemma POLY_DIFF_ADD: "ALL t p2. poly (diff (poly_add t p2)) = poly (poly_add (diff t) (diff p2))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6822
  by (import poly POLY_DIFF_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6823
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6824
lemma POLY_DIFF_CMUL: "ALL t c. poly (diff (## c t)) = poly (## c (diff t))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6825
  by (import poly POLY_DIFF_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6826
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6827
lemma POLY_DIFF_NEG: "ALL x. poly (diff (poly_neg x)) = poly (poly_neg (diff x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6828
  by (import poly POLY_DIFF_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6829
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6830
lemma POLY_DIFF_MUL_LEMMA: "ALL x xa. poly (diff (xa # x)) = poly (poly_add (0 # diff x) x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6831
  by (import poly POLY_DIFF_MUL_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6832
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6833
lemma POLY_DIFF_MUL: "ALL t p2.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6834
   poly (diff (poly_mul t p2)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6835
   poly (poly_add (poly_mul t (diff p2)) (poly_mul (diff t) p2))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6836
  by (import poly POLY_DIFF_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6837
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6838
lemma POLY_DIFF_EXP: "ALL p n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6839
   poly (diff (poly_exp p (Suc n))) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6840
   poly (poly_mul (## (real (Suc n)) (poly_exp p n)) (diff p))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6841
  by (import poly POLY_DIFF_EXP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6842
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6843
lemma POLY_DIFF_EXP_PRIME: "ALL n a.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6844
   poly (diff (poly_exp [- a, 1] (Suc n))) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6845
   poly (## (real (Suc n)) (poly_exp [- a, 1] n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6846
  by (import poly POLY_DIFF_EXP_PRIME)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6847
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6848
lemma POLY_LINEAR_REM: "ALL t h. EX q r. h # t = poly_add [r] (poly_mul [- a, 1] q)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6849
  by (import poly POLY_LINEAR_REM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6850
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6851
lemma POLY_LINEAR_DIVIDES: "ALL a t. (poly t a = 0) = (t = [] | (EX q. t = poly_mul [- a, 1] q))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6852
  by (import poly POLY_LINEAR_DIVIDES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6853
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6854
lemma POLY_LENGTH_MUL: "ALL x. length (poly_mul [- a, 1] x) = Suc (length x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6855
  by (import poly POLY_LENGTH_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6856
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6857
lemma POLY_ROOTS_INDEX_LEMMA: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6858
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6859
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6860
      (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6861
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6862
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6863
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6864
               ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6865
                 ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6866
                 ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6867
             ((op =::nat => nat => bool) ((size::real list => nat) p) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6868
           ((Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6869
             (%i::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6870
                 (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6871
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6872
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6873
                       ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6874
                         ((poly::real list => real => real) p x) (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6875
                       ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6876
                         (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6877
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6878
                              ((op <=::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6879
                              ((op =::real => real => bool) x (i m)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6880
  by (import poly POLY_ROOTS_INDEX_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6881
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6882
lemma POLY_ROOTS_INDEX_LENGTH: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6883
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6884
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6885
      ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6886
        ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6887
          ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6888
          ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6889
      ((Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6890
        (%i::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6891
            (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6892
             (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6893
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6894
                  ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6895
                    ((poly::real list => real => real) p x) (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6896
                  ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6897
                    (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6898
                        (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6899
                         ((op <=::nat => nat => bool) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6900
                           ((size::real list => nat) p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6901
                         ((op =::real => real => bool) x (i n))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6902
  by (import poly POLY_ROOTS_INDEX_LENGTH)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6903
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6904
lemma POLY_ROOTS_FINITE_LEMMA: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6905
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6906
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6907
      ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6908
        ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6909
          ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6910
          ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6911
      ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6912
        (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6913
            (Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6914
             (%i::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6915
                 (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6916
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6917
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6918
                       ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6919
                         ((poly::real list => real => real) p x) (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6920
                       ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6921
                         (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6922
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6923
                              ((op <::nat => nat => bool) n N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6924
                              ((op =::real => real => bool) x (i n)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6925
  by (import poly POLY_ROOTS_FINITE_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6926
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6927
lemma FINITE_LEMMA: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6928
 (%i::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6929
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6930
      (%x::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6931
          (All::((real => bool) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6932
           (%xa::real => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6933
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6934
                ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6935
                  (%xb::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6936
                      (op -->::bool => bool => bool) (xa xb)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6937
                       ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6938
                         (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6939
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6940
                              ((op <::nat => nat => bool) n x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6941
                              ((op =::real => real => bool) xb (i n))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6942
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6943
                  (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6944
                      (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6945
                       (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6946
                           (op -->::bool => bool => bool) (xa x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6947
                            ((op <::real => real => bool) x a)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6948
  by (import poly FINITE_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6949
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6950
lemma POLY_ROOTS_FINITE: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6951
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6952
     (op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6953
      ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6954
        ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6955
          ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6956
          ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6957
      ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6958
        (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6959
            (Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6960
             (%i::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6961
                 (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6962
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6963
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6964
                       ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6965
                         ((poly::real list => real => real) p x) (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6966
                       ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6967
                         (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6968
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6969
                              ((op <::nat => nat => bool) n N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6970
                              ((op =::real => real => bool) x (i n)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6971
  by (import poly POLY_ROOTS_FINITE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6972
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6973
lemma POLY_ENTIRE_LEMMA: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6974
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6975
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6976
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6977
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6978
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6979
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6980
               ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6981
                 ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6982
                 ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6983
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6984
               ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6985
                 ((poly::real list => real => real) q)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6986
                 ((poly::real list => real => real) ([]::real list)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6987
           ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6988
             ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6989
               ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6990
                 ((poly_mul::real list => real list => real list) p q))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6991
               ((poly::real list => real => real) ([]::real list))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6992
  by (import poly POLY_ENTIRE_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6993
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6994
lemma POLY_ENTIRE: "ALL p q.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6995
   (poly (poly_mul p q) = poly []) = (poly p = poly [] | poly q = poly [])"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6996
  by (import poly POLY_ENTIRE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6997
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6998
lemma POLY_MUL_LCANCEL: "ALL x xa xb.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6999
   (poly (poly_mul x xa) = poly (poly_mul x xb)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7000
   (poly x = poly [] | poly xa = poly xb)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7001
  by (import poly POLY_MUL_LCANCEL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7002
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7003
lemma POLY_EXP_EQ_0: "ALL p n. (poly (poly_exp p n) = poly []) = (poly p = poly [] & n ~= 0)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7004
  by (import poly POLY_EXP_EQ_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7005
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7006
lemma POLY_PRIME_EQ_0: "ALL a. poly [a, 1] ~= poly []"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7007
  by (import poly POLY_PRIME_EQ_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7008
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7009
lemma POLY_EXP_PRIME_EQ_0: "ALL a n. poly (poly_exp [a, 1] n) ~= poly []"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7010
  by (import poly POLY_EXP_PRIME_EQ_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7011
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7012
lemma POLY_ZERO_LEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7013
 (%h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7014
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7015
      (%t::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7016
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7017
           ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7018
             ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7019
               ((op #::real => real list => real list) h t))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7020
             ((poly::real list => real => real) ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7021
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7022
             ((op =::real => real => bool) h (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7023
             ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7024
               ((poly::real list => real => real) t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7025
               ((poly::real list => real => real) ([]::real list))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7026
  by (import poly POLY_ZERO_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7027
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7028
lemma POLY_ZERO: "ALL t. (poly t = poly []) = list_all (%c. c = 0) t"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7029
  by (import poly POLY_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7030
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7031
lemma POLY_DIFF_AUX_ISZERO: "ALL t n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7032
   list_all (%c. c = 0) (poly_diff_aux (Suc n) t) = list_all (%c. c = 0) t"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7033
  by (import poly POLY_DIFF_AUX_ISZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7034
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7035
lemma POLY_DIFF_ISZERO: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7036
 (%x::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7037
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7038
      ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7039
        ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7040
          ((diff::real list => real list) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7041
        ((poly::real list => real => real) ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7042
      ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7043
        (%h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7044
            (op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7045
             ((poly::real list => real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7046
             ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7047
               ((op #::real => real list => real list) h
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7048
                 ([]::real list))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7049
  by (import poly POLY_DIFF_ISZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7050
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7051
lemma POLY_DIFF_ZERO: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7052
 (%x::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7053
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7054
      ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7055
        ((poly::real list => real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7056
        ((poly::real list => real => real) ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7057
      ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7058
        ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7059
          ((diff::real list => real list) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7060
        ((poly::real list => real => real) ([]::real list))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7061
  by (import poly POLY_DIFF_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7062
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7063
lemma POLY_DIFF_WELLDEF: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7064
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7065
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7066
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7067
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7068
           ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7069
             ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7070
             ((poly::real list => real => real) q))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7071
           ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7072
             ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7073
               ((diff::real list => real list) p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7074
             ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7075
               ((diff::real list => real list) q)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7076
  by (import poly POLY_DIFF_WELLDEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7077
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7078
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7079
  poly_divides :: "real list => real list => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7080
  "poly_divides == %p1 p2. EX q. poly p2 = poly (poly_mul p1 q)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7081
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7082
lemma poly_divides: "ALL p1 p2. poly_divides p1 p2 = (EX q. poly p2 = poly (poly_mul p1 q))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7083
  by (import poly poly_divides)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7084
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7085
lemma POLY_PRIMES: "ALL a p q.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7086
   poly_divides [a, 1] (poly_mul p q) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7087
   (poly_divides [a, 1] p | poly_divides [a, 1] q)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7088
  by (import poly POLY_PRIMES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7089
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7090
lemma POLY_DIVIDES_REFL: "ALL p. poly_divides p p"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7091
  by (import poly POLY_DIVIDES_REFL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7092
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7093
lemma POLY_DIVIDES_TRANS: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7094
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7095
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7096
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7097
          (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7098
           (%r::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7099
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7100
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7101
                  ((poly_divides::real list => real list => bool) p q)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7102
                  ((poly_divides::real list => real list => bool) q r))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7103
                ((poly_divides::real list => real list => bool) p r))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7104
  by (import poly POLY_DIVIDES_TRANS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7105
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7106
lemma POLY_DIVIDES_EXP: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7107
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7108
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7109
      (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7110
          (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7111
           (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7112
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7113
                ((op <=::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7114
                ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7115
                  ((poly_exp::real list => nat => real list) p m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7116
                  ((poly_exp::real list => nat => real list) p n)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7117
  by (import poly POLY_DIVIDES_EXP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7118
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7119
lemma POLY_EXP_DIVIDES: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7120
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7121
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7122
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7123
          (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7124
           (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7125
               (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7126
                (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7127
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7128
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7129
                       ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7130
                         ((poly_exp::real list => nat => real list) p n) q)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7131
                       ((op <=::nat => nat => bool) m n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7132
                     ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7133
                       ((poly_exp::real list => nat => real list) p m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7134
                       q)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7135
  by (import poly POLY_EXP_DIVIDES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7136
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7137
lemma POLY_DIVIDES_ADD: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7138
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7139
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7140
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7141
          (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7142
           (%r::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7143
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7144
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7145
                  ((poly_divides::real list => real list => bool) p q)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7146
                  ((poly_divides::real list => real list => bool) p r))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7147
                ((poly_divides::real list => real list => bool) p
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7148
                  ((poly_add::real list => real list => real list) q r)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7149
  by (import poly POLY_DIVIDES_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7150
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7151
lemma POLY_DIVIDES_SUB: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7152
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7153
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7154
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7155
          (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7156
           (%r::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7157
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7158
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7159
                  ((poly_divides::real list => real list => bool) p q)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7160
                  ((poly_divides::real list => real list => bool) p
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7161
                    ((poly_add::real list => real list => real list) q r)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7162
                ((poly_divides::real list => real list => bool) p r))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7163
  by (import poly POLY_DIVIDES_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7164
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7165
lemma POLY_DIVIDES_SUB2: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7166
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7167
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7168
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7169
          (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7170
           (%r::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7171
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7172
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7173
                  ((poly_divides::real list => real list => bool) p r)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7174
                  ((poly_divides::real list => real list => bool) p
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7175
                    ((poly_add::real list => real list => real list) q r)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7176
                ((poly_divides::real list => real list => bool) p q))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7177
  by (import poly POLY_DIVIDES_SUB2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7178
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7179
lemma POLY_DIVIDES_ZERO: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7180
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7181
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7182
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7183
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7184
           ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7185
             ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7186
             ((poly::real list => real => real) ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7187
           ((poly_divides::real list => real list => bool) q p)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7188
  by (import poly POLY_DIVIDES_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7189
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7190
lemma POLY_ORDER_EXISTS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7191
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7192
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7193
      (%d::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7194
          (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7195
           (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7196
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7197
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7198
                  ((op =::nat => nat => bool) ((size::real list => nat) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7199
                    d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7200
                  ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7201
                    ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7202
                      ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7203
                      ((poly::real list => real => real) ([]::real list)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7204
                ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7205
                  (%x::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7206
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7207
                       ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7208
                         ((poly_exp::real list => nat => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7209
                           ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7210
                             ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7211
                             ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7212
                               (1::real) ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7213
                           x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7214
                         p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7215
                       ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7216
                         ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7217
                           ((poly_exp::real list => nat => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7218
                             ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7219
                               ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7220
                               ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7221
                                 (1::real) ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7222
                             ((Suc::nat => nat) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7223
                           p)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7224
  by (import poly POLY_ORDER_EXISTS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7225
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7226
lemma POLY_ORDER: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7227
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7228
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7229
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7230
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7231
           ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7232
             ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7233
               ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7234
               ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7235
           ((Ex1::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7236
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7237
                 (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7238
                  ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7239
                    ((poly_exp::real list => nat => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7240
                      ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7241
                        ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7242
                        ((op #::real => real list => real list) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7243
                          ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7244
                      n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7245
                    p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7246
                  ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7247
                    ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7248
                      ((poly_exp::real list => nat => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7249
                        ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7250
                          ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7251
                          ((op #::real => real list => real list) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7252
                            ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7253
                        ((Suc::nat => nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7254
                      p))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7255
  by (import poly POLY_ORDER)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7256
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7257
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7258
  poly_order :: "real => real list => nat" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7259
  "poly_order ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7260
%a p. SOME n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7261
         poly_divides (poly_exp [- a, 1] n) p &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7262
         ~ poly_divides (poly_exp [- a, 1] (Suc n)) p"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7263
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7264
lemma poly_order: "ALL a p.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7265
   poly_order a p =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7266
   (SOME n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7267
       poly_divides (poly_exp [- a, 1] n) p &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7268
       ~ poly_divides (poly_exp [- a, 1] (Suc n)) p)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7269
  by (import poly poly_order)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7270
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7271
lemma ORDER: "ALL p a n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7272
   (poly_divides (poly_exp [- a, 1] n) p &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7273
    ~ poly_divides (poly_exp [- a, 1] (Suc n)) p) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7274
   (n = poly_order a p & poly p ~= poly [])"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7275
  by (import poly ORDER)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7276
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7277
lemma ORDER_THM: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7278
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7279
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7280
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7281
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7282
           ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7283
             ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7284
               ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7285
               ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7286
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7287
             ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7288
               ((poly_exp::real list => nat => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7289
                 ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7290
                   ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7291
                   ((op #::real => real list => real list) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7292
                     ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7293
                 ((poly_order::real => real list => nat) a p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7294
               p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7295
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7296
               ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7297
                 ((poly_exp::real list => nat => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7298
                   ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7299
                     ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7300
                     ((op #::real => real list => real list) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7301
                       ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7302
                   ((Suc::nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7303
                     ((poly_order::real => real list => nat) a p)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7304
                 p)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7305
  by (import poly ORDER_THM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7306
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7307
lemma ORDER_UNIQUE: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7308
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7309
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7310
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7311
          (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7312
           (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7313
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7314
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7315
                  ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7316
                    ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7317
                      ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7318
                      ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7319
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7320
                    ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7321
                      ((poly_exp::real list => nat => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7322
                        ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7323
                          ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7324
                          ((op #::real => real list => real list) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7325
                            ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7326
                        n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7327
                      p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7328
                    ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7329
                      ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7330
                        ((poly_exp::real list => nat => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7331
                          ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7332
                            ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7333
                            ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7334
                              (1::real) ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7335
                          ((Suc::nat => nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7336
                        p))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7337
                ((op =::nat => nat => bool) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7338
                  ((poly_order::real => real list => nat) a p)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7339
  by (import poly ORDER_UNIQUE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7340
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7341
lemma ORDER_POLY: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7342
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7343
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7344
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7345
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7346
           (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7347
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7348
                ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7349
                  ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7350
                  ((poly::real list => real => real) q))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7351
                ((op =::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7352
                  ((poly_order::real => real list => nat) a p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7353
                  ((poly_order::real => real list => nat) a q)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7354
  by (import poly ORDER_POLY)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7355
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7356
lemma ORDER_ROOT: "ALL p a. (poly p a = 0) = (poly p = poly [] | poly_order a p ~= 0)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7357
  by (import poly ORDER_ROOT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7358
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7359
lemma ORDER_DIVIDES: "ALL p a n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7360
   poly_divides (poly_exp [- a, 1] n) p =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7361
   (poly p = poly [] | n <= poly_order a p)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7362
  by (import poly ORDER_DIVIDES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7363
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7364
lemma ORDER_DECOMP: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7365
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7366
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7367
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7368
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7369
           ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7370
             ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7371
               ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7372
               ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7373
           ((Ex::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7374
             (%x::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7375
                 (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7376
                  ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7377
                    ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7378
                    ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7379
                      ((poly_mul::real list => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7380
                        ((poly_exp::real list => nat => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7381
                          ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7382
                            ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7383
                            ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7384
                              (1::real) ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7385
                          ((poly_order::real => real list => nat) a p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7386
                        x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7387
                  ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7388
                    ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7389
                      ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7390
                        ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7391
                        ((op #::real => real list => real list) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7392
                          ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7393
                      x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7394
  by (import poly ORDER_DECOMP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7395
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7396
lemma ORDER_MUL: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7397
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7398
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7399
      (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7400
          (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7401
           (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7402
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7403
                ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7404
                  ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7405
                    ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7406
                      ((poly_mul::real list => real list => real list) p q))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7407
                    ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7408
                ((op =::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7409
                  ((poly_order::real => real list => nat) a
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7410
                    ((poly_mul::real list => real list => real list) p q))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7411
                  ((op +::nat => nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7412
                    ((poly_order::real => real list => nat) a p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7413
                    ((poly_order::real => real list => nat) a q))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7414
  by (import poly ORDER_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7415
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7416
lemma ORDER_DIFF: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7417
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7418
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7419
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7420
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7421
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7422
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7423
               ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7424
                 ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7425
                   ((diff::real list => real list) p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7426
                 ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7427
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7428
               ((op =::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7429
                 ((poly_order::real => real list => nat) a p) (0::nat))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7430
           ((op =::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7431
             ((poly_order::real => real list => nat) a p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7432
             ((Suc::nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7433
               ((poly_order::real => real list => nat) a
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7434
                 ((diff::real list => real list) p))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7435
  by (import poly ORDER_DIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7436
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7437
lemma POLY_SQUAREFREE_DECOMP_ORDER: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7438
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7439
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7440
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7441
          (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7442
           (%d::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7443
               (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7444
                (%e::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7445
                    (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7446
                     (%r::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7447
                         (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7448
                          (%s::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7449
                              (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7450
                               ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7451
                                 ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7452
                                   ((op =::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7453
     => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7454
                                     ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7455
 ((diff::real list => real list) p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7456
                                     ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7457
 ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7458
                                 ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7459
                                   ((op =::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7460
     => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7461
                                     ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7462
                                     ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7463
 ((poly_mul::real list => real list => real list) q d)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7464
                                   ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7465
                                     ((op =::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7466
       => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7467
 ((poly::real list => real => real) ((diff::real list => real list) p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7468
 ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7469
   ((poly_mul::real list => real list => real list) e d)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7470
                                     ((op =::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7471
       => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7472
 ((poly::real list => real => real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7473
 ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7474
   ((poly_add::real list => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7475
     ((poly_mul::real list => real list => real list) r p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7476
     ((poly_mul::real list => real list => real list) s
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7477
       ((diff::real list => real list) p))))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7478
                               ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7479
                                 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7480
                                     (op =::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7481
((poly_order::real => real list => nat) a q)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7482
((If::bool => nat => nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7483
  ((op =::nat => nat => bool) ((poly_order::real => real list => nat) a p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7484
    (0::nat))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7485
  (0::nat) (1::nat))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7486
  by (import poly POLY_SQUAREFREE_DECOMP_ORDER)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7487
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7488
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7489
  rsquarefree :: "real list => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7490
  "rsquarefree ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7491
%p. poly p ~= poly [] & (ALL a. poly_order a p = 0 | poly_order a p = 1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7492
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7493
lemma rsquarefree: "ALL p.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7494
   rsquarefree p =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7495
   (poly p ~= poly [] & (ALL a. poly_order a p = 0 | poly_order a p = 1))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7496
  by (import poly rsquarefree)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7497
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7498
lemma RSQUAREFREE_ROOTS: "ALL p. rsquarefree p = (ALL a. ~ (poly p a = 0 & poly (diff p) a = 0))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7499
  by (import poly RSQUAREFREE_ROOTS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7500
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7501
lemma RSQUAREFREE_DECOMP: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7502
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7503
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7504
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7505
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7506
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7507
             ((rsquarefree::real list => bool) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7508
             ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7509
               ((poly::real list => real => real) p a) (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7510
           ((Ex::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7511
             (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7512
                 (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7513
                  ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7514
                    ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7515
                    ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7516
                      ((poly_mul::real list => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7517
                        ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7518
                          ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7519
                          ((op #::real => real list => real list) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7520
                            ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7521
                        q)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7522
                  ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7523
                    ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7524
                      ((poly::real list => real => real) q a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7525
                      (0::real)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7526
  by (import poly RSQUAREFREE_DECOMP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7527
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7528
lemma POLY_SQUAREFREE_DECOMP: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7529
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7530
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7531
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7532
          (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7533
           (%d::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7534
               (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7535
                (%e::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7536
                    (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7537
                     (%r::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7538
                         (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7539
                          (%s::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7540
                              (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7541
                               ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7542
                                 ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7543
                                   ((op =::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7544
     => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7545
                                     ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7546
 ((diff::real list => real list) p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7547
                                     ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7548
 ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7549
                                 ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7550
                                   ((op =::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7551
     => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7552
                                     ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7553
                                     ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7554
 ((poly_mul::real list => real list => real list) q d)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7555
                                   ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7556
                                     ((op =::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7557
       => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7558
 ((poly::real list => real => real) ((diff::real list => real list) p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7559
 ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7560
   ((poly_mul::real list => real list => real list) e d)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7561
                                     ((op =::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7562
       => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7563
 ((poly::real list => real => real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7564
 ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7565
   ((poly_add::real list => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7566
     ((poly_mul::real list => real list => real list) r p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7567
     ((poly_mul::real list => real list => real list) s
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7568
       ((diff::real list => real list) p))))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7569
                               ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7570
                                 ((rsquarefree::real list => bool) q)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7571
                                 ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7572
                                   (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7573
 (op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7574
  ((op =::real => real => bool) ((poly::real list => real => real) q x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7575
    (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7576
  ((op =::real => real => bool) ((poly::real list => real => real) p x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7577
    (0::real)))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7578
  by (import poly POLY_SQUAREFREE_DECOMP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7579
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7580
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7581
  normalize :: "real list => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7582
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7583
specification (normalize) normalize: "normalize [] = [] &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7584
(ALL h t.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7585
    normalize (h # t) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7586
    (if normalize t = [] then if h = 0 then [] else [h]
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7587
     else h # normalize t))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7588
  by (import poly normalize)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7589
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7590
lemma POLY_NORMALIZE: "ALL t. poly (normalize t) = poly t"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7591
  by (import poly POLY_NORMALIZE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7592
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7593
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7594
  degree :: "real list => nat" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7595
  "degree == %p. PRE (length (normalize p))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7596
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7597
lemma degree: "ALL p. degree p = PRE (length (normalize p))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7598
  by (import poly degree)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7599
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7600
lemma DEGREE_ZERO: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7601
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7602
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7603
      ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7604
        ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7605
        ((poly::real list => real => real) ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7606
      ((op =::nat => nat => bool) ((degree::real list => nat) p) (0::nat)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7607
  by (import poly DEGREE_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7608
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7609
lemma POLY_ROOTS_FINITE_SET: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7610
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7611
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7612
      ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7613
        ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7614
          ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7615
          ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7616
      ((FINITE::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7617
        ((GSPEC::(real => real * bool) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7618
          (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7619
              (Pair::real => bool => real * bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7620
               ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7621
                 ((poly::real list => real => real) p x) (0::real))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7622
  by (import poly POLY_ROOTS_FINITE_SET)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7623
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7624
lemma POLY_MONO: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7625
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7626
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7627
      (%k::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7628
          (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7629
           (%xa::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7630
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7631
                ((op <=::real => real => bool) ((abs::real => real) x) k)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7632
                ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7633
                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7634
                    ((poly::real list => real => real) xa x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7635
                  ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7636
                    ((map::(real => real) => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7637
                      (abs::real => real) xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7638
                    k)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7639
  by (import poly POLY_MONO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7640
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7641
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7642
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7643
end
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7644