src/HOL/Import/HOL/HOL4Real.thy
author wenzelm
Wed, 21 Jul 2004 16:35:38 +0200
changeset 15071 b65fc0787fbe
parent 15013 34264f5e4691
child 15647 b1f486a9c56b
permissions -rw-r--r--
updated;
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_LT_ADDNEG: "ALL (x::real) (y::real) z::real. (y < x + - z) = (y + z < x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   276
  by (import real REAL_LT_ADDNEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   277
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   278
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
   279
  by (import real REAL_LT_ADDNEG2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   280
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   281
lemma REAL_LT_ADD1: "ALL (x::real) y::real. x <= y --> x < y + (1::real)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   282
  by (import real REAL_LT_ADD1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   283
14796
1e83aa391ade updated;
wenzelm
parents: 14694
diff changeset
   284
lemma REAL_SUB_ADD2: "ALL (x::real) y::real. y + (x - y) = x"
1e83aa391ade updated;
wenzelm
parents: 14694
diff changeset
   285
  by (import real REAL_SUB_ADD2)
1e83aa391ade updated;
wenzelm
parents: 14694
diff changeset
   286
1e83aa391ade updated;
wenzelm
parents: 14694
diff changeset
   287
lemma REAL_ADD_SUB: "ALL (x::real) y::real. x + y - x = y"
1e83aa391ade updated;
wenzelm
parents: 14694
diff changeset
   288
  by (import real REAL_ADD_SUB)
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   289
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   290
lemma REAL_NEG_EQ: "ALL (x::real) y::real. (- x = y) = (x = - y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   291
  by (import real REAL_NEG_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   292
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   293
lemma REAL_NEG_MINUS1: "ALL x::real. - x = - (1::real) * x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   294
  by (import real REAL_NEG_MINUS1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   295
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   296
lemma REAL_LT_LMUL_0: "ALL (x::real) y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   297
   (0::real) < x --> ((0::real) < x * y) = ((0::real) < y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   298
  by (import real REAL_LT_LMUL_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   299
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   300
lemma REAL_LT_RMUL_0: "ALL (x::real) y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   301
   (0::real) < y --> ((0::real) < x * y) = ((0::real) < x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   302
  by (import real REAL_LT_RMUL_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   303
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   304
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
   305
  by (import real REAL_LT_LMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   306
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   307
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
   308
  by (import real REAL_LINV_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   309
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   310
lemma REAL_LE_INV: "ALL x::real. (0::real) <= x --> (0::real) <= inverse x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   311
  by (import real REAL_LE_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   312
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   313
lemma REAL_LE_ADDR: "ALL (x::real) y::real. (x <= x + y) = ((0::real) <= y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   314
  by (import real REAL_LE_ADDR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   315
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   316
lemma REAL_LE_ADDL: "ALL (x::real) y::real. (y <= x + y) = ((0::real) <= x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   317
  by (import real REAL_LE_ADDL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   318
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   319
lemma REAL_LT_ADDR: "ALL (x::real) y::real. (x < x + y) = ((0::real) < y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   320
  by (import real REAL_LT_ADDR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   321
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   322
lemma REAL_LT_ADDL: "ALL (x::real) y::real. (y < x + y) = ((0::real) < x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   323
  by (import real REAL_LT_ADDL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   324
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   325
lemma REAL_LT_NZ: "ALL n::nat. (real n ~= (0::real)) = ((0::real) < real n)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   326
  by (import real REAL_LT_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   327
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   328
lemma REAL_NZ_IMP_LT: "ALL n::nat. n ~= (0::nat) --> (0::real) < real n"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   329
  by (import real REAL_NZ_IMP_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   330
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   331
lemma REAL_LT_RDIV_0: "ALL (y::real) z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   332
   (0::real) < z --> ((0::real) < y / z) = ((0::real) < y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   333
  by (import real REAL_LT_RDIV_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   334
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   335
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
   336
  by (import real REAL_LT_RDIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   337
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   338
lemma REAL_LT_FRACTION_0: "ALL (n::nat) d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   339
   n ~= (0::nat) --> ((0::real) < d / real n) = ((0::real) < d)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   340
  by (import real REAL_LT_FRACTION_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   341
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   342
lemma REAL_LT_MULTIPLE: "ALL (x::nat) xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   343
   (1::nat) < x --> (xa < real x * xa) = ((0::real) < xa)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   344
  by (import real REAL_LT_MULTIPLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   345
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   346
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
   347
  by (import real REAL_LT_FRACTION)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   348
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   349
lemma REAL_LT_HALF2: "ALL d::real. (d / (2::real) < d) = ((0::real) < d)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   350
  by (import real REAL_LT_HALF2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   351
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   352
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
   353
  by (import real REAL_DIV_LMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   354
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   355
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
   356
  by (import real REAL_DIV_RMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   357
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   358
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
   359
  by (import real REAL_DOWN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   360
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   361
lemma REAL_SUB_SUB: "ALL (x::real) y::real. x - y - x = - y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   362
  by (import real REAL_SUB_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   363
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   364
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
   365
  by (import real REAL_ADD2_SUB2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   366
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   367
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
   368
  by (import real REAL_LET_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   369
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   370
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
   371
  by (import real REAL_LTE_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   372
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   373
lemma REAL_SUB_LNEG: "ALL (x::real) y::real. - x - y = - (x + y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   374
  by (import real REAL_SUB_LNEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   375
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   376
lemma REAL_SUB_NEG2: "ALL (x::real) y::real. - x - - y = y - x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   377
  by (import real REAL_SUB_NEG2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   378
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   379
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
   380
  by (import real REAL_SUB_TRIANGLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   381
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   382
lemma REAL_INV_MUL: "ALL (x::real) y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   383
   x ~= (0::real) & y ~= (0::real) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   384
   inverse (x * y) = inverse x * inverse y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   385
  by (import real REAL_INV_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   386
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   387
lemma REAL_SUB_INV2: "ALL (x::real) y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   388
   x ~= (0::real) & y ~= (0::real) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   389
   inverse x - inverse y = (y - x) / (x * y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   390
  by (import real REAL_SUB_INV2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   391
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   392
lemma REAL_SUB_SUB2: "ALL (x::real) y::real. x - (x - y) = y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   393
  by (import real REAL_SUB_SUB2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   394
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   395
lemma REAL_ADD_SUB2: "ALL (x::real) y::real. x - (x + y) = - y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   396
  by (import real REAL_ADD_SUB2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   397
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   398
lemma REAL_LE_MUL2: "ALL (x1::real) (x2::real) (y1::real) y2::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   399
   (0::real) <= x1 & (0::real) <= y1 & x1 <= x2 & y1 <= y2 -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   400
   x1 * y1 <= x2 * y2"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   401
  by (import real REAL_LE_MUL2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   402
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   403
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
   404
  by (import real REAL_LE_LDIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   405
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   406
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
   407
  by (import real REAL_LE_RDIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   408
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   409
lemma REAL_LT_DIV: "ALL (x::real) xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   410
   (0::real) < x & (0::real) < xa --> (0::real) < x / xa"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   411
  by (import real REAL_LT_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   412
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   413
lemma REAL_LE_DIV: "ALL (x::real) xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   414
   (0::real) <= x & (0::real) <= xa --> (0::real) <= x / xa"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   415
  by (import real REAL_LE_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   416
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   417
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
   418
  by (import real REAL_LT_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   419
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   420
lemma REAL_POS_NZ: "ALL x::real. (0::real) < x --> x ~= (0::real)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   421
  by (import real REAL_POS_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   422
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   423
lemma REAL_EQ_LMUL_IMP: "ALL (x::real) (xa::real) xb::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   424
   x ~= (0::real) & x * xa = x * xb --> xa = xb"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   425
  by (import real REAL_EQ_LMUL_IMP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   426
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   427
lemma REAL_FACT_NZ: "ALL n. real (FACT n) ~= 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   428
  by (import real REAL_FACT_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   429
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   430
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
   431
  by (import real REAL_DIFFSQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   432
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   433
lemma REAL_POASQ: "ALL x::real. ((0::real) < x * x) = (x ~= (0::real))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   434
  by (import real REAL_POASQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   435
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   436
lemma REAL_SUMSQ: "ALL (x::real) y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   437
   (x * x + y * y = (0::real)) = (x = (0::real) & y = (0::real))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   438
  by (import real REAL_SUMSQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   439
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   440
lemma REAL_MIDDLE1: "ALL (a::real) b::real. a <= b --> a <= (a + b) / (2::real)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   441
  by (import real REAL_MIDDLE1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   442
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   443
lemma REAL_MIDDLE2: "ALL (a::real) b::real. a <= b --> (a + b) / (2::real) <= b"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   444
  by (import real REAL_MIDDLE2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   445
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   446
lemma ABS_LT_MUL2: "ALL (w::real) (x::real) (y::real) z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   447
   abs w < y & abs x < z --> abs (w * x) < y * z"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   448
  by (import real ABS_LT_MUL2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   449
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   450
lemma ABS_SUB: "ALL (x::real) y::real. abs (x - y) = abs (y - x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   451
  by (import real ABS_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   452
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   453
lemma ABS_REFL: "ALL x::real. (abs x = x) = ((0::real) <= x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   454
  by (import real ABS_REFL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   455
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   456
lemma ABS_BETWEEN: "ALL (x::real) (y::real) d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   457
   ((0::real) < d & x - d < y & y < x + d) = (abs (y - x) < d)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   458
  by (import real ABS_BETWEEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   459
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   460
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
   461
  by (import real ABS_BOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   462
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   463
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
   464
  by (import real ABS_STILLNZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   465
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   466
lemma ABS_CASES: "ALL x::real. x = (0::real) | (0::real) < abs x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   467
  by (import real ABS_CASES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   468
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   469
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
   470
  by (import real ABS_BETWEEN1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   471
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   472
lemma ABS_SIGN: "ALL (x::real) y::real. abs (x - y) < y --> (0::real) < x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   473
  by (import real ABS_SIGN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   474
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   475
lemma ABS_SIGN2: "ALL (x::real) y::real. abs (x - y) < - y --> x < (0::real)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   476
  by (import real ABS_SIGN2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   477
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   478
lemma ABS_CIRCLE: "ALL (x::real) (y::real) h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   479
   abs h < abs y - abs x --> abs (x + h) < abs y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   480
  by (import real ABS_CIRCLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   481
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   482
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
   483
  by (import real REAL_SUB_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   484
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   485
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
   486
  by (import real ABS_SUB_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   487
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   488
lemma ABS_BETWEEN2: "ALL (x0::real) (x::real) (y0::real) y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   489
   x0 < y0 &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   490
   abs (x - x0) < (y0 - x0) / (2::real) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   491
   abs (y - y0) < (y0 - x0) / (2::real) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   492
   x < y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   493
  by (import real ABS_BETWEEN2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   494
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   495
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
   496
  by (import real POW_PLUS1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   497
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   498
lemma POW_M1: "ALL n::nat. abs ((- (1::real)) ^ n) = (1::real)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   499
  by (import real POW_M1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   500
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   501
lemma REAL_LE1_POW2: "ALL x::real. (1::real) <= x --> (1::real) <= x ^ 2"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   502
  by (import real REAL_LE1_POW2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   503
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   504
lemma REAL_LT1_POW2: "ALL x::real. (1::real) < x --> (1::real) < x ^ 2"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   505
  by (import real REAL_LT1_POW2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   506
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   507
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
   508
  by (import real POW_POS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   509
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   510
lemma POW_LT: "ALL (n::nat) (x::real) y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   511
   (0::real) <= x & x < y --> x ^ Suc n < y ^ Suc n"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   512
  by (import real POW_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   513
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   514
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
   515
  by (import real POW_ZERO_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   517
lemma REAL_POW_LT2: "ALL (n::nat) (x::real) y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   518
   n ~= (0::nat) & (0::real) <= x & x < y --> x ^ n < y ^ n"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   519
  by (import real REAL_POW_LT2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   520
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   521
lemma REAL_SUP_SOMEPOS: "ALL P::real => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   522
   (EX x::real. P x & (0::real) < x) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   523
   (EX z::real. ALL x::real. P x --> x < z) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   524
   (EX s::real. ALL y::real. (EX x::real. P x & y < x) = (y < s))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   525
  by (import real REAL_SUP_SOMEPOS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   526
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   527
lemma SUP_LEMMA1: "ALL (P::real => bool) (s::real) d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   528
   (ALL y::real. (EX x::real. P (x + d) & y < x) = (y < s)) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   529
   (ALL y::real. (EX x::real. P x & y < x) = (y < s + d))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   530
  by (import real SUP_LEMMA1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   531
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   532
lemma SUP_LEMMA2: "ALL P::real => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   533
   Ex P --> (EX (d::real) x::real. P (x + d) & (0::real) < x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   534
  by (import real SUP_LEMMA2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   535
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   536
lemma SUP_LEMMA3: "ALL d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   537
   (EX z::real. ALL x::real. (P::real => bool) x --> x < z) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   538
   (EX x::real. ALL xa::real. P (xa + d) --> xa < x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   539
  by (import real SUP_LEMMA3)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   540
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   541
lemma REAL_SUP_EXISTS: "ALL P::real => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   542
   Ex P & (EX z::real. ALL x::real. P x --> x < z) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   543
   (EX x::real. ALL y::real. (EX x::real. P x & y < x) = (y < x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   544
  by (import real REAL_SUP_EXISTS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   545
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   546
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   547
  sup :: "(real => bool) => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   548
  "sup == %P. SOME s. ALL y. (EX x. P x & y < x) = (y < s)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   549
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   550
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
   551
  by (import real sup)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   552
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   553
lemma REAL_SUP: "ALL P.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   554
   Ex P & (EX z. ALL x. P x --> x < z) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   555
   (ALL y. (EX x. P x & y < x) = (y < sup P))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   556
  by (import real REAL_SUP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   557
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   558
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
   559
  by (import real REAL_SUP_UBOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   560
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   561
lemma SETOK_LE_LT: "ALL P::real => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   562
   (Ex P & (EX z::real. ALL x::real. P x --> x <= z)) =
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
  by (import real SETOK_LE_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   565
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   566
lemma REAL_SUP_LE: "ALL P.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   567
   Ex P & (EX z. ALL x. P x --> x <= z) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   568
   (ALL y. (EX x. P x & y < x) = (y < sup P))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   569
  by (import real REAL_SUP_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   570
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   571
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
   572
  by (import real REAL_SUP_UBOUND_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   573
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   574
lemma REAL_ARCH_LEAST: "ALL y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   575
   0 < y -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   576
   (ALL x. 0 <= x --> (EX n. real n * y <= x & x < real (Suc n) * y))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   577
  by (import real REAL_ARCH_LEAST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   578
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   579
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   580
  sumc :: "nat => nat => (nat => real) => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   581
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   582
specification (sumc) sumc: "(ALL n f. sumc n 0 f = 0) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   583
(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
   584
  by (import real sumc)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   585
14694
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
   586
consts
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   587
  sum :: "nat * nat => (nat => real) => real" 
14694
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
   588
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
   589
defs
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
   590
  sum_def: "real.sum == split sumc"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   591
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   592
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
   593
  by (import real SUM_DEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   594
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   595
lemma sum: "ALL x xa xb.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   596
   real.sum (xa, 0) x = 0 &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   597
   real.sum (xa, Suc xb) x = real.sum (xa, xb) x + x (xa + xb)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   598
  by (import real sum)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   599
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   600
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
   601
  by (import real SUM_TWO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   602
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   603
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
   604
  by (import real SUM_DIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   605
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   606
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
   607
  by (import real ABS_SUM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   608
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   609
lemma SUM_LE: "ALL f g m n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   610
   (ALL r. m <= r & r < n + m --> f r <= g r) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   611
   real.sum (m, n) f <= real.sum (m, n) g"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   612
  by (import real SUM_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   613
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   614
lemma SUM_EQ: "ALL f g m n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   615
   (ALL r. m <= r & r < n + m --> f r = g r) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   616
   real.sum (m, n) f = real.sum (m, n) g"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   617
  by (import real SUM_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   618
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   619
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
   620
  by (import real SUM_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   621
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   622
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
   623
  by (import real SUM_POS_GEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   624
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   625
lemma SUM_ABS: "ALL f m x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   626
   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
   627
  by (import real SUM_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   628
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   629
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
   630
  by (import real SUM_ABS_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   631
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   632
lemma SUM_ZERO: "ALL f N.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   633
   (ALL n. N <= n --> f n = 0) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   634
   (ALL m n. N <= m --> real.sum (m, n) f = 0)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   635
  by (import real SUM_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   636
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   637
lemma SUM_ADD: "ALL f g m n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   638
   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
   639
  by (import real SUM_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   640
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   641
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
   642
  by (import real SUM_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   643
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   644
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
   645
  by (import real SUM_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   646
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   647
lemma SUM_SUB: "ALL f g m n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   648
   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
   649
  by (import real SUM_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   650
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   651
lemma SUM_SUBST: "ALL f g m n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   652
   (ALL p. m <= p & p < m + n --> f p = g p) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   653
   real.sum (m, n) f = real.sum (m, n) g"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   654
  by (import real SUM_SUBST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   655
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   656
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
   657
  by (import real SUM_NSUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   658
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   659
lemma SUM_BOUND: "ALL f k m n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   660
   (ALL p. m <= p & p < m + n --> f p <= k) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   661
   real.sum (m, n) f <= real n * k"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   662
  by (import real SUM_BOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   663
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   664
lemma SUM_GROUP: "ALL n k f.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   665
   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
   666
  by (import real SUM_GROUP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   667
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   668
lemma SUM_1: "ALL f n. real.sum (n, 1) f = f n"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   669
  by (import real SUM_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   670
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   671
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
   672
  by (import real SUM_2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   673
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   674
lemma SUM_OFFSET: "ALL f n k.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   675
   real.sum (0, n) (%m. f (m + k)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   676
   real.sum (0, n + k) f - real.sum (0, k) f"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   677
  by (import real SUM_OFFSET)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   678
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   679
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
   680
  by (import real SUM_REINDEX)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   681
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   682
lemma SUM_0: "ALL m n. real.sum (m, n) (%r. 0) = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   683
  by (import real SUM_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   684
14847
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   685
lemma SUM_PERMUTE_0: "(All::(nat => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   686
 (%n::nat.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   687
     (All::((nat => nat) => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   688
      (%p::nat => nat.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   689
          (op -->::bool => bool => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   690
           ((All::(nat => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   691
             (%y::nat.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   692
                 (op -->::bool => bool => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   693
                  ((op <::nat => nat => bool) y n)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   694
                  ((Ex1::(nat => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   695
                    (%x::nat.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   696
                        (op &::bool => bool => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   697
                         ((op <::nat => nat => bool) x n)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   698
                         ((op =::nat => nat => bool) (p x) y)))))
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   699
           ((All::((nat => real) => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   700
             (%f::nat => real.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   701
                 (op =::real => real => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   702
                  ((real.sum::nat * nat => (nat => real) => real)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   703
                    ((Pair::nat => nat => nat * nat) (0::nat) n)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   704
                    (%n::nat. f (p n)))
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   705
                  ((real.sum::nat * nat => (nat => real) => real)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
   706
                    ((Pair::nat => nat => nat * nat) (0::nat) n) f)))))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   707
  by (import real SUM_PERMUTE_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   708
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   709
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
   710
  by (import real SUM_CANCEL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   711
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   712
lemma REAL_EQ_RDIV_EQ: "ALL (x::real) (xa::real) xb::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   713
   (0::real) < xb --> (x = xa / xb) = (x * xb = xa)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   714
  by (import real REAL_EQ_RDIV_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   715
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   716
lemma REAL_EQ_LDIV_EQ: "ALL (x::real) (xa::real) xb::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   717
   (0::real) < xb --> (x / xb = xa) = (x = xa * xb)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   718
  by (import real REAL_EQ_LDIV_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   719
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   720
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   721
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   722
;setup_theory topology
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   723
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   724
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   725
  re_Union :: "(('a => bool) => bool) => 'a => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   726
  "re_Union == %P x. EX s. P s & s x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   727
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   728
lemma re_Union: "ALL P. re_Union P = (%x. EX s. P s & s x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   729
  by (import topology re_Union)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   730
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   731
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   732
  re_union :: "('a => bool) => ('a => bool) => 'a => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   733
  "re_union == %P Q x. P x | Q x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   734
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   735
lemma re_union: "ALL P Q. re_union P Q = (%x. P x | Q x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   736
  by (import topology re_union)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   737
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   738
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   739
  re_intersect :: "('a => bool) => ('a => bool) => 'a => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   740
  "re_intersect == %P Q x. P x & Q x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   741
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   742
lemma re_intersect: "ALL P Q. re_intersect P Q = (%x. P x & Q x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   743
  by (import topology re_intersect)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   744
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   745
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   746
  re_null :: "'a => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   747
  "re_null == %x. False"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   748
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   749
lemma re_null: "re_null = (%x. False)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   750
  by (import topology re_null)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   751
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   752
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   753
  re_universe :: "'a => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   754
  "re_universe == %x. True"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   755
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   756
lemma re_universe: "re_universe = (%x. True)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   757
  by (import topology re_universe)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   758
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   759
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   760
  re_subset :: "('a => bool) => ('a => bool) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   761
  "re_subset == %P Q. ALL x. P x --> Q x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   762
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   763
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
   764
  by (import topology re_subset)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   765
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   766
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   767
  re_compl :: "('a => bool) => 'a => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   768
  "re_compl == %P x. ~ P x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   769
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   770
lemma re_compl: "ALL P. re_compl P = (%x. ~ P x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   771
  by (import topology re_compl)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   772
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   773
lemma SUBSET_REFL: "ALL P. re_subset P P"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   774
  by (import topology SUBSET_REFL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   775
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   776
lemma COMPL_MEM: "ALL P x. P x = (~ re_compl P x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   777
  by (import topology COMPL_MEM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   778
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   779
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
   780
  by (import topology SUBSET_ANTISYM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   781
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   782
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
   783
  by (import topology SUBSET_TRANS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   784
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   785
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   786
  istopology :: "(('a => bool) => bool) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   787
  "istopology ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   788
%L. L re_null &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   789
    L re_universe &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   790
    (ALL a b. L a & L b --> L (re_intersect a b)) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   791
    (ALL P. re_subset P L --> L (re_Union P))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   792
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   793
lemma istopology: "ALL L.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   794
   istopology L =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   795
   (L re_null &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   796
    L re_universe &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   797
    (ALL a b. L a & L b --> L (re_intersect a b)) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   798
    (ALL P. re_subset P L --> L (re_Union P)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   799
  by (import topology istopology)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   800
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   801
typedef (open) ('a) topology = "(Collect::((('a => bool) => bool) => bool) => (('a => bool) => bool) set)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   802
 (istopology::(('a => bool) => bool) => bool)" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   803
  by (rule typedef_helper,import topology topology_TY_DEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   804
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   805
lemmas topology_TY_DEF = typedef_hol2hol4 [OF type_definition_topology]
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   806
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   807
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   808
  topology :: "(('a => bool) => bool) => 'a topology" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   809
  "open" :: "'a topology => ('a => bool) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   810
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   811
specification ("open" topology) topology_tybij: "(ALL a::'a topology. topology (open a) = a) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   812
(ALL r::('a => bool) => bool. istopology r = (open (topology r) = r))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   813
  by (import topology topology_tybij)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   814
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   815
lemma TOPOLOGY: "ALL L.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   816
   open L re_null &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   817
   open L re_universe &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   818
   (ALL a b. open L a & open L b --> open L (re_intersect a b)) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   819
   (ALL P. re_subset P (open L) --> open L (re_Union P))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   820
  by (import topology TOPOLOGY)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   821
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   822
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
   823
  by (import topology TOPOLOGY_UNION)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   824
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   825
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   826
  neigh :: "'a topology => ('a => bool) * 'a => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   827
  "neigh == %top (N, x). EX P. open top P & re_subset P N & P x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   828
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   829
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
   830
  by (import topology neigh)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   831
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   832
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
   833
  by (import topology OPEN_OWN_NEIGH)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   834
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   835
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
   836
  by (import topology OPEN_UNOPEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   837
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   838
lemma OPEN_SUBOPEN: "ALL S' top.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   839
   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
   840
  by (import topology OPEN_SUBOPEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   841
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   842
lemma OPEN_NEIGH: "ALL S' top.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   843
   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
   844
  by (import topology OPEN_NEIGH)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   845
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   846
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   847
  closed :: "'a topology => ('a => bool) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   848
  "closed == %L S'. open L (re_compl S')"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   849
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   850
lemma closed: "ALL L S'. closed L S' = open L (re_compl S')"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   851
  by (import topology closed)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   852
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   853
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   854
  limpt :: "'a topology => 'a => ('a => bool) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   855
  "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
   856
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   857
lemma limpt: "ALL top x S'.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   858
   limpt top x S' =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   859
   (ALL N. neigh top (N, x) --> (EX y. x ~= y & S' y & N y))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   860
  by (import topology limpt)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   861
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   862
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
   863
  by (import topology CLOSED_LIMPT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   864
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   865
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   866
  ismet :: "('a * 'a => real) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   867
  "ismet ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   868
%m. (ALL x y. (m (x, y) = 0) = (x = y)) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   869
    (ALL x y z. m (y, z) <= m (x, y) + m (x, z))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   870
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   871
lemma ismet: "ALL m.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   872
   ismet m =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   873
   ((ALL x y. (m (x, y) = 0) = (x = y)) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   874
    (ALL x y z. m (y, z) <= m (x, y) + m (x, z)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   875
  by (import topology ismet)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   876
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   877
typedef (open) ('a) metric = "(Collect::(('a * 'a => real) => bool) => ('a * 'a => real) set)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   878
 (ismet::('a * 'a => real) => bool)" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   879
  by (rule typedef_helper,import topology metric_TY_DEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   880
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   881
lemmas metric_TY_DEF = typedef_hol2hol4 [OF type_definition_metric]
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   882
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   883
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   884
  metric :: "('a * 'a => real) => 'a metric" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   885
  dist :: "'a metric => 'a * 'a => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   886
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   887
specification (dist metric) metric_tybij: "(ALL a::'a metric. metric (dist a) = a) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   888
(ALL r::'a * 'a => real. ismet r = (dist (metric r) = r))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   889
  by (import topology metric_tybij)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   890
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   891
lemma METRIC_ISMET: "ALL m. ismet (dist m)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   892
  by (import topology METRIC_ISMET)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   893
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   894
lemma METRIC_ZERO: "ALL m x y. (dist m (x, y) = 0) = (x = y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   895
  by (import topology METRIC_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   896
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   897
lemma METRIC_SAME: "ALL m x. dist m (x, x) = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   898
  by (import topology METRIC_SAME)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   899
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   900
lemma METRIC_POS: "ALL m x y. 0 <= dist m (x, y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   901
  by (import topology METRIC_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   902
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   903
lemma METRIC_SYM: "ALL m x y. dist m (x, y) = dist m (y, x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   904
  by (import topology METRIC_SYM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   905
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   906
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
   907
  by (import topology METRIC_TRIANGLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   908
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   909
lemma METRIC_NZ: "ALL m x y. x ~= y --> 0 < dist m (x, y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   910
  by (import topology METRIC_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   911
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   912
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   913
  mtop :: "'a metric => 'a topology" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   914
  "mtop ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   915
%m. topology
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   916
     (%S'. ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   917
              S' x --> (EX e. 0 < e & (ALL y. dist m (x, y) < e --> S' y)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   918
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   919
lemma mtop: "ALL m.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   920
   mtop m =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   921
   topology
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   922
    (%S'. ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   923
             S' x --> (EX e. 0 < e & (ALL y. dist m (x, y) < e --> S' y)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   924
  by (import topology mtop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   925
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   926
lemma mtop_istopology: "ALL m.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   927
   istopology
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   928
    (%S'. ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   929
             S' x --> (EX e. 0 < e & (ALL y. dist m (x, y) < e --> S' y)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   930
  by (import topology mtop_istopology)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   931
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   932
lemma MTOP_OPEN: "ALL S' x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   933
   open (mtop x) S' =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   934
   (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
   935
  by (import topology MTOP_OPEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   936
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   937
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   938
  B :: "'a metric => 'a * real => 'a => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   939
  "B == %m (x, e) y. dist m (x, y) < e"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   940
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   941
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
   942
  by (import topology ball)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   943
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   944
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
   945
  by (import topology BALL_OPEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   946
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   947
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
   948
  by (import topology BALL_NEIGH)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   949
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   950
lemma MTOP_LIMPT: "ALL m x S'.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   951
   limpt (mtop m) x S' =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   952
   (ALL e. 0 < e --> (EX y. x ~= y & S' y & dist m (x, y) < e))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   953
  by (import topology MTOP_LIMPT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   954
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   955
lemma ISMET_R1: "ismet (%(x, y). abs (y - x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   956
  by (import topology ISMET_R1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   957
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   958
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   959
  mr1 :: "real metric" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   960
  "mr1 == metric (%(x, y). abs (y - x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   961
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   962
lemma mr1: "mr1 = metric (%(x, y). abs (y - x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   963
  by (import topology mr1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   964
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   965
lemma MR1_DEF: "ALL x y. dist mr1 (x, y) = abs (y - x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   966
  by (import topology MR1_DEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   967
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   968
lemma MR1_ADD: "ALL x d. dist mr1 (x, x + d) = abs d"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   969
  by (import topology MR1_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   970
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   971
lemma MR1_SUB: "ALL x d. dist mr1 (x, x - d) = abs d"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   972
  by (import topology MR1_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   973
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   974
lemma MR1_ADD_POS: "ALL x d. 0 <= d --> dist mr1 (x, x + d) = d"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   975
  by (import topology MR1_ADD_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   976
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   977
lemma MR1_SUB_LE: "ALL x d. 0 <= d --> dist mr1 (x, x - d) = d"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   978
  by (import topology MR1_SUB_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   979
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   980
lemma MR1_ADD_LT: "ALL x d. 0 < d --> dist mr1 (x, x + d) = d"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   981
  by (import topology MR1_ADD_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   982
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   983
lemma MR1_SUB_LT: "ALL x d. 0 < d --> dist mr1 (x, x - d) = d"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   984
  by (import topology MR1_SUB_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   985
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   986
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
   987
  by (import topology MR1_BETWEEN1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   988
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   989
lemma MR1_LIMPT: "ALL x. limpt (mtop mr1) x re_universe"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   990
  by (import topology MR1_LIMPT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   991
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   992
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   993
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   994
;setup_theory nets
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   995
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   996
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   997
  dorder :: "('a => 'a => bool) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   998
  "dorder ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
   999
%g. ALL x y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1000
       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
  1001
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1002
lemma dorder: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1003
   dorder g =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1004
   (ALL x y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1005
       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
  1006
  by (import nets dorder)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1007
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1008
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1009
  tends :: "('b => 'a) => 'a => 'a topology * ('b => 'b => bool) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1010
  "tends ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1011
%(s::'b => 'a) (l::'a) (top::'a topology, g::'b => 'b => bool).
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1012
   ALL N::'a => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1013
      neigh top (N, l) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1014
      (EX n::'b. g n n & (ALL m::'b. g m n --> N (s m)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1015
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1016
lemma tends: "ALL (s::'b => 'a) (l::'a) (top::'a topology) g::'b => 'b => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1017
   tends s l (top, g) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1018
   (ALL N::'a => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1019
       neigh top (N, l) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1020
       (EX n::'b. g n n & (ALL m::'b. g m n --> N (s m))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1021
  by (import nets tends)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1022
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1023
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1024
  bounded :: "'a metric * ('b => 'b => bool) => ('b => 'a) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1025
  "bounded ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1026
%(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
  1027
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1028
lemma bounded: "ALL m g f.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1029
   bounded (m, g) f =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1030
   (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
  1031
  by (import nets bounded)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1032
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1033
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1034
  tendsto :: "'a metric * 'a => 'a => 'a => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1035
  "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
  1036
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1037
lemma tendsto: "ALL m x y z.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1038
   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
  1039
  by (import nets tendsto)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1040
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1041
lemma DORDER_LEMMA: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1042
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1043
   (ALL P Q.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1044
       (EX n. g n n & (ALL m. g m n --> P m)) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1045
       (EX n. g n n & (ALL m. g m n --> Q m)) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1046
       (EX n. g n n & (ALL m. g m n --> P m & Q m)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1047
  by (import nets DORDER_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1048
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1049
lemma DORDER_NGE: "dorder nat_ge"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1050
  by (import nets DORDER_NGE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1051
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1052
lemma DORDER_TENDSTO: "ALL m x. dorder (tendsto (m, x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1053
  by (import nets DORDER_TENDSTO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1054
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1055
lemma MTOP_TENDS: "ALL d g x x0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1056
   tends x x0 (mtop d, g) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1057
   (ALL e.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1058
       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
  1059
  by (import nets MTOP_TENDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1060
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1061
lemma MTOP_TENDS_UNIQ: "ALL (g::'b => 'b => bool) d::'a metric.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1062
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1063
   tends (x::'b => 'a) (x0::'a) (mtop d, g) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1064
   tends x (x1::'a) (mtop d, g) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1065
   x0 = x1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1066
  by (import nets MTOP_TENDS_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1067
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1068
lemma SEQ_TENDS: "ALL d x x0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1069
   tends x x0 (mtop d, nat_ge) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1070
   (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
  1071
  by (import nets SEQ_TENDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1072
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1073
lemma LIM_TENDS: "ALL m1 m2 f x0 y0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1074
   limpt (mtop m1) x0 re_universe -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1075
   tends f y0 (mtop m2, tendsto (m1, x0)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1076
   (ALL e.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1077
       0 < e -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1078
       (EX d. 0 < d &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1079
              (ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1080
                  0 < dist m1 (x, x0) & dist m1 (x, x0) <= d -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1081
                  dist m2 (f x, y0) < e)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1082
  by (import nets LIM_TENDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1083
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1084
lemma LIM_TENDS2: "ALL m1 m2 f x0 y0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1085
   limpt (mtop m1) x0 re_universe -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1086
   tends f y0 (mtop m2, tendsto (m1, x0)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1087
   (ALL e.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1088
       0 < e -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1089
       (EX d. 0 < d &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1090
              (ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1091
                  0 < dist m1 (x, x0) & dist m1 (x, x0) < d -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1092
                  dist m2 (f x, y0) < e)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1093
  by (import nets LIM_TENDS2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1094
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1095
lemma MR1_BOUNDED: "ALL g f.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1096
   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
  1097
  by (import nets MR1_BOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1098
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1099
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
  1100
  by (import nets NET_NULL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1101
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1102
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
  1103
  by (import nets NET_CONV_BOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1104
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1105
lemma NET_CONV_NZ: "ALL g x x0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1106
   tends x x0 (mtop mr1, g) & x0 ~= 0 -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1107
   (EX N. g N N & (ALL n. g n N --> x n ~= 0))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1108
  by (import nets NET_CONV_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1109
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1110
lemma NET_CONV_IBOUNDED: "ALL g x x0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1111
   tends x x0 (mtop mr1, g) & x0 ~= 0 -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1112
   bounded (mr1, g) (%n. inverse (x n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1113
  by (import nets NET_CONV_IBOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1114
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1115
lemma NET_NULL_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 y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1118
       tends x 0 (mtop mr1, g) & tends y 0 (mtop mr1, g) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1119
       tends (%n. x n + y n) 0 (mtop mr1, g))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1120
  by (import nets NET_NULL_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1121
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1122
lemma NET_NULL_MUL: "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 y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1125
       bounded (mr1, g) x & tends y 0 (mtop mr1, g) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1126
       tends (%n. x n * y n) 0 (mtop mr1, g))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1127
  by (import nets NET_NULL_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1128
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1129
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
  1130
  by (import nets NET_NULL_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1131
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1132
lemma NET_ADD: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1133
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1134
   (ALL x x0 y y0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1135
       tends x x0 (mtop mr1, g) & tends y y0 (mtop mr1, g) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1136
       tends (%n. x n + y n) (x0 + y0) (mtop mr1, g))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1137
  by (import nets NET_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1138
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1139
lemma NET_NEG: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1140
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1141
   (ALL x x0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1142
       tends x x0 (mtop mr1, g) = tends (%n. - x n) (- x0) (mtop mr1, g))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1143
  by (import nets NET_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1144
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1145
lemma NET_SUB: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1146
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1147
   (ALL x x0 y y0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1148
       tends x x0 (mtop mr1, g) & tends y y0 (mtop mr1, g) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1149
       tends (%xa. x xa - y xa) (x0 - y0) (mtop mr1, g))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1150
  by (import nets NET_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1151
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1152
lemma NET_MUL: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1153
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1154
   (ALL x y x0 y0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1155
       tends x x0 (mtop mr1, g) & tends y y0 (mtop mr1, g) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1156
       tends (%n. x n * y n) (x0 * y0) (mtop mr1, g))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1157
  by (import nets NET_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1158
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1159
lemma NET_INV: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1160
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1161
   (ALL x x0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1162
       tends x x0 (mtop mr1, g) & x0 ~= 0 -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1163
       tends (%n. inverse (x n)) (inverse x0) (mtop mr1, g))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1164
  by (import nets NET_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1165
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1166
lemma NET_DIV: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1167
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1168
   (ALL x x0 y y0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1169
       tends x x0 (mtop mr1, g) & tends y y0 (mtop mr1, g) & y0 ~= 0 -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1170
       tends (%xa. x xa / y xa) (x0 / y0) (mtop mr1, g))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1171
  by (import nets NET_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1172
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1173
lemma NET_ABS: "ALL g x x0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1174
   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
  1175
  by (import nets NET_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1176
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1177
lemma NET_LE: "ALL g.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1178
   dorder g -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1179
   (ALL x x0 y y0.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1180
       tends x x0 (mtop mr1, g) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1181
       tends y y0 (mtop mr1, g) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1182
       (EX N. g N N & (ALL n. g n N --> x n <= y n)) -->
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1183
       x0 <= y0)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1184
  by (import nets NET_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1185
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1186
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1187
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1188
;setup_theory seq
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1189
14694
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
  1190
consts
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1191
  "-->" :: "(nat => real) => real => bool" ("-->")
14694
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
  1192
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
  1193
defs
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
  1194
  "-->_def": "--> == %x x0. tends x x0 (mtop mr1, nat_ge)"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1195
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1196
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
  1197
  by (import seq tends_num_real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1198
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1199
lemma SEQ: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1200
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1201
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1202
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1203
          (op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1204
           ((-->::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1205
           ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1206
             (%e::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1207
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1208
                  ((op <::real => real => bool) (0::real) e)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1209
                  ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1210
                    (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1211
                        (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1212
                         (%n::nat.
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 <=::nat => nat => bool) N n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1215
                              ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1216
                                ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1217
                                  ((op -::real => real => real) (x n) x0))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1218
                                e))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1219
  by (import seq SEQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1220
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1221
lemma SEQ_CONST: "ALL k. --> (%x. k) k"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1222
  by (import seq SEQ_CONST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1223
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1224
lemma SEQ_ADD: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1225
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1226
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1227
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1228
          (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1229
           (%y::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1230
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1231
                (%y0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1232
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1233
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1234
                       ((-->::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1235
                       ((-->::(nat => real) => real => bool) y y0))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1236
                     ((-->::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1237
                       (%n::nat. (op +::real => real => real) (x n) (y n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1238
                       ((op +::real => real => real) x0 y0))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1239
  by (import seq SEQ_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1240
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1241
lemma SEQ_MUL: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1242
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1243
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1244
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1245
          (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1246
           (%y::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1247
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1248
                (%y0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1249
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1250
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1251
                       ((-->::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1252
                       ((-->::(nat => real) => real => bool) y y0))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1253
                     ((-->::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1254
                       (%n::nat. (op *::real => real => real) (x n) (y n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1255
                       ((op *::real => real => real) x0 y0))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1256
  by (import seq SEQ_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1257
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1258
lemma SEQ_NEG: "ALL x x0. --> x x0 = --> (%n. - x n) (- x0)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1259
  by (import seq SEQ_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1260
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1261
lemma SEQ_INV: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1262
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1263
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1264
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1265
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1266
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1267
             ((-->::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1268
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1269
               ((op =::real => real => bool) x0 (0::real))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1270
           ((-->::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1271
             (%n::nat. (inverse::real => real) (x n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1272
             ((inverse::real => real) x0))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1273
  by (import seq SEQ_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1274
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1275
lemma SEQ_SUB: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1276
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1277
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1278
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1279
          (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1280
           (%y::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1281
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1282
                (%y0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1283
                    (op -->::bool => bool => bool)
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) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1286
                       ((-->::(nat => real) => real => bool) y y0))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1287
                     ((-->::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1288
                       (%n::nat. (op -::real => real => real) (x n) (y n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1289
                       ((op -::real => real => real) x0 y0))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1290
  by (import seq SEQ_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1291
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1292
lemma SEQ_DIV: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1293
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1294
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1295
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1296
          (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1297
           (%y::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1298
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1299
                (%y0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1300
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1301
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1302
                       ((-->::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1303
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1304
                         ((-->::(nat => real) => real => bool) y y0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1305
                         ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1306
                           ((op =::real => real => bool) y0 (0::real)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1307
                     ((-->::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1308
                       (%n::nat. (op /::real => real => real) (x n) (y n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1309
                       ((op /::real => real => real) x0 y0))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1310
  by (import seq SEQ_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1311
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1312
lemma SEQ_UNIQ: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1313
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1314
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1315
      (%x1::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1316
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1317
           (%x2::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1318
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1319
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1320
                  ((-->::(nat => real) => real => bool) x x1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1321
                  ((-->::(nat => real) => real => bool) x x2))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1322
                ((op =::real => real => bool) x1 x2))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1323
  by (import seq SEQ_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1324
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1325
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1326
  convergent :: "(nat => real) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1327
  "convergent == %f. Ex (--> f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1328
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1329
lemma convergent: "ALL f. convergent f = Ex (--> f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1330
  by (import seq convergent)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1331
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1332
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1333
  cauchy :: "(nat => real) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1334
  "(op ==::((nat => real) => bool) => ((nat => real) => bool) => prop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1335
 (cauchy::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1336
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1337
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1338
      (%e::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1339
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1340
           ((op <::real => real => bool) (0::real) e)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1341
           ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1342
             (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1343
                 (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1344
                  (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1345
                      (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1346
                       (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1347
                           (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1348
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1349
                              ((op <=::nat => nat => bool) N m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1350
                              ((op <=::nat => nat => bool) N n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1351
                            ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1352
                              ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1353
                                ((op -::real => real => real) (f m) (f n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1354
                              e)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1355
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1356
lemma cauchy: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1357
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1358
     (op =::bool => bool => bool) ((cauchy::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1359
      ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1360
        (%e::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1361
            (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1362
             ((op <::real => real => bool) (0::real) e)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1363
             ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1364
               (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1365
                   (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1366
                    (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1367
                        (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1368
                         (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1369
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1370
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1371
                                ((op <=::nat => nat => bool) N m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1372
                                ((op <=::nat => nat => bool) N n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1373
                              ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1374
                                ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1375
                                  ((op -::real => real => real) (f m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1376
                                    (f n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1377
                                e))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1378
  by (import seq cauchy)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1379
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1380
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1381
  lim :: "(nat => real) => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1382
  "lim == %f. Eps (--> f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1383
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1384
lemma lim: "ALL f. lim f = Eps (--> f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1385
  by (import seq lim)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1386
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1387
lemma SEQ_LIM: "ALL f. convergent f = --> f (lim f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1388
  by (import seq SEQ_LIM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1389
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1390
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1391
  subseq :: "(nat => nat) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1392
  "(op ==::((nat => nat) => bool) => ((nat => nat) => bool) => prop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1393
 (subseq::(nat => nat) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1394
 (%f::nat => nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1395
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1396
      (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1397
          (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1398
           (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1399
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1400
                ((op <::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1401
                ((op <::nat => nat => bool) (f m) (f n)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1402
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1403
lemma subseq: "(All::((nat => nat) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1404
 (%f::nat => nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1405
     (op =::bool => bool => bool) ((subseq::(nat => nat) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1406
      ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1407
        (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1408
            (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1409
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1410
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1411
                  ((op <::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1412
                  ((op <::nat => nat => bool) (f m) (f n))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1413
  by (import seq subseq)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1414
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1415
lemma SUBSEQ_SUC: "ALL f. subseq f = (ALL n. f n < f (Suc n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1416
  by (import seq SUBSEQ_SUC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1417
14694
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
  1418
consts
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1419
  mono :: "(nat => real) => bool" 
14694
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
  1420
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
  1421
defs
49873d345a39 removed 'constdefs' hack;
wenzelm
parents: 14516
diff changeset
  1422
  mono_def: "(op ==::((nat => real) => bool) => ((nat => real) => bool) => prop)
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1423
 (seq.mono::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1424
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1425
     (op |::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1426
      ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1427
        (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1428
            (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1429
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1430
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1431
                  ((op <=::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1432
                  ((op <=::real => real => bool) (f m) (f n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1433
      ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1434
        (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1435
            (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1436
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1437
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1438
                  ((op <=::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1439
                  ((op <=::real => real => bool) (f n) (f m))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1440
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1441
lemma mono: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1442
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1443
     (op =::bool => bool => bool) ((seq.mono::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1444
      ((op |::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1445
        ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1446
          (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1447
              (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1448
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1449
                   (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1450
                    ((op <=::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1451
                    ((op <=::real => real => bool) (f m) (f n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1452
        ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1453
          (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1454
              (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1455
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1456
                   (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1457
                    ((op <=::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1458
                    ((op <=::real => real => bool) (f n) (f m)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1459
  by (import seq mono)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1460
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1461
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
  1462
  by (import seq MONO_SUC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1463
14847
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1464
lemma MAX_LEMMA: "(All::((nat => real) => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1465
 (%s::nat => real.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1466
     (All::(nat => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1467
      (%N::nat.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1468
          (Ex::(real => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1469
           (%k::real.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1470
               (All::(nat => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1471
                (%n::nat.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1472
                    (op -->::bool => bool => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1473
                     ((op <::nat => nat => bool) n N)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1474
                     ((op <::real => real => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  1475
                       ((abs::real => real) (s n)) k)))))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1476
  by (import seq MAX_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1477
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1478
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
  1479
  by (import seq SEQ_BOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1480
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1481
lemma SEQ_BOUNDED_2: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1482
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1483
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1484
      (%k::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1485
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1486
           (%k'::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1487
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1488
                ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1489
                  (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1490
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1491
                       ((op <=::real => real => bool) k (f n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1492
                       ((op <=::real => real => bool) (f n) k')))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1493
                ((bounded::real metric * (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1494
                           => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1495
                  ((Pair::real metric
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1496
                          => (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1497
                             => real metric * (nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1498
                    (mr1::real metric) (nat_ge::nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1499
                  f))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1500
  by (import seq SEQ_BOUNDED_2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1501
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1502
lemma SEQ_CBOUNDED: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1503
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1504
     (op -->::bool => bool => bool) ((cauchy::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1505
      ((bounded::real metric * (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1506
                 => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1507
        ((Pair::real metric
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1508
                => (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1509
                   => real metric * (nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1510
          (mr1::real metric) (nat_ge::nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1511
        f))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1512
  by (import seq SEQ_CBOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1513
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1514
lemma SEQ_ICONV: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1515
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1516
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1517
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1518
        ((bounded::real metric * (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1519
                   => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1520
          ((Pair::real metric
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1521
                  => (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1522
                     => real metric * (nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1523
            (mr1::real metric) (nat_ge::nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1524
          f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1525
        ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1526
          (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1527
              (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1528
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1529
                   (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1530
                    ((op <=::nat => nat => bool) n m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1531
                    ((op <=::real => real => bool) (f n) (f m))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1532
      ((convergent::(nat => real) => bool) f))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1533
  by (import seq SEQ_ICONV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1534
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1535
lemma SEQ_NEG_CONV: "ALL f. convergent f = convergent (%n. - f n)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1536
  by (import seq SEQ_NEG_CONV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1537
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1538
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
  1539
  by (import seq SEQ_NEG_BOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1540
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1541
lemma SEQ_BCONV: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1542
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1543
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1544
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1545
        ((bounded::real metric * (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1546
                   => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1547
          ((Pair::real metric
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1548
                  => (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1549
                     => real metric * (nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1550
            (mr1::real metric) (nat_ge::nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1551
          f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1552
        ((seq.mono::(nat => real) => bool) f))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1553
      ((convergent::(nat => real) => bool) f))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1554
  by (import seq SEQ_BCONV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1555
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1556
lemma SEQ_MONOSUB: "ALL s. EX f. subseq f & seq.mono (%n. s (f n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1557
  by (import seq SEQ_MONOSUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1558
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1559
lemma SEQ_SBOUNDED: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1560
 (%s::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1561
     (All::((nat => nat) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1562
      (%f::nat => nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1563
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1564
           ((bounded::real metric * (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1565
                      => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1566
             ((Pair::real metric
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1567
                     => (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1568
                        => real metric * (nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1569
               (mr1::real metric) (nat_ge::nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1570
             s)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1571
           ((bounded::real metric * (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1572
                      => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1573
             ((Pair::real metric
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1574
                     => (nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1575
                        => real metric * (nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1576
               (mr1::real metric) (nat_ge::nat => nat => bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1577
             (%n::nat. s (f n)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1578
  by (import seq SEQ_SBOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1579
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1580
lemma SEQ_SUBLE: "(All::((nat => nat) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1581
 (%f::nat => nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1582
     (op -->::bool => bool => bool) ((subseq::(nat => nat) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1583
      ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1584
        (%n::nat. (op <=::nat => nat => bool) n (f n))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1585
  by (import seq SEQ_SUBLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1586
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1587
lemma SEQ_DIRECT: "(All::((nat => nat) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1588
 (%f::nat => nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1589
     (op -->::bool => bool => bool) ((subseq::(nat => nat) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1590
      ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1591
        (%N1::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1592
            (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1593
             (%N2::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1594
                 (Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1595
                  (%x::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1596
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1597
                       ((op <=::nat => nat => bool) N1 x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1598
                       ((op <=::nat => nat => bool) N2 (f x)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1599
  by (import seq SEQ_DIRECT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1600
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1601
lemma SEQ_CAUCHY: "ALL f. cauchy f = convergent f"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1602
  by (import seq SEQ_CAUCHY)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1603
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1604
lemma SEQ_LE: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1605
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1606
     (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1607
      (%g::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1608
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1609
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1610
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1611
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1612
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1613
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1614
                       ((-->::(nat => real) => real => bool) f l)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1615
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1616
                         ((-->::(nat => real) => real => bool) g m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1617
                         ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1618
                           (%x::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
                                (%xa::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) x xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1623
                                     ((op <=::real => real => bool) (f xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1624
 (g xa)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1625
                     ((op <=::real => real => bool) l m)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1626
  by (import seq SEQ_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1627
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1628
lemma SEQ_SUC: "ALL f l. --> f l = --> (%n. f (Suc n)) l"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1629
  by (import seq SEQ_SUC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1630
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1631
lemma SEQ_ABS: "ALL f. --> (%n. abs (f n)) 0 = --> f 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1632
  by (import seq SEQ_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1633
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1634
lemma SEQ_ABS_IMP: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1635
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1636
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1637
      (%l::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
           ((-->::(nat => real) => real => bool) f l)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1640
           ((-->::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1641
             (%n::nat. (abs::real => real) (f n)) ((abs::real => real) l))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1642
  by (import seq SEQ_ABS_IMP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1643
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1644
lemma SEQ_INV0: "(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
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1647
      ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1648
        (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1649
            (Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1650
             (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1651
                 (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1652
                  (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1653
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1654
                       ((op <=::nat => nat => bool) N n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1655
                       ((op <::real => real => bool) y (f n))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1656
      ((-->::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1657
        (%n::nat. (inverse::real => real) (f n)) (0::real)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1658
  by (import seq SEQ_INV0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1659
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1660
lemma SEQ_POWER_ABS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1661
 (%c::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1662
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1663
      ((op <::real => real => bool) ((abs::real => real) c) (1::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1664
      ((-->::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1665
        ((op ^::real => nat => real) ((abs::real => real) c)) (0::real)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1666
  by (import seq SEQ_POWER_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1667
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1668
lemma SEQ_POWER: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1669
 (%c::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1670
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1671
      ((op <::real => real => bool) ((abs::real => real) c) (1::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1672
      ((-->::(nat => real) => real => bool) ((op ^::real => nat => real) c)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1673
        (0::real)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1674
  by (import seq SEQ_POWER)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1675
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1676
lemma NEST_LEMMA: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1677
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1678
     (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1679
      (%g::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1680
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1681
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1682
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1683
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1684
                   (op <=::real => real => bool) (f n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1685
                    (f ((Suc::nat => nat) n))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1686
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1687
               ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1688
                 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1689
                     (op <=::real => real => bool) (g ((Suc::nat => nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1690
                      (g n)))
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. (op <=::real => real => bool) (f n) (g n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1693
           ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1694
             (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1695
                 (Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1696
                  (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1697
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1698
                       ((op <=::real => real => bool) l m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1699
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1700
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1701
                           ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1702
                             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1703
                                 (op <=::real => real => bool) (f n) l))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1704
                           ((-->::(nat => real) => real => bool) f l))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1705
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1706
                           ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1707
                             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1708
                                 (op <=::real => real => bool) m (g n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1709
                           ((-->::(nat => real) => real => bool) g m))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1710
  by (import seq NEST_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1711
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1712
lemma NEST_LEMMA_UNIQ: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1713
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1714
     (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1715
      (%g::nat => real.
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::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1719
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1720
                   (op <=::real => real => bool) (f n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1721
                    (f ((Suc::nat => nat) n))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1722
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1723
               ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1724
                 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1725
                     (op <=::real => real => bool) (g ((Suc::nat => nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1726
                      (g n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1727
               ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1728
                 ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1729
                   (%n::nat. (op <=::real => real => bool) (f n) (g n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1730
                 ((-->::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1731
                   (%n::nat. (op -::real => real => real) (f n) (g n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1732
                   (0::real)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1733
           ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1734
             (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1735
                 (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1736
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1737
                    ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1738
                      (%n::nat. (op <=::real => real => bool) (f n) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1739
                    ((-->::(nat => real) => real => bool) f x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1740
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1741
                    ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1742
                      (%n::nat. (op <=::real => real => bool) x (g n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1743
                    ((-->::(nat => real) => real => bool) g x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1744
  by (import seq NEST_LEMMA_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1745
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1746
lemma BOLZANO_LEMMA: "(All::((real * real => bool) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1747
 (%P::real * real => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1748
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1749
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1750
        ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1751
          (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1752
              (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1753
               (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1754
                   (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1755
                    (%c::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1756
                        (op -->::bool => bool => bool)
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
                           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1760
                             ((op <=::real => real => bool) b c)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1761
                             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1762
                               (P ((Pair::real => real => real * real) a b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1763
                               (P ((Pair::real => real => real * real) b
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1764
                                    c)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1765
                         (P ((Pair::real => real => real * real) a c))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1766
        ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1767
          (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1768
              (Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1769
               (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1770
                   (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1771
                    ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1772
                    ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1773
                      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1774
                          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1775
                           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1776
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1777
                                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1778
                                  ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1779
                                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1780
                                    ((op <=::real => real => bool) x b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1781
                                    ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1782
((op -::real => real => real) b a) d)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1783
                                (P ((Pair::real => real => real * real) a
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1784
                                     b)))))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1785
      ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1786
        (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1787
            (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1788
             (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1789
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1790
                  ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1791
                  (P ((Pair::real => real => real * real) a b))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1792
  by (import seq BOLZANO_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1793
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1794
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1795
  sums :: "(nat => real) => real => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1796
  "sums == %f. --> (%n. real.sum (0, n) f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1797
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1798
lemma sums: "ALL f s. sums f s = --> (%n. real.sum (0, n) f) s"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1799
  by (import seq sums)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1800
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1801
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1802
  summable :: "(nat => real) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1803
  "summable == %f. Ex (sums f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1804
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1805
lemma summable: "ALL f. summable f = Ex (sums f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1806
  by (import seq summable)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1807
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1808
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1809
  suminf :: "(nat => real) => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1810
  "suminf == %f. Eps (sums f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1811
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1812
lemma suminf: "ALL f. suminf f = Eps (sums f)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1813
  by (import seq suminf)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1814
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1815
lemma SUM_SUMMABLE: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1816
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1817
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1818
      (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1819
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1820
           ((sums::(nat => real) => real => bool) f l)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1821
           ((summable::(nat => real) => bool) f)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1822
  by (import seq SUM_SUMMABLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1823
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1824
lemma SUMMABLE_SUM: "(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
     (op -->::bool => bool => bool) ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1827
      ((sums::(nat => real) => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1828
        ((suminf::(nat => real) => real) f)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1829
  by (import seq SUMMABLE_SUM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1830
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1831
lemma SUM_UNIQ: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1832
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1833
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1834
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1835
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1836
           ((sums::(nat => real) => real => bool) f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1837
           ((op =::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1838
             ((suminf::(nat => real) => real) f))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1839
  by (import seq SUM_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1840
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1841
lemma SER_0: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1842
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1843
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1844
      (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1845
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1846
           ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1847
             (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1848
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1849
                  ((op <=::nat => nat => bool) n m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1850
                  ((op =::real => real => bool) (f m) (0::real))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1851
           ((sums::(nat => real) => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1852
             ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1853
               ((Pair::nat => nat => nat * nat) (0::nat) n) f))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1854
  by (import seq SER_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1855
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1856
lemma SER_POS_LE: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1857
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1858
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1859
      (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1860
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1861
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1862
             ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1863
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1864
               (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1865
                   (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1866
                    ((op <=::nat => nat => bool) n m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1867
                    ((op <=::real => real => bool) (0::real) (f m)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1868
           ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1869
             ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1870
               ((Pair::nat => nat => nat * nat) (0::nat) n) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1871
             ((suminf::(nat => real) => real) f))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1872
  by (import seq SER_POS_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1873
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1874
lemma SER_POS_LT: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1875
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1876
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1877
      (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1878
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1879
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1880
             ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1881
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1882
               (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1883
                   (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1884
                    ((op <=::nat => nat => bool) n m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1885
                    ((op <::real => real => bool) (0::real) (f m)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1886
           ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1887
             ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1888
               ((Pair::nat => nat => nat * nat) (0::nat) n) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1889
             ((suminf::(nat => real) => real) f))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1890
  by (import seq SER_POS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1891
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1892
lemma SER_GROUP: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1893
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1894
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1895
      (%k::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1896
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1897
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1898
             ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1899
             ((op <::nat => nat => bool) (0::nat) k))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1900
           ((sums::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1901
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1902
                 (real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1903
                  ((Pair::nat => nat => nat * nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1904
                    ((op *::nat => nat => nat) n k) k)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1905
                  f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1906
             ((suminf::(nat => real) => real) f))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1907
  by (import seq SER_GROUP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1908
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1909
lemma SER_PAIR: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1910
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1911
     (op -->::bool => bool => bool) ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1912
      ((sums::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1913
        (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1914
            (real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1915
             ((Pair::nat => nat => nat * nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1916
               ((op *::nat => nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1917
                 ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1918
                   ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  1919
                     ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1920
                       (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1921
                     (False::bool)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1922
                 n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1923
               ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1924
                 ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  1925
                   ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1926
                     (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1927
                   (False::bool))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1928
             f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1929
        ((suminf::(nat => real) => real) f)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1930
  by (import seq SER_PAIR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1931
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1932
lemma SER_OFFSET: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1933
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1934
     (op -->::bool => bool => bool) ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1935
      ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1936
        (%k::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1937
            (sums::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1938
             (%n::nat. f ((op +::nat => nat => nat) n k))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1939
             ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1940
               ((suminf::(nat => real) => real) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1941
               ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1942
                 ((Pair::nat => nat => nat * nat) (0::nat) k) f)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1943
  by (import seq SER_OFFSET)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1944
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1945
lemma SER_POS_LT_PAIR: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1946
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1947
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1948
      (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1949
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1950
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1951
             ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1952
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1953
               (%d::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1954
                   (op <::real => real => bool) (0::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1955
                    ((op +::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1956
                      (f ((op +::nat => nat => nat) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1957
                           ((op *::nat => nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1958
                             ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1959
                               ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1960
                                 ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  1961
                                   (Numeral.Pls::bin) (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1962
                                 (False::bool)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1963
                             d)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1964
                      (f ((op +::nat => nat => nat) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1965
                           ((op +::nat => nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1966
                             ((op *::nat => nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1967
                               ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1968
                                 ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1969
                                   ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  1970
                                     (Numeral.Pls::bin) (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1971
                                   (False::bool)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1972
                               d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1973
                             (1::nat))))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1974
           ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1975
             ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1976
               ((Pair::nat => nat => nat * nat) (0::nat) n) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1977
             ((suminf::(nat => real) => real) f))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1978
  by (import seq SER_POS_LT_PAIR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1979
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1980
lemma SER_ADD: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1981
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1982
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1983
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1984
          (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1985
           (%y::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1986
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1987
                (%y0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1988
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1989
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1990
                       ((sums::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1991
                       ((sums::(nat => real) => real => bool) y y0))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1992
                     ((sums::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1993
                       (%n::nat. (op +::real => real => real) (x n) (y n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1994
                       ((op +::real => real => real) x0 y0))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1995
  by (import seq SER_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1996
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1997
lemma SER_CMUL: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1998
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  1999
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2000
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2001
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2002
           (%c::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2003
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2004
                ((sums::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2005
                ((sums::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2006
                  (%n::nat. (op *::real => real => real) c (x n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2007
                  ((op *::real => real => real) c x0)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2008
  by (import seq SER_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2009
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2010
lemma SER_NEG: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2011
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2012
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2013
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2014
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2015
           ((sums::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2016
           ((sums::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2017
             (%xa::nat. (uminus::real => real) (x xa))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2018
             ((uminus::real => real) x0))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2019
  by (import seq SER_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2020
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2021
lemma SER_SUB: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2022
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2023
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2024
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2025
          (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2026
           (%y::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2027
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2028
                (%y0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2029
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2030
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2031
                       ((sums::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2032
                       ((sums::(nat => real) => real => bool) y y0))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2033
                     ((sums::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2034
                       (%xa::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2035
                           (op -::real => real => real) (x xa) (y xa))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2036
                       ((op -::real => real => real) x0 y0))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2037
  by (import seq SER_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2038
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2039
lemma SER_CDIV: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2040
 (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2041
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2042
      (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2043
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2044
           (%c::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2045
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2046
                ((sums::(nat => real) => real => bool) x x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2047
                ((sums::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2048
                  (%xa::nat. (op /::real => real => real) (x xa) c)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2049
                  ((op /::real => real => real) x0 c)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2050
  by (import seq SER_CDIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2051
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2052
lemma SER_CAUCHY: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2053
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2054
     (op =::bool => bool => bool) ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2055
      ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2056
        (%e::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2057
            (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2058
             ((op <::real => real => bool) (0::real) e)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2059
             ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2060
               (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2061
                   (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2062
                    (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2063
                        (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2064
                         (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2065
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2066
                              ((op <=::nat => nat => bool) N m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2067
                              ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2068
                                ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2069
                                  ((real.sum::nat * nat
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2070
        => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2071
                                    ((Pair::nat => nat => nat * nat) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2072
                                    f))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2073
                                e))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2074
  by (import seq SER_CAUCHY)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2075
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2076
lemma SER_ZERO: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2077
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2078
     (op -->::bool => bool => bool) ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2079
      ((-->::(nat => real) => real => bool) f (0::real)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2080
  by (import seq SER_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2081
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2082
lemma SER_COMPAR: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2083
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2084
     (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2085
      (%g::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2086
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2087
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2088
             ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2089
               (%x::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2090
                   (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2091
                    (%xa::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2092
                        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2093
                         ((op <=::nat => nat => bool) x xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2094
                         ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2095
                           ((abs::real => real) (f xa)) (g xa)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2096
             ((summable::(nat => real) => bool) g))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2097
           ((summable::(nat => real) => bool) f)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2098
  by (import seq SER_COMPAR)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2099
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2100
lemma SER_COMPARA: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2101
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2102
     (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2103
      (%g::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2104
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2105
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2106
             ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2107
               (%x::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2108
                   (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2109
                    (%xa::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2110
                        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2111
                         ((op <=::nat => nat => bool) x xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2112
                         ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2113
                           ((abs::real => real) (f xa)) (g xa)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2114
             ((summable::(nat => real) => bool) g))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2115
           ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2116
             (%k::nat. (abs::real => real) (f k)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2117
  by (import seq SER_COMPARA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2118
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2119
lemma SER_LE: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2120
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2121
     (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2122
      (%g::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
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2125
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2126
               (%n::nat. (op <=::real => real => bool) (f n) (g n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2127
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2128
               ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2129
               ((summable::(nat => real) => bool) g)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2130
           ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2131
             ((suminf::(nat => real) => real) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2132
             ((suminf::(nat => real) => real) g))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2133
  by (import seq SER_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2134
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2135
lemma SER_LE2: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2136
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2137
     (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2138
      (%g::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2139
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2140
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2141
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2142
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2143
                   (op <=::real => real => bool) ((abs::real => real) (f n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2144
                    (g n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2145
             ((summable::(nat => real) => bool) g))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2146
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2147
             ((summable::(nat => real) => bool) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2148
             ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2149
               ((suminf::(nat => real) => real) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2150
               ((suminf::(nat => real) => real) g)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2151
  by (import seq SER_LE2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2152
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2153
lemma SER_ACONV: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2154
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2155
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2156
      ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2157
        (%n::nat. (abs::real => real) (f n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2158
      ((summable::(nat => real) => bool) f))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2159
  by (import seq SER_ACONV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2160
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2161
lemma SER_ABS: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2162
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2163
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2164
      ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2165
        (%n::nat. (abs::real => real) (f n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2166
      ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2167
        ((abs::real => real) ((suminf::(nat => real) => real) f))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2168
        ((suminf::(nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2169
          (%n::nat. (abs::real => real) (f n)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2170
  by (import seq SER_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2171
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2172
lemma GP_FINITE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2173
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2174
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2175
      ((Not::bool => bool) ((op =::real => real => bool) x (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2176
      ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2177
        (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2178
            (op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2179
             ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2180
               ((Pair::nat => nat => nat * nat) (0::nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2181
               ((op ^::real => nat => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2182
             ((op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2183
               ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2184
                 ((op ^::real => nat => real) x n) (1::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2185
               ((op -::real => real => real) x (1::real))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2186
  by (import seq GP_FINITE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2187
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2188
lemma GP: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2189
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2190
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2191
      ((op <::real => real => bool) ((abs::real => real) x) (1::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2192
      ((sums::(nat => real) => real => bool) ((op ^::real => nat => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2193
        ((inverse::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2194
          ((op -::real => real => real) (1::real) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2195
  by (import seq GP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2196
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2197
lemma ABS_NEG_LEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2198
 (%c::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2199
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2200
      ((op <=::real => real => bool) c (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2201
      ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2202
        (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2203
            (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2204
             (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2205
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2206
                  ((op <=::real => real => bool) ((abs::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2207
                    ((op *::real => real => real) c
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2208
                      ((abs::real => real) y)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2209
                  ((op =::real => real => bool) x (0::real))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2210
  by (import seq ABS_NEG_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2211
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2212
lemma SER_RATIO: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2213
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2214
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2215
      (%c::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2216
          (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2217
           (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2218
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2219
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2220
                  ((op <::real => real => bool) c (1::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2221
                  ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2222
                    (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2223
                        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2224
                         ((op <=::nat => nat => bool) N n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2225
                         ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2226
                           ((abs::real => real) (f ((Suc::nat => nat) n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2227
                           ((op *::real => real => real) c
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2228
                             ((abs::real => real) (f n)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2229
                ((summable::(nat => real) => bool) f))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2230
  by (import seq SER_RATIO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2231
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2232
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2233
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2234
;setup_theory lim
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2235
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2236
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2237
  tends_real_real :: "(real => real) => real => real => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2238
  "tends_real_real == %f l x0. tends f l (mtop mr1, tendsto (mr1, x0))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2239
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2240
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
  2241
  by (import lim tends_real_real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2242
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2243
lemma LIM: "(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 => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2246
      (%y0::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
           (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2249
               (op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2250
                ((tends_real_real::(real => real) => real => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2251
                  y0 x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2252
                ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2253
                  (%e::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2254
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2255
                       ((op <::real => real => bool) (0::real) e)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2256
                       ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2257
                         (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2258
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2259
                              ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2260
                              ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2261
                                (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2262
                                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2263
                                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2264
 ((op <::real => real => bool) (0::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2265
   ((abs::real => real) ((op -::real => real => real) x x0)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2266
 ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2267
   ((abs::real => real) ((op -::real => real => real) x x0)) d))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2268
                                     ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2269
 ((abs::real => real) ((op -::real => real => real) (f x) y0)) e))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2270
  by (import lim LIM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2271
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2272
lemma LIM_CONST: "ALL k. All (tends_real_real (%x. k) k)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2273
  by (import lim LIM_CONST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2274
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2275
lemma LIM_ADD: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2276
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2277
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2278
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2279
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2280
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2281
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2282
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2283
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2284
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2285
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2286
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2287
                            ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2288
         => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2289
                              f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2290
                            ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2291
         => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2292
                              g m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2293
                          ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2294
       => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2295
                            (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2296
                                (op +::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2297
                            ((op +::real => real => real) l m) x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2298
  by (import lim LIM_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2299
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2300
lemma LIM_MUL: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2301
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2302
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2303
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2304
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2305
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2306
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2307
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2308
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2309
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2310
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2311
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2312
                            ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2313
         => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2314
                              f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2315
                            ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2316
         => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2317
                              g m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2318
                          ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2319
       => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2320
                            (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2321
                                (op *::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2322
                            ((op *::real => real => real) l m) x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2323
  by (import lim LIM_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2324
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2325
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
  2326
  by (import lim LIM_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2327
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2328
lemma LIM_INV: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2329
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2330
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2331
      (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2332
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2333
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2334
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2335
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2336
                  ((tends_real_real::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2337
                    f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2338
                  ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2339
                    ((op =::real => real => bool) l (0::real))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2340
                ((tends_real_real::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2341
                  (%x::real. (inverse::real => real) (f x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2342
                  ((inverse::real => real) l) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2343
  by (import lim LIM_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2344
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2345
lemma LIM_SUB: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2346
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2347
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2348
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2349
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2350
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2351
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2352
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2353
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2354
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2355
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2356
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2357
                            ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2358
         => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2359
                              f l x)
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
                              g m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2363
                          ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2364
       => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2365
                            (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2366
                                (op -::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2367
                            ((op -::real => real => real) l m) x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2368
  by (import lim LIM_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2369
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2370
lemma LIM_DIV: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2371
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2372
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2373
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2374
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2375
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2376
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2377
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2378
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2379
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2380
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2381
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2382
                            ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2383
         => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2384
                              f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2385
                            ((op &::bool => bool => bool)
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
                                g m x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2389
                              ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2390
                                ((op =::real => real => bool) m
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2391
                                  (0::real)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2392
                          ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2393
       => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2394
                            (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2395
                                (op /::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2396
                            ((op /::real => real => real) l m) x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2397
  by (import lim LIM_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2398
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2399
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
  2400
  by (import lim LIM_NULL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2401
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2402
lemma LIM_X: "ALL x0. tends_real_real (%x. x) x0 x0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2403
  by (import lim LIM_X)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2404
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2405
lemma LIM_UNIQ: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2406
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2407
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2408
      (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2409
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2410
           (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2411
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2412
                (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2413
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2414
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2415
                       ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2416
    => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2417
                         f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2418
                       ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2419
    => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2420
                         f m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2421
                     ((op =::real => real => bool) l m)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2422
  by (import lim LIM_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2423
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2424
lemma LIM_EQUAL: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2425
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2426
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2427
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2428
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2429
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2430
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2431
                (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2432
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2433
                     ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2434
                       (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2435
                           (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2436
                            ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2437
                              ((op =::real => real => bool) x x0))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2438
                            ((op =::real => real => bool) (f x) (g x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2439
                     ((op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2440
                       ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2441
    => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2442
                         f l x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2443
                       ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2444
    => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2445
                         g l x0))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2446
  by (import lim LIM_EQUAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2447
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2448
lemma LIM_TRANSFORM: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2449
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2450
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2451
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2452
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2453
           (%x0::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2454
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2455
                (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2456
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2457
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2458
                       ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2459
    => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2460
                         (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2461
                             (op -::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2462
                         (0::real) x0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2463
                       ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2464
    => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2465
                         g l x0))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2466
                     ((tends_real_real::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2467
  => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2468
                       f l x0)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2469
  by (import lim LIM_TRANSFORM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2470
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2471
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2472
  diffl :: "(real => real) => real => real => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2473
  "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
  2474
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2475
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
  2476
  by (import lim diffl)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2477
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2478
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2479
  contl :: "(real => real) => real => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2480
  "contl == %f x. tends_real_real (%h. f (x + h)) (f x) 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2481
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2482
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
  2483
  by (import lim contl)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2484
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2485
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2486
  differentiable :: "(real => real) => real => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2487
  "differentiable == %f x. EX l. diffl f l x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2488
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2489
lemma differentiable: "ALL f x. differentiable f x = (EX l. diffl f l x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2490
  by (import lim differentiable)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2491
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2492
lemma DIFF_UNIQ: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2493
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2494
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2495
      (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2496
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2497
           (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2498
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2499
                (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2500
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2501
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2502
                       ((diffl::(real => real) => real => real => bool) f l
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2503
                         x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2504
                       ((diffl::(real => real) => real => real => bool) f m
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2505
                         x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2506
                     ((op =::real => real => bool) l m)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2507
  by (import lim DIFF_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2508
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2509
lemma DIFF_CONT: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2510
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2511
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2512
      (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2513
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2514
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2515
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2516
                ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2517
                ((contl::(real => real) => real => bool) f x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2518
  by (import lim DIFF_CONT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2519
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2520
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
  2521
  by (import lim CONTL_LIM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2522
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2523
lemma DIFF_CARAT: "ALL f l x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2524
   diffl f l x =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2525
   (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
  2526
  by (import lim DIFF_CARAT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2527
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2528
lemma CONT_CONST: "ALL k. All (contl (%x. k))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2529
  by (import lim CONT_CONST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2530
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2531
lemma CONT_ADD: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2532
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2533
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2534
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2535
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2536
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2537
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2538
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2539
                  ((contl::(real => real) => real => bool) f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2540
                  ((contl::(real => real) => real => bool) g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2541
                ((contl::(real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2542
                  (%x::real. (op +::real => real => real) (f x) (g x)) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2543
  by (import lim CONT_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2544
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2545
lemma CONT_MUL: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2546
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2547
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2548
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2549
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2550
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2551
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2552
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2553
                  ((contl::(real => real) => real => bool) f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2554
                  ((contl::(real => real) => real => bool) g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2555
                ((contl::(real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2556
                  (%x::real. (op *::real => real => real) (f x) (g x)) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2557
  by (import lim CONT_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2558
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2559
lemma CONT_NEG: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2560
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2561
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2562
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2563
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2564
           ((contl::(real => real) => real => bool) f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2565
           ((contl::(real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2566
             (%x::real. (uminus::real => real) (f x)) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2567
  by (import lim CONT_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2568
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2569
lemma CONT_INV: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2570
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2571
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2572
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2573
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2574
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2575
             ((contl::(real => real) => real => bool) f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2576
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2577
               ((op =::real => real => bool) (f x) (0::real))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2578
           ((contl::(real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2579
             (%x::real. (inverse::real => real) (f x)) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2580
  by (import lim CONT_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2581
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2582
lemma CONT_SUB: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2583
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2584
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2585
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2586
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2587
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2588
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2589
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2590
                  ((contl::(real => real) => real => bool) f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2591
                  ((contl::(real => real) => real => bool) g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2592
                ((contl::(real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2593
                  (%x::real. (op -::real => real => real) (f x) (g x)) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2594
  by (import lim CONT_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2595
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2596
lemma CONT_DIV: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2597
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2598
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2599
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2600
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2601
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2602
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2603
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2604
                  ((contl::(real => real) => real => bool) f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2605
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2606
                    ((contl::(real => real) => real => bool) g x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2607
                    ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2608
                      ((op =::real => real => bool) (g x) (0::real)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2609
                ((contl::(real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2610
                  (%x::real. (op /::real => real => real) (f x) (g x)) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2611
  by (import lim CONT_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2612
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2613
lemma CONT_COMPOSE: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2614
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2615
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2616
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2617
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2618
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2619
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2620
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2621
                  ((contl::(real => real) => real => bool) f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2622
                  ((contl::(real => real) => real => bool) g (f x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2623
                ((contl::(real => real) => real => bool) (%x::real. g (f x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2624
                  x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2625
  by (import lim CONT_COMPOSE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2626
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2627
lemma IVT: "(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 a) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2641
                           ((op <=::real => real => bool) y (f b)))
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 IVT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2658
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2659
lemma IVT2: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2660
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2661
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2662
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2663
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2664
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2665
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2666
                (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2667
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2668
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2669
                       ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2670
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2671
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2672
                           ((op <=::real => real => bool) (f b) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2673
                           ((op <=::real => real => bool) y (f a)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2674
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2675
                           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2676
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2677
                                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2678
                                  ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2679
                                  ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2680
                                ((contl::(real => real) => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2681
                                  x)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2682
                     ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2683
                       (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2684
                           (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2685
                            ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2686
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2687
                              ((op <=::real => real => bool) x b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2688
                              ((op =::real => real => bool) (f x) y))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2689
  by (import lim IVT2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2690
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2691
lemma DIFF_CONST: "ALL k. All (diffl (%x. k) 0)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2692
  by (import lim DIFF_CONST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2693
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2694
lemma DIFF_ADD: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2695
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2696
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2697
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2698
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2699
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2700
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2701
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2702
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2703
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2704
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2705
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2706
                            ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2707
                              f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2708
                            ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2709
                              g m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2710
                          ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2711
                            (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2712
                                (op +::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2713
                            ((op +::real => real => real) l m) x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2714
  by (import lim DIFF_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2715
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2716
lemma DIFF_MUL: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2717
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2718
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2719
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2720
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2721
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2722
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2723
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2724
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2725
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2726
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2727
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2728
                            ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2729
                              f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2730
                            ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2731
                              g m 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.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2734
                                (op *::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2735
                            ((op +::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2736
                              ((op *::real => real => real) l (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2737
                              ((op *::real => real => real) m (f x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2738
                            x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2739
  by (import lim DIFF_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2740
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2741
lemma DIFF_CMUL: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2742
 (%f::real => 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
      (%c::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
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2747
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2748
                (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2749
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2750
                     ((diffl::(real => real) => real => real => bool) 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
                       (%x::real. (op *::real => real => real) c (f x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2753
                       ((op *::real => real => real) c l) x)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2754
  by (import lim DIFF_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2755
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2756
lemma DIFF_NEG: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2757
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2758
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2759
      (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2760
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2761
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2762
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2763
                ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2764
                ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2765
                  (%x::real. (uminus::real => real) (f x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2766
                  ((uminus::real => real) l) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2767
  by (import lim DIFF_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2768
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2769
lemma DIFF_SUB: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2770
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2771
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2772
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2773
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2774
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2775
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2776
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2777
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2778
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2779
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2780
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2781
                            ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2782
                              f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2783
                            ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2784
                              g m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2785
                          ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2786
                            (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2787
                                (op -::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2788
                            ((op -::real => real => real) l m) x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2789
  by (import lim DIFF_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2790
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2791
lemma DIFF_CHAIN: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2792
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2793
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2794
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2795
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2796
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2797
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2798
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2799
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2800
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2801
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2802
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2803
                            ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2804
                              f l (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2805
                            ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2806
                              g m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2807
                          ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2808
                            (%x::real. f (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2809
                            ((op *::real => real => real) l m) x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2810
  by (import lim DIFF_CHAIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2811
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2812
lemma DIFF_X: "All (diffl (%x. x) 1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2813
  by (import lim DIFF_X)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2814
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2815
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
  2816
  by (import lim DIFF_POW)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2817
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2818
lemma DIFF_XM1: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2819
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2820
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2821
      ((Not::bool => bool) ((op =::real => real => bool) x (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2822
      ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2823
        (inverse::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2824
        ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2825
          ((op ^::real => nat => real) ((inverse::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2826
            ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2827
              ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  2828
                ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  2829
                  (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2830
                (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2831
        x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2832
  by (import lim DIFF_XM1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2833
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2834
lemma DIFF_INV: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2835
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2836
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2837
      (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2838
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2839
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2840
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2841
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2842
                  ((diffl::(real => real) => real => real => bool) f l 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) (f x) (0::real))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2845
                ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2846
                  (%x::real. (inverse::real => real) (f x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2847
                  ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2848
                    ((op /::real => real => real) l
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2849
                      ((op ^::real => nat => real) (f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2850
                        ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2851
                          ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  2852
                            ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2853
                              (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2854
                            (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2855
                  x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2856
  by (import lim DIFF_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2857
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2858
lemma DIFF_DIV: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2859
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2860
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2861
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2862
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2863
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2864
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2865
                (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2866
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2867
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2868
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2869
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2870
                            ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2871
                              f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2872
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2873
                              ((diffl::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2874
 => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2875
                                g m x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2876
                              ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2877
                                ((op =::real => real => bool) (g x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2878
                                  (0::real)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2879
                          ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2880
                            (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2881
                                (op /::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2882
                            ((op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2883
                              ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2884
                                ((op *::real => real => real) l (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2885
                                ((op *::real => real => real) m (f x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2886
                              ((op ^::real => nat => real) (g x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2887
                                ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2888
                                  ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2889
                                    ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  2890
(Numeral.Pls::bin) (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2891
                                    (False::bool)))))
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_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2894
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2895
lemma DIFF_SUM: "(All::((nat => real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2896
 (%f::nat => real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2897
     (All::((nat => real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2898
      (%f'::nat => real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2899
          (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2900
           (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2901
               (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2902
                (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2903
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2904
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2905
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2906
                          ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2907
                            (%r::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2908
                                (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2909
                                 ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2910
                                   ((op <=::nat => nat => bool) m r)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2911
                                   ((op <::nat => nat => bool) r
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2912
                                     ((op +::nat => nat => nat) m n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2913
                                 ((diffl::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2914
    => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2915
                                   (f r) (f' r x) x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2916
                          ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2917
                            (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2918
                                (real.sum::nat * nat
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2919
     => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2920
                                 ((Pair::nat => nat => nat * nat) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2921
                                 (%n::nat. f n x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2922
                            ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2923
                              ((Pair::nat => nat => nat * nat) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2924
                              (%r::nat. f' r x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2925
                            x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2926
  by (import lim DIFF_SUM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2927
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2928
lemma CONT_BOUNDED: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2929
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2930
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2931
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2932
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2933
           (%b::real.
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 &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2936
                  ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2937
                  ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2938
                    (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2939
                        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2940
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2941
                           ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2942
                           ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2943
                         ((contl::(real => real) => real => bool) f x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2944
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2945
                  (%M::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2946
                      (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2947
                       (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2948
                           (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2949
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2950
                              ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2951
                              ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2952
                            ((op <=::real => real => bool) (f x) M)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2953
  by (import lim CONT_BOUNDED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2954
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2955
lemma CONT_HASSUP: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2956
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2957
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2958
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2959
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2960
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2961
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2962
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2963
                  ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2964
                  ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2965
                    (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2966
                        (op -->::bool => bool => bool)
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 <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2969
                           ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2970
                         ((contl::(real => real) => real => bool) f x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2971
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2972
                  (%M::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2973
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2974
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2975
                         (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2976
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2977
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2978
                                ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2979
                                ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2980
                              ((op <=::real => real => bool) (f x) M)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2981
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2982
                         (%N::real.
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) N M)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2985
                              ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2986
                                (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2987
                                    (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2988
                                     ((op <=::real => real => bool) a x)
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) x b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2991
 ((op <::real => real => bool) N (f x))))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2992
  by (import lim CONT_HASSUP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2993
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2994
lemma CONT_ATTAINS: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2995
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2996
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2997
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2998
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  2999
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3000
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3001
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3002
                  ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3003
                  ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3004
                    (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3005
                        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3006
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3007
                           ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3008
                           ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3009
                         ((contl::(real => real) => real => bool) f x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3010
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3011
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3012
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3013
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3014
                         (%xa::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
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3017
                                ((op <=::real => real => bool) a xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3018
                                ((op <=::real => real => bool) xa b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3019
                              ((op <=::real => real => bool) (f xa) x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3020
                       ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3021
                         (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3022
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3023
                              ((op <=::real => real => bool) a xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3024
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3025
                                ((op <=::real => real => bool) xa b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3026
                                ((op =::real => real => bool) (f xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3027
                                  x)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3028
  by (import lim CONT_ATTAINS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3029
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3030
lemma CONT_ATTAINS2: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3031
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3032
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3033
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3034
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3035
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3036
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3037
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3038
                  ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3039
                  ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3040
                    (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3041
                        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3042
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3043
                           ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3044
                           ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3045
                         ((contl::(real => real) => real => bool) f x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3046
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3047
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3048
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3049
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3050
                         (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3051
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3052
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3053
                                ((op <=::real => real => bool) a xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3054
                                ((op <=::real => real => bool) xa b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3055
                              ((op <=::real => real => bool) x (f xa))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3056
                       ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3057
                         (%xa::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 <=::real => real => bool) a xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3060
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3061
                                ((op <=::real => real => bool) xa b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3062
                                ((op =::real => real => bool) (f xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3063
                                  x)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3064
  by (import lim CONT_ATTAINS2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3065
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3066
lemma CONT_ATTAINS_ALL: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3067
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3068
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3069
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3070
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3071
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3072
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3073
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3074
                  ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3075
                  ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3076
                    (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3077
                        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3078
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3079
                           ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3080
                           ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3081
                         ((contl::(real => real) => real => bool) f x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3082
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3083
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3084
                      (Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3085
                       (%M::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3086
                           (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3087
                            ((op <=::real => real => bool) x M)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3088
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3089
                              ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3090
                                (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3091
                                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3092
                                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3093
 ((op <=::real => real => bool) x y) ((op <=::real => real => bool) y M))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3094
                                     ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3095
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3096
     (op &::bool => bool => bool) ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3097
      ((op &::bool => bool => bool) ((op <=::real => real => bool) x b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3098
        ((op =::real => real => bool) (f x) y))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3099
                              ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3100
                                (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3101
                                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3102
                                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3103
 ((op <=::real => real => bool) a xa) ((op <=::real => real => bool) xa b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3104
                                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3105
 ((op <=::real => real => bool) x (f xa))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3106
 ((op <=::real => real => bool) (f xa) M)))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3107
  by (import lim CONT_ATTAINS_ALL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3108
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3109
lemma DIFF_LINC: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3110
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3111
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3112
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3113
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3114
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3115
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3116
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3117
                  ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3118
                  ((op <::real => real => bool) (0::real) l))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3119
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3120
                  (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3121
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3122
                       ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3123
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3124
                         (%h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3125
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3126
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3127
                                ((op <::real => real => bool) (0::real) h)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3128
                                ((op <::real => real => bool) h d))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3129
                              ((op <::real => real => bool) (f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3130
                                (f ((op +::real => real => real) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3131
                                     h))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3132
  by (import lim DIFF_LINC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3133
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3134
lemma DIFF_LDEC: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3135
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3136
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3137
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3138
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3139
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3140
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3141
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3142
                  ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3143
                  ((op <::real => real => bool) l (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3144
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3145
                  (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3146
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3147
                       ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3148
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3149
                         (%h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3150
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3151
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3152
                                ((op <::real => real => bool) (0::real) h)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3153
                                ((op <::real => real => bool) h d))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3154
                              ((op <::real => real => bool) (f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3155
                                (f ((op -::real => real => real) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3156
                                     h))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3157
  by (import lim DIFF_LDEC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3158
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3159
lemma DIFF_LMAX: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3160
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3161
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3162
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3163
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3164
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3165
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3166
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3167
                  ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3168
                  ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3169
                    (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3170
                        (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3171
                         ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3172
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3173
                           (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3174
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3175
                                ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3176
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3177
                                    ((op -::real => real => real) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3178
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3179
                                ((op <=::real => real => bool) (f y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3180
                                  (f x)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3181
                ((op =::real => real => bool) l (0::real)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3182
  by (import lim DIFF_LMAX)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3183
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3184
lemma DIFF_LMIN: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3185
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3186
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3187
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3188
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3189
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3190
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3191
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3192
                  ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3193
                  ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3194
                    (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3195
                        (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3196
                         ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3197
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3198
                           (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3199
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3200
                                ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3201
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3202
                                    ((op -::real => real => real) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3203
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3204
                                ((op <=::real => real => bool) (f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3205
                                  (f y)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3206
                ((op =::real => real => bool) l (0::real)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3207
  by (import lim DIFF_LMIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3208
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3209
lemma DIFF_LCONST: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3210
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3211
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3212
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3213
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3214
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3215
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3216
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3217
                  ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3218
                  ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3219
                    (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3220
                        (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3221
                         ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3222
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3223
                           (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3224
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3225
                                ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3226
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3227
                                    ((op -::real => real => real) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3228
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3229
                                ((op =::real => real => bool) (f y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3230
                                  (f x)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3231
                ((op =::real => real => bool) l (0::real)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3232
  by (import lim DIFF_LCONST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3233
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3234
lemma INTERVAL_LEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3235
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3236
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3237
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3238
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3239
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3240
               (op -->::bool => bool => bool)
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 <::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3243
                  ((op <::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3244
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3245
                  (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3246
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3247
                       ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3248
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3249
                         (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3250
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3251
                              ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3252
                                ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3253
                                  ((op -::real => real => real) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3254
                                d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3255
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3256
                                ((op <=::real => real => bool) a y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3257
                                ((op <=::real => real => bool) y b)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3258
  by (import lim INTERVAL_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3259
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3260
lemma ROLLE: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3261
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3262
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3263
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3264
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3265
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3266
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3267
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3268
                  ((op <::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3269
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3270
                    ((op =::real => real => bool) (f a) (f b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3271
                    ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3272
                      ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3273
                        (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3274
                            (op -->::bool => bool => bool)
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 <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3277
                               ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3278
                             ((contl::(real => real) => real => bool) f x)))
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
                             ((differentiable::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3286
         => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3287
                               f x))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3288
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3289
                  (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3290
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3291
                       ((op <::real => real => bool) a z)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3292
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3293
                         ((op <::real => real => bool) z b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3294
                         ((diffl::(real => real) => real => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3295
                           (0::real) z)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3296
  by (import lim ROLLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3297
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3298
lemma MVT_LEMMA: "ALL (f::real => real) (a::real) b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3299
   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
  3300
  by (import lim MVT_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3301
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3302
lemma MVT: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3303
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3304
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3305
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3306
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3307
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3308
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3309
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3310
                  ((op <::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3311
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3312
                    ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3313
                      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3314
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3315
                           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3316
                             ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3317
                             ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3318
                           ((contl::(real => real) => real => bool) f x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3319
                    ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3320
                      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3321
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3322
                           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3323
                             ((op <::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3324
                             ((op <::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3325
                           ((differentiable::(real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3326
                             f x)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3327
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3328
                  (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3329
                      (Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3330
                       (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3331
                           (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3332
                            ((op <::real => real => bool) a z)
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) z b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3335
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3336
                                ((diffl::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3337
   => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3338
                                  f l z)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3339
                                ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3340
                                  ((op -::real => real => real) (f b) (f a))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3341
                                  ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3342
                                    ((op -::real => real => real) b a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3343
                                    l))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3344
  by (import lim MVT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3345
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3346
lemma DIFF_ISCONST_END: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3347
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3348
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3349
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3350
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3351
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3352
               (op -->::bool => bool => bool)
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 <::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3355
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3356
                    ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3357
                      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3358
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3359
                           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3360
                             ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3361
                             ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3362
                           ((contl::(real => real) => real => bool) f x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3363
                    ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3364
                      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3365
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3366
                           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3367
                             ((op <::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3368
                             ((op <::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3369
                           ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3370
                             f (0::real) x)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3371
                ((op =::real => real => bool) (f b) (f a)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3372
  by (import lim DIFF_ISCONST_END)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3373
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3374
lemma DIFF_ISCONST: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3375
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3376
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3377
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3378
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3379
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3380
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3381
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3382
                  ((op <::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3383
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3384
                    ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3385
                      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3386
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3387
                           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3388
                             ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3389
                             ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3390
                           ((contl::(real => real) => real => bool) f x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3391
                    ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3392
                      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3393
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3394
                           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3395
                             ((op <::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3396
                             ((op <::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3397
                           ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3398
                             f (0::real) x)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3399
                ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3400
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3401
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3402
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3403
                         ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3404
                         ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3405
                       ((op =::real => real => bool) (f x) (f a)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3406
  by (import lim DIFF_ISCONST)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3407
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3408
lemma DIFF_ISCONST_ALL: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3409
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3410
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3411
      ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3412
        ((diffl::(real => real) => real => real => bool) f (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3413
      ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3414
        (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3415
            (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3416
             (%y::real. (op =::real => real => bool) (f x) (f y)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3417
  by (import lim DIFF_ISCONST_ALL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3418
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3419
lemma INTERVAL_ABS: "ALL (x::real) (z::real) d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3420
   (x - d <= z & z <= x + d) = (abs (z - x) <= d)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3421
  by (import lim INTERVAL_ABS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3422
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3423
lemma CONT_INJ_LEMMA: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3424
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3425
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3426
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3427
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3428
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3429
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3430
                (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3431
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3432
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3433
                       ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3434
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3435
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3436
                           (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3437
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3438
                                ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3439
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3440
                                    ((op -::real => real => real) z x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3441
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3442
                                ((op =::real => real => bool) (g (f z)) z)))
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
                                ((contl::(real => real) => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3451
                                  z)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3452
                     ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3453
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3454
                         (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3455
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3456
                              ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3457
                                ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3458
                                  ((op -::real => real => real) z x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3459
                                d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3460
                              ((op <=::real => real => bool) (f z)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3461
                                (f x)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3462
  by (import lim CONT_INJ_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3463
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3464
lemma CONT_INJ_LEMMA2: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3465
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3466
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3467
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3468
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3469
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3470
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3471
                (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3472
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3473
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3474
                       ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3475
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3476
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3477
                           (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3478
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3479
                                ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3480
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3481
                                    ((op -::real => real => real) z x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3482
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3483
                                ((op =::real => real => bool) (g (f z)) z)))
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
                                ((contl::(real => real) => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3492
                                  z)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3493
                     ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3494
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3495
                         (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3496
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3497
                              ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3498
                                ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3499
                                  ((op -::real => real => real) z x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3500
                                d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3501
                              ((op <=::real => real => bool) (f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3502
                                (f z)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3503
  by (import lim CONT_INJ_LEMMA2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3504
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3505
lemma CONT_INJ_RANGE: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3506
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3507
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3508
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3509
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3510
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3511
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3512
                (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3513
                    (op -->::bool => bool => bool)
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) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3516
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3517
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3518
                           (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3519
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3520
                                ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3521
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3522
                                    ((op -::real => real => real) z x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3523
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3524
                                ((op =::real => real => bool) (g (f z)) z)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3525
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3526
                           (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3527
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3528
                                ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3529
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3530
                                    ((op -::real => real => real) z x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3531
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3532
                                ((contl::(real => real) => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3533
                                  z)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3534
                     ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3535
                       (%e::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3536
                           (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3537
                            ((op <::real => real => bool) (0::real) e)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3538
                            ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3539
                              (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3540
                                  (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3541
                                   ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3542
                                     ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3543
 ((op -::real => real => real) y (f x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3544
                                     e)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3545
                                   ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3546
                                     (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3547
   (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3548
    ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3549
      ((abs::real => real) ((op -::real => real => real) z x)) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3550
    ((op =::real => real => bool) (f z) y)))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3551
  by (import lim CONT_INJ_RANGE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3552
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3553
lemma CONT_INVERSE: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3554
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3555
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3556
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3557
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3558
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3559
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3560
                (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3561
                    (op -->::bool => bool => bool)
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 <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3564
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3565
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3566
                           (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3567
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3568
                                ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3569
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3570
                                    ((op -::real => real => real) z x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3571
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3572
                                ((op =::real => real => bool) (g (f z)) z)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3573
                         ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3574
                           (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3575
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3576
                                ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3577
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3578
                                    ((op -::real => real => real) z x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3579
                                  d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3580
                                ((contl::(real => real) => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3581
                                  z)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3582
                     ((contl::(real => real) => real => bool) g (f x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3583
  by (import lim CONT_INVERSE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3584
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3585
lemma DIFF_INVERSE: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3586
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3587
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3588
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3589
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3590
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3591
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3592
                (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3593
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3594
                     (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3595
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3596
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3597
                            ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3598
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3599
                              ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3600
                                (%z::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 <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3603
 ((abs::real => real) ((op -::real => real => real) z x)) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3604
                                     ((op =::real => real => bool) (g (f z))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3605
 z)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3606
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3607
                                ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3608
                                  (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3609
(op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3610
 ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3611
   ((abs::real => real) ((op -::real => real => real) z x)) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3612
 ((contl::(real => real) => real => bool) f z)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3613
                                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3614
                                  ((diffl::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3615
     => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3616
                                    f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3617
                                  ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3618
                                    ((op =::real => real => bool) l
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3619
(0::real)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3620
                          ((diffl::(real => real) => real => real => bool) g
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3621
                            ((inverse::real => real) l) (f x)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3622
  by (import lim DIFF_INVERSE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3623
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3624
lemma DIFF_INVERSE_LT: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3625
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3626
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3627
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3628
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3629
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3630
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3631
                (%x::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
                     (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3634
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3635
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3636
                            ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3637
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3638
                              ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3639
                                (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3640
                                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3641
                                     ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3642
 ((abs::real => real) ((op -::real => real => real) z x)) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3643
                                     ((op =::real => real => bool) (g (f z))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3644
 z)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3645
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3646
                                ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3647
                                  (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3648
(op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3649
 ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3650
   ((abs::real => real) ((op -::real => real => real) z x)) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3651
 ((contl::(real => real) => real => bool) f z)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3652
                                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3653
                                  ((diffl::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3654
     => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3655
                                    f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3656
                                  ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3657
                                    ((op =::real => real => bool) l
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3658
(0::real)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3659
                          ((diffl::(real => real) => real => real => bool) g
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3660
                            ((inverse::real => real) l) (f x)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3661
  by (import lim DIFF_INVERSE_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3662
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3663
lemma INTERVAL_CLEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3664
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3665
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3666
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3667
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3668
           (%x::real.
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 &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3671
                  ((op <::real => real => bool) a x)
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
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3674
                  (%d::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3675
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3676
                       ((op <::real => real => bool) (0::real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3677
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3678
                         (%y::real.
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)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3681
                                ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3682
                                  ((op -::real => real => real) y x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3683
                                d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3684
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3685
                                ((op <::real => real => bool) a y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3686
                                ((op <::real => real => bool) y b)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3687
  by (import lim INTERVAL_CLEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3688
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3689
lemma DIFF_INVERSE_OPEN: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3690
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3691
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3692
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3693
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3694
           (%l::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3695
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3696
                (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3697
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3698
                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3699
                         (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3700
                          (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3701
                              (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3702
                               ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3703
                                 ((op <::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3704
                                 ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3705
                                   ((op <::real => real => bool) x b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3706
                                   ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3707
                                     ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3708
 (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3709
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3710
      ((op &::bool => bool => bool) ((op <::real => real => bool) a z)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3711
        ((op <::real => real => bool) z b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3712
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3713
        ((op =::real => real => bool) (g (f z)) z)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3714
        ((contl::(real => real) => real => bool) f z))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3715
                                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3716
 ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3717
 ((Not::bool => bool) ((op =::real => real => bool) l (0::real)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3718
                               ((diffl::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3719
  => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3720
                                 g ((inverse::real => real) l) (f x))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3721
  by (import lim DIFF_INVERSE_OPEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3722
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3723
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3724
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3725
;setup_theory powser
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3726
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3727
lemma POWDIFF_LEMMA: "ALL n x y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3728
   real.sum (0, Suc n) (%p. x ^ p * y ^ (Suc n - p)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3729
   y * real.sum (0, Suc n) (%p. x ^ p * y ^ (n - p))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3730
  by (import powser POWDIFF_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3731
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3732
lemma POWDIFF: "ALL n x y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3733
   x ^ Suc n - y ^ Suc n =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3734
   (x - y) * real.sum (0, Suc n) (%p. x ^ p * y ^ (n - p))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3735
  by (import powser POWDIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3736
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3737
lemma POWREV: "ALL n x y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3738
   real.sum (0, Suc n) (%xa. x ^ xa * y ^ (n - xa)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3739
   real.sum (0, Suc n) (%xa. x ^ (n - xa) * y ^ xa)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3740
  by (import powser POWREV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3741
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3742
lemma POWSER_INSIDEA: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3743
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3744
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3745
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3746
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3747
           (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3748
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3749
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3750
                  ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3751
                    (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3752
                        (op *::real => real => real) (f n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3753
                         ((op ^::real => nat => real) x n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3754
                  ((op <::real => real => bool) ((abs::real => real) z)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3755
                    ((abs::real => real) x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3756
                ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3757
                  (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3758
                      (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3759
                       ((abs::real => real) (f n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3760
                       ((op ^::real => nat => real) z n))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3761
  by (import powser POWSER_INSIDEA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3762
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3763
lemma POWSER_INSIDE: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3764
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3765
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3766
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3767
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3768
           (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3769
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3770
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3771
                  ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3772
                    (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3773
                        (op *::real => real => real) (f n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3774
                         ((op ^::real => nat => real) x n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3775
                  ((op <::real => real => bool) ((abs::real => real) z)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3776
                    ((abs::real => real) x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3777
                ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3778
                  (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3779
                      (op *::real => real => real) (f n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3780
                       ((op ^::real => nat => real) z n))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3781
  by (import powser POWSER_INSIDE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3782
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3783
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3784
  diffs :: "(nat => real) => nat => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3785
  "diffs == %c n. real (Suc n) * c (Suc n)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3786
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3787
lemma diffs: "ALL c. diffs c = (%n. real (Suc n) * c (Suc n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3788
  by (import powser diffs)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3789
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3790
lemma DIFFS_NEG: "ALL c. diffs (%n. - c n) = (%x. - diffs c x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3791
  by (import powser DIFFS_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3792
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3793
lemma DIFFS_LEMMA: "ALL n c x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3794
   real.sum (0, n) (%n. diffs c n * x ^ n) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3795
   real.sum (0, n) (%n. real n * (c n * x ^ (n - 1))) +
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3796
   real n * (c n * x ^ (n - 1))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3797
  by (import powser DIFFS_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3798
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3799
lemma DIFFS_LEMMA2: "ALL n c x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3800
   real.sum (0, n) (%n. real n * (c n * x ^ (n - 1))) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3801
   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
  3802
  by (import powser DIFFS_LEMMA2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3803
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3804
lemma DIFFS_EQUIV: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3805
 (%c::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3806
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3807
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3808
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3809
           ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3810
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3811
                 (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3812
                  ((diffs::(nat => real) => nat => real) c n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3813
                  ((op ^::real => nat => real) x n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3814
           ((sums::(nat => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3815
             (%n::nat.
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 => real => real) (c n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3818
                    ((op ^::real => nat => real) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3819
                      ((op -::nat => nat => nat) n (1::nat)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3820
             ((suminf::(nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3821
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3822
                   (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3823
                    ((diffs::(nat => real) => nat => real) c n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3824
                    ((op ^::real => nat => real) x n))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3825
  by (import powser DIFFS_EQUIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3826
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3827
lemma TERMDIFF_LEMMA1: "ALL m z h.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3828
   real.sum (0, m) (%p. (z + h) ^ (m - p) * z ^ p - z ^ m) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3829
   real.sum (0, m) (%p. z ^ p * ((z + h) ^ (m - p) - z ^ (m - p)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3830
  by (import powser TERMDIFF_LEMMA1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3831
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3832
lemma TERMDIFF_LEMMA2: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3833
 (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3834
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3835
      (%h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3836
          (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3837
           (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3838
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3839
                ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3840
                  ((op =::real => real => bool) h (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3841
                ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3842
                  ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3843
                    ((op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3844
                      ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3845
                        ((op ^::real => nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3846
                          ((op +::real => real => real) z h) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3847
                        ((op ^::real => nat => real) z n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3848
                      h)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3849
                    ((op *::real => real => real) ((real::nat => real) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3850
                      ((op ^::real => nat => real) z
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3851
                        ((op -::nat => nat => nat) n (1::nat)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3852
                  ((op *::real => real => real) h
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3853
                    ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3854
                      ((Pair::nat => nat => nat * nat) (0::nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3855
                        ((op -::nat => nat => nat) n (1::nat)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3856
                      (%p::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3857
                          (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3858
                           ((op ^::real => nat => real) z p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3859
                           ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3860
                             ((Pair::nat => nat => nat * nat) (0::nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3861
                               ((op -::nat => nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3862
                                 ((op -::nat => nat => nat) n (1::nat)) p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3863
                             (%q::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3864
                                 (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3865
                                  ((op ^::real => nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3866
                                    ((op +::real => real => real) z h) q)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3867
                                  ((op ^::real => nat => real) z
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3868
                                    ((op -::nat => nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3869
((op -::nat => nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3870
  ((op -::nat => nat => nat) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3871
    ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3872
      ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  3873
        ((op BIT::bin => bool => bin) (Numeral.Pls::bin) (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3874
        (False::bool))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3875
  p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3876
q)))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3877
  by (import powser TERMDIFF_LEMMA2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3878
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3879
lemma TERMDIFF_LEMMA3: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3880
 (%z::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3881
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3882
      (%h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3883
          (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3884
           (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3885
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3886
                (%k'::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3887
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3888
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3889
                       ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3890
                         ((op =::real => real => bool) h (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3891
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3892
                         ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3893
                           ((abs::real => real) z) k')
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3894
                         ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3895
                           ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3896
                             ((op +::real => real => real) z h))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3897
                           k')))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3898
                     ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3899
                       ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3900
                         ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3901
                           ((op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3902
                             ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3903
                               ((op ^::real => nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3904
                                 ((op +::real => real => real) z h) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3905
                               ((op ^::real => nat => real) z n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3906
                             h)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3907
                           ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3908
                             ((real::nat => real) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3909
                             ((op ^::real => nat => real) z
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3910
                               ((op -::nat => nat => nat) n (1::nat))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3911
                       ((op *::real => real => real) ((real::nat => real) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3912
                         ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3913
                           ((real::nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3914
                             ((op -::nat => nat => nat) n (1::nat)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3915
                           ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3916
                             ((op ^::real => nat => real) k'
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3917
                               ((op -::nat => nat => nat) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3918
                                 ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3919
                                   ((op BIT::bin => bool => bin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3920
                                     ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  3921
 (Numeral.Pls::bin) (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3922
                                     (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3923
                             ((abs::real => real) h)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3924
  by (import powser TERMDIFF_LEMMA3)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3925
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3926
lemma TERMDIFF_LEMMA4: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3927
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3928
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3929
      (%k'::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3930
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3931
           (%k::real.
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 &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3934
                  ((op <::real => real => bool) (0::real) k)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3935
                  ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3936
                    (%h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3937
                        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3938
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3939
                           ((op <::real => real => bool) (0::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3940
                             ((abs::real => real) h))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3941
                           ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3942
                             ((abs::real => real) h) k))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3943
                         ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3944
                           ((abs::real => real) (f h))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3945
                           ((op *::real => real => real) k'
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3946
                             ((abs::real => real) h))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3947
                ((tends_real_real::(real => real) => real => real => bool) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3948
                  (0::real) (0::real)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3949
  by (import powser TERMDIFF_LEMMA4)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3950
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3951
lemma TERMDIFF_LEMMA5: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3952
 (%f::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3953
     (All::((real => nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3954
      (%g::real => nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3955
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3956
           (%k::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3957
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3958
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3959
                  ((op <::real => real => bool) (0::real) k)
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) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3962
                    ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3963
                      (%h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3964
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3965
                           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3966
                             ((op <::real => real => bool) (0::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3967
                               ((abs::real => real) h))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3968
                             ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3969
                               ((abs::real => real) h) k))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3970
                           ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3971
                             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3972
                                 (op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3973
                                  ((abs::real => real) (g h n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3974
                                  ((op *::real => real => real) (f n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3975
                                    ((abs::real => real) h))))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3976
                ((tends_real_real::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3977
                  (%h::real. (suminf::(nat => real) => real) (g h))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3978
                  (0::real) (0::real)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3979
  by (import powser TERMDIFF_LEMMA5)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3980
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3981
lemma TERMDIFF: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3982
 (%c::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3983
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3984
      (%k'::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3985
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3986
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3987
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3988
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3989
                  ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3990
                    (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3991
                        (op *::real => real => real) (c n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3992
                         ((op ^::real => nat => real) k' n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3993
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3994
                    ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3995
                      (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3996
                          (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3997
                           ((diffs::(nat => real) => nat => real) c n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3998
                           ((op ^::real => nat => real) k' n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  3999
                    ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4000
                      ((summable::(nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4001
                        (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4002
                            (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4003
                             ((diffs::(nat => real) => nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4004
                               ((diffs::(nat => real) => nat => real) c) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4005
                             ((op ^::real => nat => real) k' n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4006
                      ((op <::real => real => bool) ((abs::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4007
                        ((abs::real => real) k')))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4008
                ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4009
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4010
                      (suminf::(nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4011
                       (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4012
                           (op *::real => real => real) (c n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4013
                            ((op ^::real => nat => real) x n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4014
                  ((suminf::(nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4015
                    (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4016
                        (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4017
                         ((diffs::(nat => real) => nat => real) c n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4018
                         ((op ^::real => nat => real) x n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4019
                  x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4020
  by (import powser TERMDIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4021
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4022
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4023
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4024
;setup_theory transc
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4025
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4026
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4027
  exp :: "real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4028
  "exp == %x. suminf (%n. inverse (real (FACT n)) * x ^ n)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4029
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4030
lemma exp: "ALL x. exp x = suminf (%n. inverse (real (FACT n)) * x ^ n)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4031
  by (import transc exp)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4032
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4033
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4034
  cos :: "real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4035
  "cos ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4036
%x. suminf
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4037
     (%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
  4038
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4039
lemma cos: "ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4040
   cos x =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4041
   suminf
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4042
    (%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
  4043
  by (import transc cos)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4044
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4045
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4046
  sin :: "real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4047
  "sin ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4048
%x. suminf
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4049
     (%n. (if EVEN n then 0 else (- 1) ^ ((n - 1) div 2) / real (FACT n)) *
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4050
          x ^ n)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4051
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4052
lemma sin: "ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4053
   sin x =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4054
   suminf
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4055
    (%n. (if EVEN n then 0 else (- 1) ^ ((n - 1) div 2) / real (FACT n)) *
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4056
         x ^ n)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4057
  by (import transc sin)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4058
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4059
lemma EXP_CONVERGES: "ALL x. sums (%n. inverse (real (FACT n)) * x ^ n) (exp x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4060
  by (import transc EXP_CONVERGES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4061
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4062
lemma SIN_CONVERGES: "ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4063
   sums
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4064
    (%n. (if EVEN n then 0 else (- 1) ^ ((n - 1) div 2) / real (FACT n)) *
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4065
         x ^ n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4066
    (sin x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4067
  by (import transc SIN_CONVERGES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4068
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4069
lemma COS_CONVERGES: "ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4070
   sums
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4071
    (%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
  4072
    (cos x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4073
  by (import transc COS_CONVERGES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4074
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4075
lemma EXP_FDIFF: "diffs (%n. inverse (real (FACT n))) = (%n. inverse (real (FACT n)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4076
  by (import transc EXP_FDIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4077
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4078
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
  4079
(%n. if EVEN n then (- 1) ^ (n div 2) / real (FACT n) else 0)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4080
  by (import transc SIN_FDIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4081
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4082
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
  4083
(%n. - (if EVEN n then 0 else (- 1) ^ ((n - 1) div 2) / real (FACT n)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4084
  by (import transc COS_FDIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4085
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4086
lemma SIN_NEGLEMMA: "ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4087
   - sin x =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4088
   suminf
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4089
    (%n. - ((if EVEN n then 0
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4090
             else (- 1) ^ ((n - 1) div 2) / real (FACT n)) *
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4091
            x ^ n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4092
  by (import transc SIN_NEGLEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4093
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4094
lemma DIFF_EXP: "ALL x. diffl exp (exp x) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4095
  by (import transc DIFF_EXP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4096
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4097
lemma DIFF_SIN: "ALL x. diffl sin (cos x) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4098
  by (import transc DIFF_SIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4099
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4100
lemma DIFF_COS: "ALL x. diffl cos (- sin x) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4101
  by (import transc DIFF_COS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4102
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4103
lemma DIFF_COMPOSITE: "(op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4104
 ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4105
   ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4106
     ((diffl::(real => real) => real => real => bool) (f::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4107
       (l::real) (x::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4108
     ((Not::bool => bool) ((op =::real => real => bool) (f x) (0::real))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4109
   ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4110
     (%x::real. (inverse::real => real) (f x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4111
     ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4112
       ((op /::real => real => real) l
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4113
         ((op ^::real => nat => real) (f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4114
           ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4115
             ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  4116
               ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  4117
                 (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4118
               (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4119
     x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4120
 ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4121
   ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4122
     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4123
       ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4124
       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4125
         ((diffl::(real => real) => real => real => bool) (g::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4126
           (m::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4127
         ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4128
           ((op =::real => real => bool) (g x) (0::real)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4129
     ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4130
       (%x::real. (op /::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4131
       ((op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4132
         ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4133
           ((op *::real => real => real) l (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4134
           ((op *::real => real => real) m (f x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4135
         ((op ^::real => nat => real) (g x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4136
           ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4137
             ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  4138
               ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  4139
                 (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4140
               (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4141
       x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4142
   ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4143
     ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4144
       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4145
         ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4146
         ((diffl::(real => real) => real => real => bool) g m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4147
       ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4148
         (%x::real. (op +::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4149
         ((op +::real => real => real) l m) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4150
     ((op &::bool => bool => bool)
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) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4154
           ((diffl::(real => real) => real => real => bool) g m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4155
         ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4156
           (%x::real. (op *::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4157
           ((op +::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4158
             ((op *::real => real => real) l (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4159
             ((op *::real => real => real) m (f x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4160
           x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4161
       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4162
         ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4163
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4164
             ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4165
             ((diffl::(real => real) => real => real => bool) g m x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4166
           ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4167
             (%x::real. (op -::real => real => real) (f x) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4168
             ((op -::real => real => real) l m) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4169
         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4170
           ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4171
             ((diffl::(real => real) => real => real => bool) f l x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4172
             ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4173
               (%x::real. (uminus::real => real) (f x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4174
               ((uminus::real => real) l) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4175
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4176
             ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4177
               ((diffl::(real => real) => real => real => bool) g m x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4178
               ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4179
                 (%x::real. (op ^::real => nat => real) (g x) (n::nat))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4180
                 ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4181
                   ((op *::real => real => real) ((real::nat => real) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4182
                     ((op ^::real => nat => real) (g x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4183
                       ((op -::nat => nat => nat) n (1::nat))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4184
                   m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4185
                 x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4186
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4187
               ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4188
                 ((diffl::(real => real) => real => real => bool) g m x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4189
                 ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4190
                   (%x::real. (exp::real => real) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4191
                   ((op *::real => real => real) ((exp::real => real) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4192
                     m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4193
                   x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4194
               ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4195
                 ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4196
                   ((diffl::(real => real) => real => real => bool) g m x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4197
                   ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4198
                     (%x::real. (sin::real => real) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4199
                     ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4200
                       ((cos::real => real) (g x)) m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4201
                     x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4202
                 ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4203
                   ((diffl::(real => real) => real => real => bool) g m x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4204
                   ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4205
                     (%x::real. (cos::real => real) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4206
                     ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4207
                       ((uminus::real => real) ((sin::real => real) (g x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4208
                       m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4209
                     x))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4210
  by (import transc DIFF_COMPOSITE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4211
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4212
lemma EXP_0: "exp 0 = 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4213
  by (import transc EXP_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4214
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4215
lemma EXP_LE_X: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4216
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4217
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4218
      ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4219
      ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4220
        ((op +::real => real => real) (1::real) x) ((exp::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4221
  by (import transc EXP_LE_X)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4222
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4223
lemma EXP_LT_1: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4224
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4225
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4226
      ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4227
      ((op <::real => real => bool) (1::real) ((exp::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4228
  by (import transc EXP_LT_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4229
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4230
lemma EXP_ADD_MUL: "ALL x y. exp (x + y) * exp (- x) = exp y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4231
  by (import transc EXP_ADD_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4232
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4233
lemma EXP_NEG_MUL: "ALL x. exp x * exp (- x) = 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4234
  by (import transc EXP_NEG_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4235
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4236
lemma EXP_NEG_MUL2: "ALL x. exp (- x) * exp x = 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4237
  by (import transc EXP_NEG_MUL2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4238
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4239
lemma EXP_NEG: "ALL x. exp (- x) = inverse (exp x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4240
  by (import transc EXP_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4241
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4242
lemma EXP_ADD: "ALL x y. exp (x + y) = exp x * exp y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4243
  by (import transc EXP_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4244
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4245
lemma EXP_POS_LE: "ALL x. 0 <= exp x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4246
  by (import transc EXP_POS_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4247
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4248
lemma EXP_NZ: "ALL x. exp x ~= 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4249
  by (import transc EXP_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4250
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4251
lemma EXP_POS_LT: "ALL x. 0 < exp x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4252
  by (import transc EXP_POS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4253
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4254
lemma EXP_N: "ALL n x. exp (real n * x) = exp x ^ n"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4255
  by (import transc EXP_N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4256
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4257
lemma EXP_SUB: "ALL x y. exp (x - y) = exp x / exp y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4258
  by (import transc EXP_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4259
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4260
lemma EXP_MONO_IMP: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4261
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4262
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4263
      (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4264
          (op -->::bool => bool => bool) ((op <::real => real => bool) x y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4265
           ((op <::real => real => bool) ((exp::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4266
             ((exp::real => real) y))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4267
  by (import transc EXP_MONO_IMP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4268
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4269
lemma EXP_MONO_LT: "ALL x y. (exp x < exp y) = (x < y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4270
  by (import transc EXP_MONO_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4271
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4272
lemma EXP_MONO_LE: "ALL x y. (exp x <= exp y) = (x <= y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4273
  by (import transc EXP_MONO_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4274
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4275
lemma EXP_INJ: "ALL x y. (exp x = exp y) = (x = y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4276
  by (import transc EXP_INJ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4277
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4278
lemma EXP_TOTAL_LEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4279
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4280
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4281
      ((op <=::real => real => bool) (1::real) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4282
      ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4283
        (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4284
            (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4285
             ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4286
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4287
               ((op <=::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4288
                 ((op -::real => real => real) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4289
               ((op =::real => real => bool) ((exp::real => real) x) y)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4290
  by (import transc EXP_TOTAL_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4291
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4292
lemma EXP_TOTAL: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4293
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4294
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4295
      ((op <::real => real => bool) (0::real) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4296
      ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4297
        (%x::real. (op =::real => real => bool) ((exp::real => real) x) y)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4298
  by (import transc EXP_TOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4299
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4300
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4301
  ln :: "real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4302
  "ln == %x. SOME u. exp u = x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4303
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4304
lemma ln: "ALL x. ln x = (SOME u. exp u = x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4305
  by (import transc ln)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4306
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4307
lemma LN_EXP: "ALL x. ln (exp x) = x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4308
  by (import transc LN_EXP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4309
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4310
lemma EXP_LN: "ALL x. (exp (ln x) = x) = (0 < x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4311
  by (import transc EXP_LN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4312
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4313
lemma LN_MUL: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4314
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4315
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4316
      (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4317
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4318
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4319
             ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4320
             ((op <::real => real => bool) (0::real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4321
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4322
             ((ln::real => real) ((op *::real => real => real) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4323
             ((op +::real => real => real) ((ln::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4324
               ((ln::real => real) y)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4325
  by (import transc LN_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4326
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4327
lemma LN_INJ: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4328
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4329
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4330
      (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4331
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4332
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4333
             ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4334
             ((op <::real => real => bool) (0::real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4335
           ((op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4336
             ((op =::real => real => bool) ((ln::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4337
               ((ln::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4338
             ((op =::real => real => bool) x y))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4339
  by (import transc LN_INJ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4340
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4341
lemma LN_1: "ln 1 = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4342
  by (import transc LN_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4343
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4344
lemma LN_INV: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4345
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4346
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4347
      ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4348
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4349
        ((ln::real => real) ((inverse::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4350
        ((uminus::real => real) ((ln::real => real) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4351
  by (import transc LN_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4352
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4353
lemma LN_DIV: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4354
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4355
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4356
      (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4357
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4358
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4359
             ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4360
             ((op <::real => real => bool) (0::real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4361
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4362
             ((ln::real => real) ((op /::real => real => real) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4363
             ((op -::real => real => real) ((ln::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4364
               ((ln::real => real) y)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4365
  by (import transc LN_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4366
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4367
lemma LN_MONO_LT: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4368
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4369
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4370
      (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4371
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4372
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4373
             ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4374
             ((op <::real => real => bool) (0::real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4375
           ((op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4376
             ((op <::real => real => bool) ((ln::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4377
               ((ln::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4378
             ((op <::real => real => bool) x y))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4379
  by (import transc LN_MONO_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4380
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4381
lemma LN_MONO_LE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4382
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4383
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4384
      (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4385
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4386
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4387
             ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4388
             ((op <::real => real => bool) (0::real) y))
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) ((ln::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4391
               ((ln::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4392
             ((op <=::real => real => bool) x y))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4393
  by (import transc LN_MONO_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4394
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4395
lemma LN_POW: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4396
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4397
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4398
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4399
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4400
           ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4401
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4402
             ((ln::real => real) ((op ^::real => nat => real) x n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4403
             ((op *::real => real => real) ((real::nat => real) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4404
               ((ln::real => real) x)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4405
  by (import transc LN_POW)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4406
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4407
lemma LN_LE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4408
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4409
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4410
      ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4411
      ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4412
        ((ln::real => real) ((op +::real => real => real) (1::real) x)) x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4413
  by (import transc LN_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4414
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4415
lemma LN_LT_X: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4416
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4417
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4418
      ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4419
      ((op <::real => real => bool) ((ln::real => real) x) x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4420
  by (import transc LN_LT_X)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4421
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4422
lemma LN_POS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4423
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4424
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4425
      ((op <=::real => real => bool) (1::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4426
      ((op <=::real => real => bool) (0::real) ((ln::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4427
  by (import transc LN_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4428
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4429
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4430
  root :: "nat => real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4431
  "(op ==::(nat => real => real) => (nat => real => real) => prop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4432
 (root::nat => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4433
 (%(n::nat) x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4434
     (Eps::(real => bool) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4435
      (%u::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4436
          (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4437
           ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4438
             ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4439
             ((op <::real => real => bool) (0::real) u))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4440
           ((op =::real => real => bool) ((op ^::real => nat => real) u n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4441
             x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4442
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4443
lemma root: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4444
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4445
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4446
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4447
          (op =::real => real => bool) ((root::nat => real => real) n x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4448
           ((Eps::(real => bool) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4449
             (%u::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4450
                 (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4451
                  ((op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4452
                    ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4453
                    ((op <::real => real => bool) (0::real) u))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4454
                  ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4455
                    ((op ^::real => nat => real) u n) x)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4456
  by (import transc root)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4457
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4458
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4459
  sqrt :: "real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4460
  "sqrt == root 2"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4461
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4462
lemma sqrt: "ALL x. sqrt x = root 2 x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4463
  by (import transc sqrt)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4464
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4465
lemma ROOT_LT_LEMMA: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4466
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4467
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4468
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4469
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4470
           ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4471
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4472
             ((op ^::real => nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4473
               ((exp::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4474
                 ((op /::real => real => real) ((ln::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4475
                   ((real::nat => real) ((Suc::nat => nat) n))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4476
               ((Suc::nat => nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4477
             x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4478
  by (import transc ROOT_LT_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4479
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4480
lemma ROOT_LN: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4481
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4482
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4483
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4484
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4485
           ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4486
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4487
             ((root::nat => real => real) ((Suc::nat => nat) n) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4488
             ((exp::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4489
               ((op /::real => real => real) ((ln::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4490
                 ((real::nat => real) ((Suc::nat => nat) n)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4491
  by (import transc ROOT_LN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4492
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4493
lemma ROOT_0: "ALL n. root (Suc n) 0 = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4494
  by (import transc ROOT_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4495
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4496
lemma ROOT_1: "ALL n. root (Suc n) 1 = 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4497
  by (import transc ROOT_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4498
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4499
lemma ROOT_POS_LT: "(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_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4508
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4509
lemma ROOT_POW_POS: "(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
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4514
           ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4515
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4516
             ((op ^::real => nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4517
               ((root::nat => real => real) ((Suc::nat => nat) n) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4518
               ((Suc::nat => nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4519
             x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4520
  by (import transc ROOT_POW_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4521
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4522
lemma POW_ROOT_POS: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4523
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4524
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4525
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4526
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4527
           ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4528
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4529
             ((root::nat => real => real) ((Suc::nat => nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4530
               ((op ^::real => nat => real) x ((Suc::nat => nat) n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4531
             x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4532
  by (import transc POW_ROOT_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4533
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4534
lemma ROOT_POS: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4535
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4536
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4537
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4538
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4539
           ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4540
           ((op <=::real => real => bool) (0::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4541
             ((root::nat => real => real) ((Suc::nat => nat) n) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4542
  by (import transc ROOT_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4543
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4544
lemma ROOT_POS_UNIQ: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4545
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4546
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4547
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4548
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4549
           (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4550
               (op -->::bool => bool => bool)
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 &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4554
                    ((op <=::real => real => bool) (0::real) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4555
                    ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4556
                      ((op ^::real => nat => real) y ((Suc::nat => nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4557
                      x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4558
                ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4559
                  ((root::nat => real => real) ((Suc::nat => nat) n) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4560
                  y))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4561
  by (import transc ROOT_POS_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4562
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4563
lemma ROOT_MUL: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4564
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4565
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4566
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4567
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4568
           (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4569
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4570
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4571
                  ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4572
                  ((op <=::real => real => bool) (0::real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4573
                ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4574
                  ((root::nat => real => real) ((Suc::nat => nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4575
                    ((op *::real => real => real) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4576
                  ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4577
                    ((root::nat => real => real) ((Suc::nat => nat) n) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4578
                    ((root::nat => real => real) ((Suc::nat => nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4579
                      y))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4580
  by (import transc ROOT_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4581
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4582
lemma ROOT_INV: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4583
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4584
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4585
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4586
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4587
           ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4588
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4589
             ((root::nat => real => real) ((Suc::nat => nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4590
               ((inverse::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4591
             ((inverse::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4592
               ((root::nat => real => real) ((Suc::nat => nat) n) x)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4593
  by (import transc ROOT_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4594
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4595
lemma ROOT_DIV: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4596
 (%x::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4597
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4598
      (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4599
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4600
           (%xb::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4601
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4602
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4603
                  ((op <=::real => real => bool) (0::real) xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4604
                  ((op <=::real => real => bool) (0::real) xb))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4605
                ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4606
                  ((root::nat => real => real) ((Suc::nat => nat) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4607
                    ((op /::real => real => real) xa xb))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4608
                  ((op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4609
                    ((root::nat => real => real) ((Suc::nat => nat) x) xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4610
                    ((root::nat => real => real) ((Suc::nat => nat) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4611
                      xb))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4612
  by (import transc ROOT_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4613
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4614
lemma ROOT_MONO_LE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4615
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4616
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4617
      (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4618
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4619
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4620
             ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4621
             ((op <=::real => real => bool) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4622
           ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4623
             ((root::nat => real => real) ((Suc::nat => nat) (n::nat)) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4624
             ((root::nat => real => real) ((Suc::nat => nat) n) y))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4625
  by (import transc ROOT_MONO_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4626
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4627
lemma SQRT_0: "sqrt 0 = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4628
  by (import transc SQRT_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4629
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4630
lemma SQRT_1: "sqrt 1 = 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4631
  by (import transc SQRT_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4632
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4633
lemma SQRT_POS_LT: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4634
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4635
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4636
      ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4637
      ((op <::real => real => bool) (0::real) ((sqrt::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4638
  by (import transc SQRT_POS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4639
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4640
lemma SQRT_POS_LE: "(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
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4643
      ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4644
      ((op <=::real => real => bool) (0::real) ((sqrt::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4645
  by (import transc SQRT_POS_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4646
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4647
lemma SQRT_POW2: "ALL x. (sqrt x ^ 2 = x) = (0 <= x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4648
  by (import transc SQRT_POW2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4649
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4650
lemma SQRT_POW_2: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4651
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4652
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4653
      ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4654
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4655
        ((op ^::real => nat => real) ((sqrt::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4656
          ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4657
            ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  4658
              ((op BIT::bin => bool => bin) (Numeral.Pls::bin) (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4659
              (False::bool))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4660
        x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4661
  by (import transc SQRT_POW_2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4662
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4663
lemma POW_2_SQRT: "(op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4664
 ((op <=::real => real => bool) (0::real) (x::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4665
 ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4666
   ((sqrt::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4667
     ((op ^::real => nat => real) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4668
       ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4669
         ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  4670
           ((op BIT::bin => bool => bin) (Numeral.Pls::bin) (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4671
           (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4672
   x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4673
  by (import transc POW_2_SQRT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4674
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4675
lemma SQRT_POS_UNIQ: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4676
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4677
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4678
      (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4679
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4680
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4681
             ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4682
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4683
               ((op <=::real => real => bool) (0::real) xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4684
               ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4685
                 ((op ^::real => nat => real) xa
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4686
                   ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4687
                     ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  4688
                       ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4689
                         (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4690
                       (False::bool))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4691
                 x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4692
           ((op =::real => real => bool) ((sqrt::real => real) x) xa)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4693
  by (import transc SQRT_POS_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4694
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4695
lemma SQRT_MUL: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4696
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4697
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4698
      (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4699
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4700
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4701
             ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4702
             ((op <=::real => real => bool) (0::real) xa))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4703
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4704
             ((sqrt::real => real) ((op *::real => real => real) x xa))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4705
             ((op *::real => real => real) ((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_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4708
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4709
lemma SQRT_INV: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4710
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4711
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4712
      ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4713
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4714
        ((sqrt::real => real) ((inverse::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4715
        ((inverse::real => real) ((sqrt::real => real) x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4716
  by (import transc SQRT_INV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4717
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4718
lemma SQRT_DIV: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4719
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4720
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4721
      (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4722
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4723
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4724
             ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4725
             ((op <=::real => real => bool) (0::real) xa))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4726
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4727
             ((sqrt::real => real) ((op /::real => real => real) x xa))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4728
             ((op /::real => real => real) ((sqrt::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4729
               ((sqrt::real => real) xa)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4730
  by (import transc SQRT_DIV)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4731
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4732
lemma SQRT_MONO_LE: "(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
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4735
      (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4736
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4737
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4738
             ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4739
             ((op <=::real => real => bool) x xa))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4740
           ((op <=::real => real => bool) ((sqrt::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4741
             ((sqrt::real => real) xa))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4742
  by (import transc SQRT_MONO_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4743
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4744
lemma SQRT_EVEN_POW2: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4745
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4746
     (op -->::bool => bool => bool) ((EVEN::nat => bool) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4747
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4748
        ((sqrt::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4749
          ((op ^::real => nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4750
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4751
              ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  4752
                ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  4753
                  (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4754
                (False::bool)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4755
            n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4756
        ((op ^::real => nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4757
          ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4758
            ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  4759
              ((op BIT::bin => bool => bin) (Numeral.Pls::bin) (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4760
              (False::bool)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4761
          ((op div::nat => nat => nat) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4762
            ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4763
              ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  4764
                ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  4765
                  (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4766
                (False::bool)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4767
  by (import transc SQRT_EVEN_POW2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4768
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4769
lemma REAL_DIV_SQRT: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4770
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4771
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4772
      ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4773
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4774
        ((op /::real => real => real) x ((sqrt::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4775
        ((sqrt::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4776
  by (import transc REAL_DIV_SQRT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4777
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4778
lemma SQRT_EQ: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4779
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4780
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4781
      (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4782
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4783
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4784
             ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4785
               ((op ^::real => nat => real) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4786
                 ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4787
                   ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  4788
                     ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4789
                       (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4790
                     (False::bool))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4791
               y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4792
             ((op <=::real => real => bool) (0::real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4793
           ((op =::real => real => bool) x ((sqrt::real => real) y))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4794
  by (import transc SQRT_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4795
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4796
lemma SIN_0: "sin 0 = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4797
  by (import transc SIN_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4798
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4799
lemma COS_0: "cos 0 = 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4800
  by (import transc COS_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4801
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4802
lemma SIN_CIRCLE: "ALL x. sin x ^ 2 + cos x ^ 2 = 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4803
  by (import transc SIN_CIRCLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4804
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4805
lemma SIN_BOUND: "ALL x. abs (sin x) <= 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4806
  by (import transc SIN_BOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4807
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4808
lemma SIN_BOUNDS: "ALL x. - 1 <= sin x & sin x <= 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4809
  by (import transc SIN_BOUNDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4810
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4811
lemma COS_BOUND: "ALL x. abs (cos x) <= 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4812
  by (import transc COS_BOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4813
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4814
lemma COS_BOUNDS: "ALL x. - 1 <= cos x & cos x <= 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4815
  by (import transc COS_BOUNDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4816
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4817
lemma SIN_COS_ADD: "ALL x y.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4818
   (sin (x + y) - (sin x * cos y + cos x * sin y)) ^ 2 +
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4819
   (cos (x + y) - (cos x * cos y - sin x * sin y)) ^ 2 =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4820
   0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4821
  by (import transc SIN_COS_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4822
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4823
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
  4824
  by (import transc SIN_COS_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4825
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4826
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
  4827
  by (import transc SIN_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4828
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4829
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
  4830
  by (import transc COS_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4831
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4832
lemma SIN_NEG: "ALL x. sin (- x) = - sin x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4833
  by (import transc SIN_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4834
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4835
lemma COS_NEG: "ALL x. cos (- x) = cos x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4836
  by (import transc COS_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4837
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4838
lemma SIN_DOUBLE: "ALL x. sin (2 * x) = 2 * (sin x * cos x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4839
  by (import transc SIN_DOUBLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4840
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4841
lemma COS_DOUBLE: "ALL x. cos (2 * x) = cos x ^ 2 - sin x ^ 2"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4842
  by (import transc COS_DOUBLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4843
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4844
lemma SIN_PAIRED: "ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4845
   sums (%n. (- 1) ^ n / real (FACT (2 * n + 1)) * x ^ (2 * n + 1)) (sin x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4846
  by (import transc SIN_PAIRED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4847
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4848
lemma SIN_POS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4849
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4850
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4851
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4852
        ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4853
        ((op <::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4854
          ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4855
            ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  4856
              ((op BIT::bin => bool => bin) (Numeral.Pls::bin) (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4857
              (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4858
      ((op <::real => real => bool) (0::real) ((sin::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4859
  by (import transc SIN_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4860
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4861
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
  4862
  by (import transc COS_PAIRED)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4863
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4864
lemma COS_2: "cos 2 < 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4865
  by (import transc COS_2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4866
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4867
lemma COS_ISZERO: "EX! x. 0 <= x & x <= 2 & cos x = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4868
  by (import transc COS_ISZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4869
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4870
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4871
  pi :: "real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4872
  "pi == 2 * (SOME x. 0 <= x & x <= 2 & cos x = 0)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4873
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4874
lemma pi: "pi = 2 * (SOME x. 0 <= x & x <= 2 & cos x = 0)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4875
  by (import transc pi)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4876
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4877
lemma PI2: "pi / 2 = (SOME x. 0 <= x & x <= 2 & cos x = 0)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4878
  by (import transc PI2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4879
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4880
lemma COS_PI2: "cos (pi / 2) = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4881
  by (import transc COS_PI2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4882
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4883
lemma PI2_BOUNDS: "0 < pi / 2 & pi / 2 < 2"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4884
  by (import transc PI2_BOUNDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4885
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4886
lemma PI_POS: "0 < pi"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4887
  by (import transc PI_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4888
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4889
lemma SIN_PI2: "sin (pi / 2) = 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4890
  by (import transc SIN_PI2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4891
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4892
lemma COS_PI: "cos pi = - 1"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4893
  by (import transc COS_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4894
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4895
lemma SIN_PI: "sin pi = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4896
  by (import transc SIN_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4897
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4898
lemma SIN_COS: "ALL x. sin x = cos (pi / 2 - x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4899
  by (import transc SIN_COS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4900
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4901
lemma COS_SIN: "ALL x. cos x = sin (pi / 2 - x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4902
  by (import transc COS_SIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4903
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4904
lemma SIN_PERIODIC_PI: "ALL x. sin (x + pi) = - sin x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4905
  by (import transc SIN_PERIODIC_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4906
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4907
lemma COS_PERIODIC_PI: "ALL x. cos (x + pi) = - cos x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4908
  by (import transc COS_PERIODIC_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4909
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4910
lemma SIN_PERIODIC: "ALL x. sin (x + 2 * pi) = sin x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4911
  by (import transc SIN_PERIODIC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4912
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4913
lemma COS_PERIODIC: "ALL x. cos (x + 2 * pi) = cos x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4914
  by (import transc COS_PERIODIC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4915
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4916
lemma COS_NPI: "ALL n. cos (real n * pi) = (- 1) ^ n"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4917
  by (import transc COS_NPI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4918
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4919
lemma SIN_NPI: "ALL n::nat. sin (real n * pi) = (0::real)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4920
  by (import transc SIN_NPI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4921
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4922
lemma SIN_POS_PI2: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4923
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4924
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4925
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4926
        ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4927
        ((op <::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4928
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4929
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4930
              ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  4931
                ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  4932
                  (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4933
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4934
      ((op <::real => real => bool) (0::real) ((sin::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4935
  by (import transc SIN_POS_PI2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4936
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4937
lemma COS_POS_PI2: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4938
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4939
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4940
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4941
        ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4942
        ((op <::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4943
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4944
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4945
              ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  4946
                ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  4947
                  (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4948
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4949
      ((op <::real => real => bool) (0::real) ((cos::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4950
  by (import transc COS_POS_PI2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4951
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4952
lemma COS_POS_PI: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4953
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4954
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4955
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4956
        ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4957
          ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4958
            ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4959
              ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4960
                ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  4961
                  ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  4962
                    (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4963
                  (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4964
          x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4965
        ((op <::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4966
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4967
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4968
              ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  4969
                ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  4970
                  (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4971
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4972
      ((op <::real => real => bool) (0::real) ((cos::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4973
  by (import transc COS_POS_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4974
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4975
lemma SIN_POS_PI: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4976
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4977
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4978
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4979
        ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4980
        ((op <::real => real => bool) x (pi::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4981
      ((op <::real => real => bool) (0::real) ((sin::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4982
  by (import transc SIN_POS_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4983
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4984
lemma COS_POS_PI2_LE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4985
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4986
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4987
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4988
        ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4989
        ((op <=::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4990
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4991
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4992
              ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  4993
                ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  4994
                  (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4995
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4996
      ((op <=::real => real => bool) (0::real) ((cos::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4997
  by (import transc COS_POS_PI2_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4998
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  4999
lemma COS_POS_PI_LE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5000
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5001
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5002
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5003
        ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5004
          ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5005
            ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5006
              ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5007
                ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5008
                  ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5009
                    (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5010
                  (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5011
          x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5012
        ((op <=::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5013
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5014
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5015
              ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5016
                ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5017
                  (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5018
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5019
      ((op <=::real => real => bool) (0::real) ((cos::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5020
  by (import transc COS_POS_PI_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5021
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5022
lemma SIN_POS_PI2_LE: "(All::(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 &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5026
        ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5027
        ((op <=::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5028
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5029
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5030
              ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5031
                ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5032
                  (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5033
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5034
      ((op <=::real => real => bool) (0::real) ((sin::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5035
  by (import transc SIN_POS_PI2_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5036
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5037
lemma SIN_POS_PI_LE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5038
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5039
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5040
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5041
        ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5042
        ((op <=::real => real => bool) x (pi::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5043
      ((op <=::real => real => bool) (0::real) ((sin::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5044
  by (import transc SIN_POS_PI_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5045
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5046
lemma COS_TOTAL: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5047
 (%y::real.
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 &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5050
        ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5051
        ((op <=::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5052
      ((Ex1::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5053
        (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5054
            (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5055
             ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5056
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5057
               ((op <=::real => real => bool) x (pi::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5058
               ((op =::real => real => bool) ((cos::real => real) x) y)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5059
  by (import transc COS_TOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5060
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5061
lemma SIN_TOTAL: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5062
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5063
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5064
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5065
        ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5066
        ((op <=::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5067
      ((Ex1::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5068
        (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5069
            (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5070
             ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5071
               ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5072
                 ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5073
                   ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5074
                     ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  5075
                       ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5076
                         (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5077
                       (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5078
               x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5079
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5080
               ((op <=::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5081
                 ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5082
                   ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5083
                     ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  5084
                       ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5085
                         (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5086
                       (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5087
               ((op =::real => real => bool) ((sin::real => real) x) y)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5088
  by (import transc SIN_TOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5089
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5090
lemma COS_ZERO_LEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5091
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5092
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5093
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5094
        ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5095
        ((op =::real => real => bool) ((cos::real => real) x) (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5096
      ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5097
        (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5098
            (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5099
             ((Not::bool => bool) ((EVEN::nat => bool) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5100
             ((op =::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5101
               ((op *::real => real => real) ((real::nat => real) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5102
                 ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5103
                   ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5104
                     ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  5105
                       ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5106
                         (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5107
                       (False::bool)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5108
  by (import transc COS_ZERO_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5109
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5110
lemma SIN_ZERO_LEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5111
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5112
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5113
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5114
        ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5115
        ((op =::real => real => bool) ((sin::real => real) x) (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5116
      ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5117
        (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5118
            (op &::bool => bool => bool) ((EVEN::nat => bool) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5119
             ((op =::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5120
               ((op *::real => real => real) ((real::nat => real) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5121
                 ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5122
                   ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5123
                     ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  5124
                       ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5125
                         (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5126
                       (False::bool)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5127
  by (import transc SIN_ZERO_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5128
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5129
lemma COS_ZERO: "ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5130
   (cos x = 0) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5131
   ((EX n. ~ EVEN n & x = real n * (pi / 2)) |
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5132
    (EX n. ~ EVEN n & x = - (real n * (pi / 2))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5133
  by (import transc COS_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5134
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5135
lemma SIN_ZERO: "ALL x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5136
   (sin x = 0) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5137
   ((EX n. EVEN n & x = real n * (pi / 2)) |
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5138
    (EX n. EVEN n & x = - (real n * (pi / 2))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5139
  by (import transc SIN_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5140
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5141
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5142
  tan :: "real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5143
  "tan == %x. sin x / cos x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5144
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5145
lemma tan: "ALL x. tan x = sin x / cos x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5146
  by (import transc tan)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5147
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5148
lemma TAN_0: "tan 0 = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5149
  by (import transc TAN_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5150
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5151
lemma TAN_PI: "tan pi = 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5152
  by (import transc TAN_PI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5153
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5154
lemma TAN_NPI: "ALL n::nat. tan (real n * pi) = (0::real)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5155
  by (import transc TAN_NPI)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5156
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5157
lemma TAN_NEG: "ALL x. tan (- x) = - tan x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5158
  by (import transc TAN_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5159
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5160
lemma TAN_PERIODIC: "ALL x. tan (x + 2 * pi) = tan x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5161
  by (import transc TAN_PERIODIC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5162
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5163
lemma TAN_ADD: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5164
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5165
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5166
      (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5167
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5168
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5169
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5170
               ((op =::real => real => bool) ((cos::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5171
                 (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5172
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5173
               ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5174
                 ((op =::real => real => bool) ((cos::real => real) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5175
                   (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5176
               ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5177
                 ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5178
                   ((cos::real => real) ((op +::real => real => real) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5179
                   (0::real)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5180
           ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5181
             ((tan::real => real) ((op +::real => real => real) x y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5182
             ((op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5183
               ((op +::real => real => real) ((tan::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5184
                 ((tan::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5185
               ((op -::real => real => real) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5186
                 ((op *::real => real => real) ((tan::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5187
                   ((tan::real => real) y)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5188
  by (import transc TAN_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5189
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5190
lemma TAN_DOUBLE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5191
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5192
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5193
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5194
        ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5195
          ((op =::real => real => bool) ((cos::real => real) x) (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5196
        ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5197
          ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5198
            ((cos::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5199
              ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5200
                ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5201
                  ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  5202
                    ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5203
                      (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5204
                    (False::bool)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5205
                x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5206
            (0::real))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5207
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5208
        ((tan::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5209
          ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5210
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5211
              ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5212
                ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5213
                  (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5214
                (False::bool)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5215
            x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5216
        ((op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5217
          ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5218
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5219
              ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5220
                ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5221
                  (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5222
                (False::bool)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5223
            ((tan::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5224
          ((op -::real => real => real) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5225
            ((op ^::real => nat => real) ((tan::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5226
              ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5227
                ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5228
                  ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5229
                    (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5230
                  (False::bool))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5231
  by (import transc TAN_DOUBLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5232
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5233
lemma TAN_POS_PI2: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5234
 (%x::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 &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5237
        ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5238
        ((op <::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5239
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5240
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5241
              ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5242
                ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5243
                  (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5244
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5245
      ((op <::real => real => bool) (0::real) ((tan::real => real) x)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5246
  by (import transc TAN_POS_PI2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5247
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5248
lemma DIFF_TAN: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5249
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5250
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5251
      ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5252
        ((op =::real => real => bool) ((cos::real => real) x) (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5253
      ((diffl::(real => real) => real => real => bool) (tan::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5254
        ((inverse::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5255
          ((op ^::real => nat => real) ((cos::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5256
            ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5257
              ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5258
                ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5259
                  (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5260
                (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5261
        x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5262
  by (import transc DIFF_TAN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5263
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5264
lemma TAN_TOTAL_LEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5265
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5266
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5267
      ((op <::real => real => bool) (0::real) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5268
      ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5269
        (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5270
            (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5271
             ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5272
             ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5273
               ((op <::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5274
                 ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5275
                   ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5276
                     ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  5277
                       ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5278
                         (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5279
                       (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5280
               ((op <::real => real => bool) y ((tan::real => real) x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5281
  by (import transc TAN_TOTAL_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5282
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5283
lemma TAN_TOTAL_POS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5284
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5285
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5286
      ((op <=::real => real => bool) (0::real) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5287
      ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5288
        (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5289
            (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5290
             ((op <=::real => real => bool) (0::real) x)
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) x
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)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  5296
                       ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5297
                         (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5298
                       (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5299
               ((op =::real => real => bool) ((tan::real => real) x) y)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5300
  by (import transc TAN_TOTAL_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5301
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5302
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
  5303
  by (import transc TAN_TOTAL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5304
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5305
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5306
  asn :: "real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5307
  "asn == %y. SOME x. - (pi / 2) <= x & x <= pi / 2 & sin x = y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5308
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5309
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
  5310
  by (import transc asn)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5311
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5312
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5313
  acs :: "real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5314
  "acs == %y. SOME x. 0 <= x & x <= pi & cos x = y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5315
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5316
lemma acs: "ALL y. acs y = (SOME x. 0 <= x & x <= pi & cos x = y)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5317
  by (import transc acs)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5318
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5319
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5320
  atn :: "real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5321
  "atn == %y. SOME x. - (pi / 2) < x & x < pi / 2 & tan x = y"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5322
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5323
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
  5324
  by (import transc atn)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5325
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5326
lemma ASN: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5327
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5328
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5329
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5330
        ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5331
        ((op <=::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5332
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5333
        ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5334
          ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5335
            ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5336
              ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5337
                ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5338
                  ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5339
                    (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5340
                  (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5341
          ((asn::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5342
        ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5343
          ((op <=::real => real => bool) ((asn::real => real) y)
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)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5347
                  ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5348
                    (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5349
                  (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5350
          ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5351
            ((sin::real => real) ((asn::real => real) y)) y))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5352
  by (import transc ASN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5353
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5354
lemma ASN_SIN: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5355
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5356
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5357
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5358
        ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5359
        ((op <=::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5360
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5361
        ((sin::real => real) ((asn::real => real) y)) y))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5362
  by (import transc ASN_SIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5363
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5364
lemma ASN_BOUNDS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5365
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5366
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5367
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5368
        ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5369
        ((op <=::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5370
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5371
        ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5372
          ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5373
            ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5374
              ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5375
                ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5376
                  ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5377
                    (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5378
                  (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5379
          ((asn::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5380
        ((op <=::real => real => bool) ((asn::real => real) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5381
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5382
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5383
              ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5384
                ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5385
                  (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5386
                (False::bool)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5387
  by (import transc ASN_BOUNDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5388
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5389
lemma ASN_BOUNDS_LT: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5390
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5391
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5392
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5393
        ((op <::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5394
        ((op <::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5395
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5396
        ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5397
          ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5398
            ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5399
              ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5400
                ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5401
                  ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5402
                    (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5403
                  (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5404
          ((asn::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5405
        ((op <::real => real => bool) ((asn::real => real) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5406
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5407
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5408
              ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5409
                ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5410
                  (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5411
                (False::bool)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5412
  by (import transc ASN_BOUNDS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5413
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5414
lemma SIN_ASN: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5415
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5416
     (op -->::bool => bool => bool)
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 <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5419
          ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5420
            ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5421
              ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5422
                ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5423
                  ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5424
                    (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5425
                  (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5426
          x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5427
        ((op <=::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5428
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5429
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5430
              ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5431
                ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5432
                  (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5433
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5434
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5435
        ((asn::real => real) ((sin::real => real) x)) x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5436
  by (import transc SIN_ASN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5437
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5438
lemma ACS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5439
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5440
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5441
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5442
        ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5443
        ((op <=::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5444
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5445
        ((op <=::real => real => bool) (0::real) ((acs::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5446
        ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5447
          ((op <=::real => real => bool) ((acs::real => real) y) (pi::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5448
          ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5449
            ((cos::real => real) ((acs::real => real) y)) y))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5450
  by (import transc ACS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5451
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5452
lemma ACS_COS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5453
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5454
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5455
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5456
        ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5457
        ((op <=::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5458
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5459
        ((cos::real => real) ((acs::real => real) y)) y))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5460
  by (import transc ACS_COS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5461
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5462
lemma ACS_BOUNDS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5463
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5464
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5465
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5466
        ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5467
        ((op <=::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5468
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5469
        ((op <=::real => real => bool) (0::real) ((acs::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5470
        ((op <=::real => real => bool) ((acs::real => real) y) (pi::real))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5471
  by (import transc ACS_BOUNDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5472
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5473
lemma ACS_BOUNDS_LT: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5474
 (%y::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5475
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5476
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5477
        ((op <::real => real => bool) ((uminus::real => real) (1::real)) y)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5478
        ((op <::real => real => bool) y (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5479
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5480
        ((op <::real => real => bool) (0::real) ((acs::real => real) y))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5481
        ((op <::real => real => bool) ((acs::real => real) y) (pi::real))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5482
  by (import transc ACS_BOUNDS_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5483
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5484
lemma COS_ACS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5485
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5486
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5487
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5488
        ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5489
        ((op <=::real => real => bool) x (pi::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5490
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5491
        ((acs::real => real) ((cos::real => real) x)) x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5492
  by (import transc COS_ACS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5493
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5494
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
  5495
  by (import transc ATN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5496
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5497
lemma ATN_TAN: "ALL x. tan (atn x) = x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5498
  by (import transc ATN_TAN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5499
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5500
lemma ATN_BOUNDS: "ALL x. - (pi / 2) < atn x & atn x < pi / 2"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5501
  by (import transc ATN_BOUNDS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5502
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5503
lemma TAN_ATN: "(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)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5512
                  ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5513
                    (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5514
                  (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5515
          x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5516
        ((op <::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5517
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5518
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5519
              ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5520
                ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5521
                  (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5522
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5523
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5524
        ((atn::real => real) ((tan::real => real) x)) x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5525
  by (import transc TAN_ATN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5526
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5527
lemma TAN_SEC: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5528
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5529
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5530
      ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5531
        ((op =::real => real => bool) ((cos::real => real) x) (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5532
      ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5533
        ((op +::real => real => real) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5534
          ((op ^::real => nat => real) ((tan::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5535
            ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5536
              ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5537
                ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5538
                  (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5539
                (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5540
        ((op ^::real => nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5541
          ((inverse::real => real) ((cos::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5542
          ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5543
            ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  5544
              ((op BIT::bin => bool => bin) (Numeral.Pls::bin) (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5545
              (False::bool))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5546
  by (import transc TAN_SEC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5547
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5548
lemma SIN_COS_SQ: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5549
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5550
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5551
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5552
        ((op <=::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5553
        ((op <=::real => real => bool) x (pi::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5554
      ((op =::real => real => bool) ((sin::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5555
        ((sqrt::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5556
          ((op -::real => real => real) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5557
            ((op ^::real => nat => real) ((cos::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5558
              ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5559
                ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5560
                  ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5561
                    (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5562
                  (False::bool))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5563
  by (import transc SIN_COS_SQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5564
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5565
lemma COS_SIN_SQ: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5566
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5567
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5568
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5569
        ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5570
          ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5571
            ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5572
              ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5573
                ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5574
                  ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5575
                    (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5576
                  (False::bool)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5577
          x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5578
        ((op <=::real => real => bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5579
          ((op /::real => real => real) (pi::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5580
            ((number_of::bin => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5581
              ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5582
                ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5583
                  (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5584
                (False::bool))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5585
      ((op =::real => real => bool) ((cos::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5586
        ((sqrt::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5587
          ((op -::real => real => real) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5588
            ((op ^::real => nat => real) ((sin::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5589
              ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5590
                ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5591
                  ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5592
                    (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5593
                  (False::bool))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5594
  by (import transc COS_SIN_SQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5595
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5596
lemma COS_ATN_NZ: "ALL x. cos (atn x) ~= 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5597
  by (import transc COS_ATN_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5598
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5599
lemma COS_ASN_NZ: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5600
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5601
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5602
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5603
        ((op <::real => real => bool) ((uminus::real => real) (1::real)) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5604
        ((op <::real => real => bool) x (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5605
      ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5606
        ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5607
          ((cos::real => real) ((asn::real => real) x)) (0::real))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5608
  by (import transc COS_ASN_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5609
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5610
lemma SIN_ACS_NZ: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5611
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5612
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5613
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5614
        ((op <::real => real => bool) ((uminus::real => real) (1::real)) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5615
        ((op <::real => real => bool) x (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5616
      ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5617
        ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5618
          ((sin::real => real) ((acs::real => real) x)) (0::real))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5619
  by (import transc SIN_ACS_NZ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5620
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5621
lemma COS_SIN_SQRT: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5622
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5623
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5624
      ((op <=::real => real => bool) (0::real) ((cos::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5625
      ((op =::real => real => bool) ((cos::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5626
        ((sqrt::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5627
          ((op -::real => real => real) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5628
            ((op ^::real => nat => real) ((sin::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5629
              ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5630
                ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5631
                  ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5632
                    (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5633
                  (False::bool))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5634
  by (import transc COS_SIN_SQRT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5635
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5636
lemma SIN_COS_SQRT: "(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 <=::real => real => bool) (0::real) ((sin::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5640
      ((op =::real => real => bool) ((sin::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5641
        ((sqrt::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5642
          ((op -::real => real => real) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5643
            ((op ^::real => nat => real) ((cos::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5644
              ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5645
                ((op BIT::bin => bool => bin)
15071
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5646
                  ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
b65fc0787fbe updated;
wenzelm
parents: 15013
diff changeset
  5647
                    (True::bool))
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5648
                  (False::bool))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5649
  by (import transc SIN_COS_SQRT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5650
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5651
lemma DIFF_LN: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5652
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5653
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5654
      ((op <::real => real => bool) (0::real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5655
      ((diffl::(real => real) => real => real => bool) (ln::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5656
        ((inverse::real => real) x) x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5657
  by (import transc DIFF_LN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5658
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5659
lemma DIFF_ASN_LEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5660
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5661
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5662
      ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5663
        ((op <::real => real => bool) ((uminus::real => real) (1::real)) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5664
        ((op <::real => real => bool) x (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5665
      ((diffl::(real => real) => real => real => bool) (asn::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5666
        ((inverse::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5667
          ((cos::real => real) ((asn::real => real) x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5668
        x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5669
  by (import transc DIFF_ASN_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5670
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5671
lemma DIFF_ASN: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5672
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5673
     (op -->::bool => bool => bool)
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 <::real => real => bool) ((uminus::real => real) (1::real)) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5676
        ((op <::real => real => bool) x (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5677
      ((diffl::(real => real) => real => real => bool) (asn::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5678
        ((inverse::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5679
          ((sqrt::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5680
            ((op -::real => real => real) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5681
              ((op ^::real => nat => real) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5682
                ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5683
                  ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  5684
                    ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5685
                      (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5686
                    (False::bool)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5687
        x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5688
  by (import transc DIFF_ASN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5689
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5690
lemma DIFF_ACS_LEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5691
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5692
     (op -->::bool => bool => bool)
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) ((uminus::real => real) (1::real)) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5695
        ((op <::real => real => bool) x (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5696
      ((diffl::(real => real) => real => real => bool) (acs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5697
        ((inverse::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5698
          ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5699
            ((sin::real => real) ((acs::real => real) x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5700
        x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5701
  by (import transc DIFF_ACS_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5702
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5703
lemma DIFF_ACS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5704
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5705
     (op -->::bool => bool => bool)
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 <::real => real => bool) ((uminus::real => real) (1::real)) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5708
        ((op <::real => real => bool) x (1::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5709
      ((diffl::(real => real) => real => real => bool) (acs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5710
        ((uminus::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5711
          ((inverse::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5712
            ((sqrt::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5713
              ((op -::real => real => real) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5714
                ((op ^::real => nat => real) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5715
                  ((number_of::bin => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5716
                    ((op BIT::bin => bool => bin)
15013
34264f5e4691 new treatment of binary numerals
paulson
parents: 14847
diff changeset
  5717
                      ((op BIT::bin => bool => bin) (Numeral.Pls::bin)
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5718
                        (True::bool))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5719
                      (False::bool))))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5720
        x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5721
  by (import transc DIFF_ACS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5722
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5723
lemma DIFF_ATN: "ALL x. diffl atn (inverse (1 + x ^ 2)) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5724
  by (import transc DIFF_ATN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5725
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5726
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5727
  division :: "real * real => (nat => real) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5728
  "(op ==::(real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5729
        => (real * real => (nat => real) => bool) => prop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5730
 (division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5731
 ((split::(real => real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5732
          => real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5733
   (%(a::real) (b::real) D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5734
       (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5735
        ((op =::real => real => bool) (D (0::nat)) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5736
        ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5737
          (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5738
              (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5739
               ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5740
                 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5741
                     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5742
                      ((op <::nat => nat => bool) n N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5743
                      ((op <::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5744
                        (D ((Suc::nat => nat) n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5745
               ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5746
                 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5747
                     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5748
                      ((op <=::nat => nat => bool) N n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5749
                      ((op =::real => real => bool) (D n) b)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5750
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5751
lemma division: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5752
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5753
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5754
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5755
          (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5756
           (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5757
               (op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5758
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5759
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5760
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5761
                  ((op =::real => real => bool) (D (0::nat)) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5762
                  ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5763
                    (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5764
                        (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5765
                         ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5766
                           (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5767
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5768
                                ((op <::nat => nat => bool) n N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5769
                                ((op <::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5770
                                  (D ((Suc::nat => nat) n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5771
                         ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5772
                           (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5773
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5774
                                ((op <=::nat => nat => bool) N n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5775
                                ((op =::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5776
                                  b)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5777
  by (import transc division)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5778
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5779
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5780
  dsize :: "(nat => real) => nat" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5781
  "(op ==::((nat => real) => nat) => ((nat => real) => nat) => prop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5782
 (dsize::(nat => real) => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5783
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5784
     (Eps::(nat => bool) => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5785
      (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5786
          (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5787
           ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5788
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5789
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5790
                  ((op <::nat => nat => bool) n N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5791
                  ((op <::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5792
                    (D ((Suc::nat => nat) n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5793
           ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5794
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5795
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5796
                  ((op <=::nat => nat => bool) N n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5797
                  ((op =::real => real => bool) (D n) (D N))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5798
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5799
lemma dsize: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5800
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5801
     (op =::nat => nat => bool) ((dsize::(nat => real) => nat) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5802
      ((Eps::(nat => bool) => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5803
        (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5804
            (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5805
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5806
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5807
                   (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5808
                    ((op <::nat => nat => bool) n N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5809
                    ((op <::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5810
                      (D ((Suc::nat => nat) n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5811
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5812
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5813
                   (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5814
                    ((op <=::nat => nat => bool) N n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5815
                    ((op =::real => real => bool) (D n) (D N)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5816
  by (import transc dsize)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5817
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5818
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5819
  tdiv :: "real * real => (nat => real) * (nat => real) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5820
  "tdiv ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5821
%(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
  5822
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5823
lemma tdiv: "ALL a b D p.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5824
   tdiv (a, b) (D, p) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5825
   (division (a, b) D & (ALL n. D n <= p n & p n <= D (Suc n)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5826
  by (import transc tdiv)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5827
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5828
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5829
  gauge :: "(real => bool) => (real => real) => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5830
  "(op ==::((real => bool) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5831
        => ((real => bool) => (real => real) => bool) => prop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5832
 (gauge::(real => bool) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5833
 (%(E::real => bool) g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5834
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5835
      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5836
          (op -->::bool => bool => bool) (E x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5837
           ((op <::real => real => bool) (0::real) (g x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5838
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5839
lemma gauge: "(All::((real => bool) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5840
 (%E::real => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5841
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5842
      (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5843
          (op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5844
           ((gauge::(real => bool) => (real => real) => bool) E g)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5845
           ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5846
             (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5847
                 (op -->::bool => bool => bool) (E x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5848
                  ((op <::real => real => bool) (0::real) (g x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5849
  by (import transc gauge)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5850
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5851
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5852
  fine :: "(real => real) => (nat => real) * (nat => real) => bool" 
14847
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5853
  "(op ==::((real => real) => (nat => real) * (nat => real) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5854
        => ((real => real) => (nat => real) * (nat => real) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5855
           => prop)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5856
 (fine::(real => real) => (nat => real) * (nat => real) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5857
 (%g::real => real.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5858
     (split::((nat => real) => (nat => real) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5859
             => (nat => real) * (nat => real) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5860
      (%(D::nat => real) p::nat => real.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5861
          (All::(nat => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5862
           (%n::nat.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5863
               (op -->::bool => bool => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5864
                ((op <::nat => nat => bool) n
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5865
                  ((dsize::(nat => real) => nat) D))
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5866
                ((op <::real => real => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5867
                  ((op -::real => real => real) (D ((Suc::nat => nat) n))
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5868
                    (D n))
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5869
                  (g (p n))))))"
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5870
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5871
lemma fine: "(All::((real => real) => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5872
 (%g::real => real.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5873
     (All::((nat => real) => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5874
      (%D::nat => real.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5875
          (All::((nat => real) => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5876
           (%p::nat => real.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5877
               (op =::bool => bool => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5878
                ((fine::(real => real)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5879
                        => (nat => real) * (nat => real) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5880
                  g ((Pair::(nat => real)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5881
                            => (nat => real)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5882
                               => (nat => real) * (nat => real))
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5883
                      D p))
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5884
                ((All::(nat => bool) => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5885
                  (%n::nat.
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5886
                      (op -->::bool => bool => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5887
                       ((op <::nat => nat => bool) n
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5888
                         ((dsize::(nat => real) => nat) D))
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5889
                       ((op <::real => real => bool)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5890
                         ((op -::real => real => real)
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5891
                           (D ((Suc::nat => nat) n)) (D n))
44d92c12b255 updated;
wenzelm
parents: 14796
diff changeset
  5892
                         (g (p n))))))))"
14516
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5893
  by (import transc fine)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5894
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5895
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5896
  rsum :: "(nat => real) * (nat => real) => (real => real) => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5897
  "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
  5898
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5899
lemma rsum: "ALL D p f.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5900
   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
  5901
  by (import transc rsum)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5902
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5903
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5904
  Dint :: "real * real => (real => real) => real => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5905
  "(op ==::(real * real => (real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5906
        => (real * real => (real => real) => real => bool) => prop)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5907
 (Dint::real * real => (real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5908
 ((split::(real => real => (real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5909
          => real * real => (real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5910
   (%(a::real) (b::real) (f::real => real) k::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5911
       (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5912
        (%e::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5913
            (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5914
             ((op <::real => real => bool) (0::real) e)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5915
             ((Ex::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5916
               (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5917
                   (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5918
                    ((gauge::(real => bool) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5919
                      (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5920
                          (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5921
                           ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5922
                           ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5923
                      g)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5924
                    ((All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5925
                      (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5926
                          (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5927
                           (%p::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5928
                               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5929
                                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5930
                                  ((tdiv::real * real
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5931
    => (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5932
                                    ((Pair::real => real => real * real) a
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5933
b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5934
                                    ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5935
      => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5936
D p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5937
                                  ((fine::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5938
    => (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5939
                                    g ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5940
        => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5941
  D p)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5942
                                ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5943
                                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5944
                                    ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5945
((rsum::(nat => real) * (nat => real) => (real => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5946
  ((Pair::(nat => real) => (nat => real) => (nat => real) * (nat => real)) D
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5947
    p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5948
  f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5949
k))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5950
                                  e)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5951
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5952
lemma Dint: "(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
          (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5957
           (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5958
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5959
                (%k::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5960
                    (op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5961
                     ((Dint::real * real => (real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5962
                       ((Pair::real => real => real * real) a b) f k)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5963
                     ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5964
                       (%e::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5965
                           (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5966
                            ((op <::real => real => bool) (0::real) e)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5967
                            ((Ex::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5968
                              (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5969
                                  (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5970
                                   ((gauge::(real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5971
      => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5972
                                     (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5973
   (op &::bool => bool => bool) ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5974
    ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5975
                                     g)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5976
                                   ((All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5977
                                     (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5978
   (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5979
    (%p::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5980
        (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5981
         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5982
           ((tdiv::real * real => (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5983
             ((Pair::real => real => real * real) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5984
             ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5985
                     => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5986
               D p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5987
           ((fine::(real => real) => (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5988
             g ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5989
                       => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5990
                 D p)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5991
         ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5992
           ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5993
             ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5994
               ((rsum::(nat => real) * (nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5995
                       => (real => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5996
                 ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5997
                         => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5998
                   D p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  5999
                 f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6000
               k))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6001
           e))))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6002
  by (import transc Dint)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6003
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6004
lemma DIVISION_0: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6005
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6006
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6007
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6008
          (op -->::bool => bool => bool) ((op =::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6009
           ((op =::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6010
             ((dsize::(nat => real) => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6011
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6012
                   (If::bool => real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6013
                    ((op =::nat => nat => bool) n (0::nat)) a b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6014
             (0::nat))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6015
  by (import transc DIVISION_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6016
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6017
lemma DIVISION_1: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6018
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6019
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6020
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6021
          (op -->::bool => bool => bool) ((op <::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6022
           ((op =::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6023
             ((dsize::(nat => real) => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6024
               (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6025
                   (If::bool => real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6026
                    ((op =::nat => nat => bool) n (0::nat)) a b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6027
             (1::nat))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6028
  by (import transc DIVISION_1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6029
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6030
lemma DIVISION_SINGLE: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6031
 (%a::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
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6034
          (op -->::bool => bool => bool) ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6035
           ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6036
             ((Pair::real => real => real * real) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6037
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6038
                 (If::bool => real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6039
                  ((op =::nat => nat => bool) n (0::nat)) a b))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6040
  by (import transc DIVISION_SINGLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6041
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6042
lemma DIVISION_LHS: "(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
                ((op =::real => real => bool) (D (0::nat)) a))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6052
  by (import transc DIVISION_LHS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6053
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6054
lemma DIVISION_THM: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6055
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6056
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6057
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6058
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6059
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6060
               (op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6061
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6062
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6063
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6064
                  ((op =::real => real => bool) (D (0::nat)) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6065
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6066
                    ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6067
                      (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6068
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6069
                           ((op <::nat => nat => bool) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6070
                             ((dsize::(nat => real) => nat) D))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6071
                           ((op <::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6072
                             (D ((Suc::nat => nat) n)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6073
                    ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6074
                      (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6075
                          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6076
                           ((op <=::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6077
                             ((dsize::(nat => real) => nat) D) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6078
                           ((op =::real => real => bool) (D n) b))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6079
  by (import transc DIVISION_THM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6080
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6081
lemma DIVISION_RHS: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6082
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6083
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6084
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6085
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6086
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6087
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6088
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6089
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6090
                ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6091
                  (D ((dsize::(nat => real) => nat) D)) b))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6092
  by (import transc DIVISION_RHS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6093
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6094
lemma DIVISION_LT_GEN: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6095
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6096
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6097
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6098
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6099
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6100
               (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6101
                (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6102
                    (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6103
                     (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6104
                         (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6105
                          ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6106
                            ((division::real * real
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6107
  => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6108
                              ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6109
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6110
                              ((op <::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6111
                              ((op <=::nat => nat => bool) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6112
                                ((dsize::(nat => real) => nat) D))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6113
                          ((op <::real => real => bool) (D m) (D n)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6114
  by (import transc DIVISION_LT_GEN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6115
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6116
lemma DIVISION_LT: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6117
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6118
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6119
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6120
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6121
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6122
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6123
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6124
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6125
                ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6126
                  (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6127
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6128
                       ((op <::nat => nat => bool) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6129
                         ((dsize::(nat => real) => nat) D))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6130
                       ((op <::real => real => bool) (D (0::nat))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6131
                         (D ((Suc::nat => nat) n))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6132
  by (import transc DIVISION_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6133
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6134
lemma DIVISION_LE: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6135
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6136
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6137
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6138
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6139
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6140
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6141
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6142
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6143
                ((op <=::real => real => bool) a b))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6144
  by (import transc DIVISION_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6145
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6146
lemma DIVISION_GT: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6147
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6148
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6149
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6150
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6151
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6152
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6153
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6154
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6155
                ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6156
                  (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6157
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6158
                       ((op <::nat => nat => bool) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6159
                         ((dsize::(nat => real) => nat) D))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6160
                       ((op <::real => real => bool) (D n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6161
                         (D ((dsize::(nat => real) => nat) D))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6162
  by (import transc DIVISION_GT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6163
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6164
lemma DIVISION_EQ: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6165
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6166
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6167
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6168
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6169
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6170
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6171
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6172
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6173
                ((op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6174
                  ((op =::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6175
                  ((op =::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6176
                    ((dsize::(nat => real) => nat) D) (0::nat))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6177
  by (import transc DIVISION_EQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6178
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6179
lemma DIVISION_LBOUND: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6180
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6181
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6182
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6183
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6184
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6185
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6186
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6187
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6188
                ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6189
                  (%r::nat. (op <=::real => real => bool) a (D r))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6190
  by (import transc DIVISION_LBOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6191
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6192
lemma DIVISION_LBOUND_LT: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6193
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6194
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6195
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6196
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6197
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6198
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6199
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6200
                  ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6201
                    ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6202
                  ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6203
                    ((op =::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6204
                      ((dsize::(nat => real) => nat) D) (0::nat))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6205
                ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6206
                  (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6207
                      (op <::real => real => bool) a
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6208
                       (D ((Suc::nat => nat) n)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6209
  by (import transc DIVISION_LBOUND_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6210
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6211
lemma DIVISION_UBOUND: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6212
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6213
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6214
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6215
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6216
           (%b::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
                ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6219
                  ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6220
                ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6221
                  (%r::nat. (op <=::real => real => bool) (D r) b)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6222
  by (import transc DIVISION_UBOUND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6223
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6224
lemma DIVISION_UBOUND_LT: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6225
 (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6226
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6227
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6228
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6229
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6230
               (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6231
                (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6232
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6233
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6234
                       ((division::real * real => (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6235
                         ((Pair::real => real => real * real) a b) D)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6236
                       ((op <::nat => nat => bool) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6237
                         ((dsize::(nat => real) => nat) D)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6238
                     ((op <::real => real => bool) (D n) b)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6239
  by (import transc DIVISION_UBOUND_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6240
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6241
lemma DIVISION_APPEND: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6242
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6243
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6244
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6245
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6246
           (%c::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6247
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6248
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6249
                  ((Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6250
                    (%D1::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6251
                        (Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6252
                         (%p1::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6253
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6254
                              ((tdiv::real * real
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6255
=> (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6256
                                ((Pair::real => real => real * real) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6257
                                ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6258
  => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6259
                                  D1 p1))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6260
                              ((fine::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6261
=> (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6262
                                (g::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6263
                                ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6264
  => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6265
                                  D1 p1)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6266
                  ((Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6267
                    (%D2::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6268
                        (Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6269
                         (%p2::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6270
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6271
                              ((tdiv::real * real
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6272
=> (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6273
                                ((Pair::real => real => real * real) b c)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6274
                                ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6275
  => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6276
                                  D2 p2))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6277
                              ((fine::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6278
=> (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6279
                                g ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6280
    => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6281
                                    D2 p2))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6282
                ((Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6283
                  (%x::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6284
                      (Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6285
                       (%p::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6286
                           (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6287
                            ((tdiv::real * real
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6288
                                    => (nat => real) * (nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6289
 => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6290
                              ((Pair::real => real => real * real) a c)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6291
                              ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6292
=> (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6293
                                x p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6294
                            ((fine::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6295
                                    => (nat => real) * (nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6296
 => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6297
                              g ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6298
  => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6299
                                  x p))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6300
  by (import transc DIVISION_APPEND)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6301
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6302
lemma DIVISION_EXISTS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6303
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6304
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6305
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6306
          (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6307
           (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6308
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6309
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6310
                  ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6311
                  ((gauge::(real => bool) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6312
                    (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6313
                        (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6314
                         ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6315
                         ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6316
                    g))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6317
                ((Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6318
                  (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6319
                      (Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6320
                       (%p::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6321
                           (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6322
                            ((tdiv::real * real
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6323
                                    => (nat => real) * (nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6324
 => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6325
                              ((Pair::real => real => real * real) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6326
                              ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6327
=> (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6328
                                D p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6329
                            ((fine::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6330
                                    => (nat => real) * (nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6331
 => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6332
                              g ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6333
  => (nat => real) => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6334
                                  D p))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6335
  by (import transc DIVISION_EXISTS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6336
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6337
lemma GAUGE_MIN: "(All::((real => bool) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6338
 (%E::real => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6339
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6340
      (%g1::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6341
          (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6342
           (%g2::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6343
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6344
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6345
                  ((gauge::(real => bool) => (real => real) => bool) E g1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6346
                  ((gauge::(real => bool) => (real => real) => bool) E g2))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6347
                ((gauge::(real => bool) => (real => real) => bool) E
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6348
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6349
                      (If::bool => real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6350
                       ((op <::real => real => bool) (g1 x) (g2 x)) (g1 x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6351
                       (g2 x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6352
  by (import transc GAUGE_MIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6353
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6354
lemma FINE_MIN: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6355
 (%g1::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6356
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6357
      (%g2::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6358
          (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6359
           (%D::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6360
               (All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6361
                (%p::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6362
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6363
                     ((fine::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6364
                             => (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6365
                       (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6366
                           (If::bool => real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6367
                            ((op <::real => real => bool) (g1 x) (g2 x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6368
                            (g1 x) (g2 x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6369
                       ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6370
                               => (nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6371
                                  => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6372
                         D p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6373
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6374
                       ((fine::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6375
                               => (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6376
                         g1 ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6377
                                    => (nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6378
 => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6379
                              D p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6380
                       ((fine::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6381
                               => (nat => real) * (nat => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6382
                         g2 ((Pair::(nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6383
                                    => (nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6384
 => (nat => real) * (nat => real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6385
                              D p)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6386
  by (import transc FINE_MIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6387
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6388
lemma DINT_UNIQ: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6389
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6390
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6391
      (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6392
          (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6393
           (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6394
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6395
                (%k1::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6396
                    (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6397
                     (%k2::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 &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6400
                            ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6401
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6402
                              ((Dint::real * real
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6403
=> (real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6404
                                ((Pair::real => real => real * real) a b) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6405
                                k1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6406
                              ((Dint::real * real
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6407
=> (real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6408
                                ((Pair::real => real => real * real) a b) f
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6409
                                k2)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6410
                          ((op =::real => real => bool) k1 k2))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6411
  by (import transc DINT_UNIQ)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6412
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6413
lemma INTEGRAL_NULL: "ALL f a. Dint (a, a) f 0"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6414
  by (import transc INTEGRAL_NULL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6415
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6416
lemma FTC1: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6417
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6418
     (All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6419
      (%f'::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6420
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6421
           (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6422
               (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6423
                (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6424
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6425
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6426
                       ((op <=::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6427
                       ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6428
                         (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6429
                             (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6430
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6431
                                ((op <=::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6432
                                ((op <=::real => real => bool) x b))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6433
                              ((diffl::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6434
 => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6435
                                f (f' x) x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6436
                     ((Dint::real * real => (real => real) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6437
                       ((Pair::real => real => real * real) a b) f'
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6438
                       ((op -::real => real => real) (f b) (f a)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6439
  by (import transc FTC1)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6440
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6441
lemma MCLAURIN: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6442
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6443
     (All::((nat => real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6444
      (%diff::nat => real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6445
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6446
           (%h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6447
               (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6448
                (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6449
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6450
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6451
                       ((op <::real => real => bool) (0::real) h)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6452
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6453
                         ((op <::nat => nat => bool) (0::nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6454
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6455
                           ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6456
                             (diff (0::nat)) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6457
                           ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6458
                             (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6459
                                 (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6460
                                  (%t::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6461
(op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6462
 ((op &::bool => bool => bool) ((op <::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6463
   ((op &::bool => bool => bool) ((op <=::real => real => bool) (0::real) t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6464
     ((op <=::real => real => bool) t h)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6465
 ((diffl::(real => real) => real => real => bool) (diff m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6466
   (diff ((Suc::nat => nat) m) t) t)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6467
                     ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6468
                       (%t::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6469
                           (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6470
                            ((op <::real => real => bool) (0::real) t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6471
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6472
                              ((op <::real => real => bool) t h)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6473
                              ((op =::real => real => bool) (f h)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6474
                                ((op +::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6475
                                  ((real.sum::nat * nat
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6476
        => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6477
                                    ((Pair::nat => nat => nat * nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6478
(0::nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6479
                                    (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6480
  (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6481
   ((op /::real => real => real) (diff m (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6482
     ((real::nat => real) ((FACT::nat => nat) m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6483
   ((op ^::real => nat => real) h m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6484
                                  ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6485
                                    ((op /::real => real => real) (diff n t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6486
((real::nat => real) ((FACT::nat => nat) n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6487
                                    ((op ^::real => nat => real) h
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6488
n)))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6489
  by (import transc MCLAURIN)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6490
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6491
lemma MCLAURIN_NEG: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6492
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6493
     (All::((nat => real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6494
      (%diff::nat => real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6495
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6496
           (%h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6497
               (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6498
                (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6499
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6500
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6501
                       ((op <::real => real => bool) h (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6502
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6503
                         ((op <::nat => nat => bool) (0::nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6504
                         ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6505
                           ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6506
                             (diff (0::nat)) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6507
                           ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6508
                             (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6509
                                 (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6510
                                  (%t::real.
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 &::bool => bool => bool) ((op <::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6513
   ((op &::bool => bool => bool) ((op <=::real => real => bool) h t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6514
     ((op <=::real => real => bool) t (0::real))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6515
 ((diffl::(real => real) => real => real => bool) (diff m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6516
   (diff ((Suc::nat => nat) m) t) t)))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6517
                     ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6518
                       (%t::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6519
                           (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6520
                            ((op <::real => real => bool) h t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6521
                            ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6522
                              ((op <::real => real => bool) t (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6523
                              ((op =::real => real => bool) (f h)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6524
                                ((op +::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6525
                                  ((real.sum::nat * nat
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6526
        => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6527
                                    ((Pair::nat => nat => nat * nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6528
(0::nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6529
                                    (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6530
  (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6531
   ((op /::real => real => real) (diff m (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6532
     ((real::nat => real) ((FACT::nat => nat) m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6533
   ((op ^::real => nat => real) h m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6534
                                  ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6535
                                    ((op /::real => real => real) (diff n t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6536
((real::nat => real) ((FACT::nat => nat) n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6537
                                    ((op ^::real => nat => real) h
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6538
n)))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6539
  by (import transc MCLAURIN_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6540
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6541
lemma MCLAURIN_ALL_LT: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6542
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6543
     (All::((nat => real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6544
      (%diff::nat => real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6545
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6546
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6547
             ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6548
               (diff (0::nat)) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6549
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6550
               (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6551
                   (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6552
                    (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6553
                        (diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6554
                         (diff m) (diff ((Suc::nat => nat) m) x) x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6555
           ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6556
             (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6557
                 (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6558
                  (%n::nat.
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 &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6561
                         ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6562
                           ((op =::real => real => bool) x (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6563
                         ((op <::nat => nat => bool) (0::nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6564
                       ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6565
                         (%t::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6566
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6567
                              ((op <::real => real => bool) (0::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6568
                                ((abs::real => real) t))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6569
                              ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6570
                                ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6571
                                  ((abs::real => real) t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6572
                                  ((abs::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6573
                                ((op =::real => real => bool) (f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6574
                                  ((op +::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6575
                                    ((real.sum::nat * nat
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6576
          => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6577
((Pair::nat => nat => nat * nat) (0::nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6578
(%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6579
    (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6580
     ((op /::real => real => real) (diff m (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6581
       ((real::nat => real) ((FACT::nat => nat) m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6582
     ((op ^::real => nat => real) x m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6583
                                    ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6584
((op /::real => real => real) (diff n t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6585
  ((real::nat => real) ((FACT::nat => nat) n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6586
((op ^::real => nat => real) x n))))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6587
  by (import transc MCLAURIN_ALL_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6588
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6589
lemma MCLAURIN_ZERO: "(All::((nat => real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6590
 (%diff::nat => real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6591
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6592
      (%n::nat.
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
                  ((op =::real => real => bool) x (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6598
                  ((op <::nat => nat => bool) (0::nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6599
                ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6600
                  ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6601
                    ((Pair::nat => nat => nat * nat) (0::nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6602
                    (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6603
                        (op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6604
                         ((op /::real => real => real) (diff m (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6605
                           ((real::nat => real) ((FACT::nat => nat) m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6606
                         ((op ^::real => nat => real) x m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6607
                  (diff (0::nat) (0::real))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6608
  by (import transc MCLAURIN_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6609
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6610
lemma MCLAURIN_ALL_LE: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6611
 (%f::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6612
     (All::((nat => real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6613
      (%diff::nat => real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6614
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6615
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6616
             ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6617
               (diff (0::nat)) f)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6618
             ((All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6619
               (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6620
                   (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6621
                    (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6622
                        (diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6623
                         (diff m) (diff ((Suc::nat => nat) m) x) x))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6624
           ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6625
             (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6626
                 (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6627
                  (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6628
                      (Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6629
                       (%t::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6630
                           (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6631
                            ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6632
                              ((abs::real => real) t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6633
                              ((abs::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6634
                            ((op =::real => real => bool) (f x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6635
                              ((op +::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6636
                                ((real.sum::nat * nat
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6637
      => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6638
                                  ((Pair::nat => nat => nat * nat) (0::nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6639
                                    n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6640
                                  (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6641
(op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6642
 ((op /::real => real => real) (diff m (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6643
   ((real::nat => real) ((FACT::nat => nat) m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6644
 ((op ^::real => nat => real) x m)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6645
                                ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6646
                                  ((op /::real => real => real) (diff n t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6647
                                    ((real::nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6648
((FACT::nat => nat) n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6649
                                  ((op ^::real => nat => real) x n))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6650
  by (import transc MCLAURIN_ALL_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6651
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6652
lemma MCLAURIN_EXP_LT: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6653
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6654
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6655
      (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6656
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6657
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6658
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6659
               ((op =::real => real => bool) x (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6660
             ((op <::nat => nat => bool) (0::nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6661
           ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6662
             (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6663
                 (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6664
                  ((op <::real => real => bool) (0::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6665
                    ((abs::real => real) xa))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6666
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6667
                    ((op <::real => real => bool) ((abs::real => real) xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6668
                      ((abs::real => real) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6669
                    ((op =::real => real => bool) ((exp::real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6670
                      ((op +::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6671
                        ((real.sum::nat * nat => (nat => real) => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6672
                          ((Pair::nat => nat => nat * nat) (0::nat) n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6673
                          (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6674
                              (op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6675
                               ((op ^::real => nat => real) x m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6676
                               ((real::nat => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6677
                                 ((FACT::nat => nat) m))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6678
                        ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6679
                          ((op /::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6680
                            ((exp::real => real) xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6681
                            ((real::nat => real) ((FACT::nat => nat) n)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6682
                          ((op ^::real => nat => real) x n)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6683
  by (import transc MCLAURIN_EXP_LT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6684
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6685
lemma MCLAURIN_EXP_LE: "ALL x n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6686
   EX xa.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6687
      abs xa <= abs x &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6688
      exp x =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6689
      real.sum (0, n) (%m. x ^ m / real (FACT m)) +
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6690
      exp xa / real (FACT n) * x ^ n"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6691
  by (import transc MCLAURIN_EXP_LE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6692
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6693
lemma DIFF_LN_COMPOSITE: "(All::((real => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6694
 (%g::real => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6695
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6696
      (%m::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6697
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6698
           (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6699
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6700
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6701
                  ((diffl::(real => real) => real => real => bool) g m x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6702
                  ((op <::real => real => bool) (0::real) (g x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6703
                ((diffl::(real => real) => real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6704
                  (%x::real. (ln::real => real) (g x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6705
                  ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6706
                    ((inverse::real => real) (g x)) m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6707
                  x))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6708
  by (import transc DIFF_LN_COMPOSITE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6709
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6710
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6711
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6712
;setup_theory poly
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6713
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6714
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6715
  poly :: "real list => real => real" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6716
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6717
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
  6718
  by (import poly poly_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6719
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6720
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6721
  poly_add :: "real list => real list => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6722
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6723
specification (poly_add_primdef: poly_add) poly_add_def: "(ALL l2. poly_add [] l2 = l2) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6724
(ALL h t l2.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6725
    poly_add (h # t) l2 =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6726
    (if l2 = [] then h # t else (h + hd l2) # poly_add t (tl l2)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6727
  by (import poly poly_add_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6728
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6729
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6730
  "##" :: "real => real list => real list" ("##")
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6731
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6732
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
  6733
  by (import poly poly_cmul_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6734
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6735
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6736
  poly_neg :: "real list => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6737
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6738
defs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6739
  poly_neg_primdef: "poly_neg == ## (- 1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6740
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6741
lemma poly_neg_def: "poly_neg = ## (- 1)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6742
  by (import poly poly_neg_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6743
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6744
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6745
  poly_mul :: "real list => real list => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6746
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6747
specification (poly_mul_primdef: poly_mul) poly_mul_def: "(ALL l2. poly_mul [] l2 = []) &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6748
(ALL h t l2.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6749
    poly_mul (h # t) l2 =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6750
    (if t = [] then ## h l2 else poly_add (## h l2) (0 # poly_mul t l2)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6751
  by (import poly poly_mul_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6752
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6753
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6754
  poly_exp :: "real list => nat => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6755
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6756
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
  6757
(ALL p n. poly_exp p (Suc n) = poly_mul p (poly_exp p n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6758
  by (import poly poly_exp_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6759
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6760
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6761
  poly_diff_aux :: "nat => real list => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6762
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6763
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
  6764
(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
  6765
  by (import poly poly_diff_aux_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6766
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6767
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6768
  diff :: "real list => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6769
  "diff == %l. if l = [] then [] else poly_diff_aux 1 (tl l)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6770
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6771
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
  6772
  by (import poly poly_diff_def)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6773
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6774
lemma POLY_ADD_CLAUSES: "poly_add [] p2 = p2 &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6775
poly_add p1 [] = p1 &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6776
poly_add (h1 # t1) (h2 # t2) = (h1 + h2) # poly_add t1 t2"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6777
  by (import poly POLY_ADD_CLAUSES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6778
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6779
lemma POLY_CMUL_CLAUSES: "## c [] = [] & ## c (h # t) = c * h # ## c t"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6780
  by (import poly POLY_CMUL_CLAUSES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6781
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6782
lemma POLY_NEG_CLAUSES: "poly_neg [] = [] & poly_neg (h # t) = - h # poly_neg t"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6783
  by (import poly POLY_NEG_CLAUSES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6784
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6785
lemma POLY_MUL_CLAUSES: "poly_mul [] p2 = [] &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6786
poly_mul [h1] p2 = ## h1 p2 &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6787
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
  6788
  by (import poly POLY_MUL_CLAUSES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6789
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6790
lemma POLY_DIFF_CLAUSES: "diff [] = [] & diff [c] = [] & diff (h # t) = poly_diff_aux 1 t"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6791
  by (import poly POLY_DIFF_CLAUSES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6792
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6793
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
  6794
  by (import poly POLY_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6795
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6796
lemma POLY_CMUL: "ALL t c x. poly (## c t) x = c * poly t x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6797
  by (import poly POLY_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6798
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6799
lemma POLY_NEG: "ALL x xa. poly (poly_neg x) xa = - poly x xa"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6800
  by (import poly POLY_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6801
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6802
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
  6803
  by (import poly POLY_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6804
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6805
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
  6806
  by (import poly POLY_EXP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6807
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6808
lemma POLY_DIFF_LEMMA: "ALL t n x.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6809
   diffl (%x. x ^ Suc n * poly t x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6810
    (x ^ n * poly (poly_diff_aux (Suc n) t) x) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6811
  by (import poly POLY_DIFF_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6812
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6813
lemma POLY_DIFF: "ALL t x. diffl (poly t) (poly (diff t) x) x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6814
  by (import poly POLY_DIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6815
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6816
lemma POLY_DIFFERENTIABLE: "ALL l. All (differentiable (poly l))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6817
  by (import poly POLY_DIFFERENTIABLE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6818
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6819
lemma POLY_CONT: "ALL l. All (contl (poly l))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6820
  by (import poly POLY_CONT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6821
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6822
lemma POLY_IVT_POS: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6823
 (%x::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6824
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6825
      (%xa::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6826
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6827
           (%xb::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6828
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6829
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6830
                  ((op <::real => real => bool) xa xb)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6831
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6832
                    ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6833
                      ((poly::real list => real => real) x xa) (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6834
                    ((op <::real => real => bool) (0::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6835
                      ((poly::real list => real => real) x xb))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6836
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6837
                  (%xc::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6838
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6839
                       ((op <::real => real => bool) xa xc)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6840
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6841
                         ((op <::real => real => bool) xc xb)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6842
                         ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6843
                           ((poly::real list => real => real) x xc)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6844
                           (0::real))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6845
  by (import poly POLY_IVT_POS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6846
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6847
lemma POLY_IVT_NEG: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6848
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6849
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6850
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6851
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6852
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6853
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6854
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6855
                  ((op <::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6856
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6857
                    ((op <::real => real => bool) (0::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6858
                      ((poly::real list => real => real) p a))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6859
                    ((op <::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6860
                      ((poly::real list => real => real) p b) (0::real))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6861
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6862
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6863
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6864
                       ((op <::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6865
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6866
                         ((op <::real => real => bool) x b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6867
                         ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6868
                           ((poly::real list => real => real) p x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6869
                           (0::real))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6870
  by (import poly POLY_IVT_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6871
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6872
lemma POLY_MVT: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6873
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6874
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6875
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6876
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6877
           (%b::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6878
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6879
                ((op <::real => real => bool) a b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6880
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6881
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6882
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6883
                       ((op <::real => real => bool) a x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6884
                       ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6885
                         ((op <::real => real => bool) x b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6886
                         ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6887
                           ((op -::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6888
                             ((poly::real list => real => real) p b)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6889
                             ((poly::real list => real => real) p a))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6890
                           ((op *::real => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6891
                             ((op -::real => real => real) b a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6892
                             ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6893
                               ((diff::real list => real list) p) x)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6894
  by (import poly POLY_MVT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6895
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6896
lemma POLY_ADD_RZERO: "ALL x. poly (poly_add x []) = poly x"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6897
  by (import poly POLY_ADD_RZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6898
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6899
lemma POLY_MUL_ASSOC: "ALL x xa xb.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6900
   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
  6901
  by (import poly POLY_MUL_ASSOC)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6902
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6903
lemma POLY_EXP_ADD: "ALL x xa xb.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6904
   poly (poly_exp xb (xa + x)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6905
   poly (poly_mul (poly_exp xb xa) (poly_exp xb x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6906
  by (import poly POLY_EXP_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6907
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6908
lemma POLY_DIFF_AUX_ADD: "ALL t p2 n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6909
   poly (poly_diff_aux n (poly_add t p2)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6910
   poly (poly_add (poly_diff_aux n t) (poly_diff_aux n p2))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6911
  by (import poly POLY_DIFF_AUX_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6912
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6913
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
  6914
  by (import poly POLY_DIFF_AUX_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6915
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6916
lemma POLY_DIFF_AUX_NEG: "ALL x xa.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6917
   poly (poly_diff_aux xa (poly_neg x)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6918
   poly (poly_neg (poly_diff_aux xa x))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6919
  by (import poly POLY_DIFF_AUX_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6920
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6921
lemma POLY_DIFF_AUX_MUL_LEMMA: "ALL t n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6922
   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
  6923
  by (import poly POLY_DIFF_AUX_MUL_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6924
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6925
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
  6926
  by (import poly POLY_DIFF_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6927
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6928
lemma POLY_DIFF_CMUL: "ALL t c. poly (diff (## c t)) = poly (## c (diff t))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6929
  by (import poly POLY_DIFF_CMUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6930
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6931
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
  6932
  by (import poly POLY_DIFF_NEG)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6933
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6934
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
  6935
  by (import poly POLY_DIFF_MUL_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6936
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6937
lemma POLY_DIFF_MUL: "ALL t p2.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6938
   poly (diff (poly_mul t p2)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6939
   poly (poly_add (poly_mul t (diff p2)) (poly_mul (diff t) p2))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6940
  by (import poly POLY_DIFF_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6941
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6942
lemma POLY_DIFF_EXP: "ALL p n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6943
   poly (diff (poly_exp p (Suc n))) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6944
   poly (poly_mul (## (real (Suc n)) (poly_exp p n)) (diff p))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6945
  by (import poly POLY_DIFF_EXP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6946
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6947
lemma POLY_DIFF_EXP_PRIME: "ALL n a.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6948
   poly (diff (poly_exp [- a, 1] (Suc n))) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6949
   poly (## (real (Suc n)) (poly_exp [- a, 1] n))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6950
  by (import poly POLY_DIFF_EXP_PRIME)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6951
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6952
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
  6953
  by (import poly POLY_LINEAR_REM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6954
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6955
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
  6956
  by (import poly POLY_LINEAR_DIVIDES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6957
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6958
lemma POLY_LENGTH_MUL: "ALL x. length (poly_mul [- a, 1] x) = Suc (length x)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6959
  by (import poly POLY_LENGTH_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6960
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6961
lemma POLY_ROOTS_INDEX_LEMMA: "(All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6962
 (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6963
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6964
      (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6965
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6966
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6967
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6968
               ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6969
                 ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6970
                 ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6971
             ((op =::nat => nat => bool) ((size::real list => nat) p) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6972
           ((Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6973
             (%i::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6974
                 (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6975
                  (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6976
                      (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6977
                       ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6978
                         ((poly::real list => real => real) p x) (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6979
                       ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6980
                         (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6981
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6982
                              ((op <=::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6983
                              ((op =::real => real => bool) x (i m)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6984
  by (import poly POLY_ROOTS_INDEX_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6985
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6986
lemma POLY_ROOTS_INDEX_LENGTH: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6987
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6988
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6989
      ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6990
        ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6991
          ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6992
          ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6993
      ((Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6994
        (%i::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6995
            (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6996
             (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6997
                 (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6998
                  ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  6999
                    ((poly::real list => real => real) p x) (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7000
                  ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7001
                    (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7002
                        (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7003
                         ((op <=::nat => nat => bool) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7004
                           ((size::real list => nat) p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7005
                         ((op =::real => real => bool) x (i n))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7006
  by (import poly POLY_ROOTS_INDEX_LENGTH)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7007
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7008
lemma POLY_ROOTS_FINITE_LEMMA: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7009
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7010
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7011
      ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7012
        ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7013
          ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7014
          ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7015
      ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7016
        (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7017
            (Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7018
             (%i::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7019
                 (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7020
                  (%x::real.
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)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7023
                         ((poly::real list => real => real) p x) (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7024
                       ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7025
                         (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7026
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7027
                              ((op <::nat => nat => bool) n N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7028
                              ((op =::real => real => bool) x (i n)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7029
  by (import poly POLY_ROOTS_FINITE_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7030
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7031
lemma FINITE_LEMMA: "(All::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7032
 (%i::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7033
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7034
      (%x::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7035
          (All::((real => bool) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7036
           (%xa::real => bool.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7037
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7038
                ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7039
                  (%xb::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7040
                      (op -->::bool => bool => bool) (xa xb)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7041
                       ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7042
                         (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7043
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7044
                              ((op <::nat => nat => bool) n x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7045
                              ((op =::real => real => bool) xb (i n))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7046
                ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7047
                  (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7048
                      (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7049
                       (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7050
                           (op -->::bool => bool => bool) (xa x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7051
                            ((op <::real => real => bool) x a)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7052
  by (import poly FINITE_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7053
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7054
lemma POLY_ROOTS_FINITE: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7055
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7056
     (op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7057
      ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7058
        ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7059
          ((poly::real list => real => real) p)
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
      ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7062
        (%N::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7063
            (Ex::((nat => real) => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7064
             (%i::nat => real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7065
                 (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7066
                  (%x::real.
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 => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7069
                         ((poly::real list => real => real) p x) (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7070
                       ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7071
                         (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7072
                             (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7073
                              ((op <::nat => nat => bool) n N)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7074
                              ((op =::real => real => bool) x (i n)))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7075
  by (import poly POLY_ROOTS_FINITE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7076
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7077
lemma POLY_ENTIRE_LEMMA: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7078
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7079
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7080
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7081
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7082
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7083
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7084
               ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7085
                 ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7086
                 ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7087
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7088
               ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7089
                 ((poly::real list => real => real) q)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7090
                 ((poly::real list => real => real) ([]::real list)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7091
           ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7092
             ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7093
               ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7094
                 ((poly_mul::real list => real list => real list) p q))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7095
               ((poly::real list => real => real) ([]::real list))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7096
  by (import poly POLY_ENTIRE_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7097
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7098
lemma POLY_ENTIRE: "ALL p q.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7099
   (poly (poly_mul p q) = poly []) = (poly p = poly [] | poly q = poly [])"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7100
  by (import poly POLY_ENTIRE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7101
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7102
lemma POLY_MUL_LCANCEL: "ALL x xa xb.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7103
   (poly (poly_mul x xa) = poly (poly_mul x xb)) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7104
   (poly x = poly [] | poly xa = poly xb)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7105
  by (import poly POLY_MUL_LCANCEL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7106
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7107
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
  7108
  by (import poly POLY_EXP_EQ_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7109
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7110
lemma POLY_PRIME_EQ_0: "ALL a. poly [a, 1] ~= poly []"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7111
  by (import poly POLY_PRIME_EQ_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7112
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7113
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
  7114
  by (import poly POLY_EXP_PRIME_EQ_0)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7115
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7116
lemma POLY_ZERO_LEMMA: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7117
 (%h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7118
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7119
      (%t::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7120
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7121
           ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7122
             ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7123
               ((op #::real => real list => real list) h t))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7124
             ((poly::real list => real => real) ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7125
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7126
             ((op =::real => real => bool) h (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7127
             ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7128
               ((poly::real list => real => real) t)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7129
               ((poly::real list => real => real) ([]::real list))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7130
  by (import poly POLY_ZERO_LEMMA)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7131
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7132
lemma POLY_ZERO: "ALL t. (poly t = poly []) = list_all (%c. c = 0) t"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7133
  by (import poly POLY_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7134
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7135
lemma POLY_DIFF_AUX_ISZERO: "ALL t n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7136
   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
  7137
  by (import poly POLY_DIFF_AUX_ISZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7138
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7139
lemma POLY_DIFF_ISZERO: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7140
 (%x::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7141
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7142
      ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7143
        ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7144
          ((diff::real list => real list) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7145
        ((poly::real list => real => real) ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7146
      ((Ex::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7147
        (%h::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7148
            (op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7149
             ((poly::real list => real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7150
             ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7151
               ((op #::real => real list => real list) h
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7152
                 ([]::real list))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7153
  by (import poly POLY_DIFF_ISZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7154
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7155
lemma POLY_DIFF_ZERO: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7156
 (%x::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 =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7159
        ((poly::real list => real => real) x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7160
        ((poly::real list => real => real) ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7161
      ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7162
        ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7163
          ((diff::real list => real list) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7164
        ((poly::real list => real => real) ([]::real list))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7165
  by (import poly POLY_DIFF_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7166
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7167
lemma POLY_DIFF_WELLDEF: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7168
 (%p::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
      (%q::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 =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7173
             ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7174
             ((poly::real list => real => real) q))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7175
           ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7176
             ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7177
               ((diff::real list => real list) p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7178
             ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7179
               ((diff::real list => real list) q)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7180
  by (import poly POLY_DIFF_WELLDEF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7181
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7182
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7183
  poly_divides :: "real list => real list => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7184
  "poly_divides == %p1 p2. EX q. poly p2 = poly (poly_mul p1 q)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7185
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7186
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
  7187
  by (import poly poly_divides)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7188
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7189
lemma POLY_PRIMES: "ALL a p q.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7190
   poly_divides [a, 1] (poly_mul p q) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7191
   (poly_divides [a, 1] p | poly_divides [a, 1] q)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7192
  by (import poly POLY_PRIMES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7193
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7194
lemma POLY_DIVIDES_REFL: "ALL p. poly_divides p p"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7195
  by (import poly POLY_DIVIDES_REFL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7196
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7197
lemma POLY_DIVIDES_TRANS: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7198
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7199
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7200
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7201
          (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7202
           (%r::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7203
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7204
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7205
                  ((poly_divides::real list => real list => bool) p q)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7206
                  ((poly_divides::real list => real list => bool) q r))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7207
                ((poly_divides::real list => real list => bool) p r))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7208
  by (import poly POLY_DIVIDES_TRANS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7209
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7210
lemma POLY_DIVIDES_EXP: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7211
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7212
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7213
      (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7214
          (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7215
           (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7216
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7217
                ((op <=::nat => nat => bool) m n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7218
                ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7219
                  ((poly_exp::real list => nat => real list) p m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7220
                  ((poly_exp::real list => nat => real list) p n)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7221
  by (import poly POLY_DIVIDES_EXP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7222
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7223
lemma POLY_EXP_DIVIDES: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7224
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7225
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7226
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7227
          (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7228
           (%m::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7229
               (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7230
                (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7231
                    (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7232
                     ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7233
                       ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7234
                         ((poly_exp::real list => nat => real list) p n) q)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7235
                       ((op <=::nat => nat => bool) m n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7236
                     ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7237
                       ((poly_exp::real list => nat => real list) p m)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7238
                       q)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7239
  by (import poly POLY_EXP_DIVIDES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7240
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7241
lemma POLY_DIVIDES_ADD: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7242
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7243
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7244
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7245
          (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7246
           (%r::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7247
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7248
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7249
                  ((poly_divides::real list => real list => bool) p q)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7250
                  ((poly_divides::real list => real list => bool) p r))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7251
                ((poly_divides::real list => real list => bool) p
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7252
                  ((poly_add::real list => real list => real list) q r)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7253
  by (import poly POLY_DIVIDES_ADD)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7254
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7255
lemma POLY_DIVIDES_SUB: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7256
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7257
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7258
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7259
          (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7260
           (%r::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7261
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7262
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7263
                  ((poly_divides::real list => real list => bool) p q)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7264
                  ((poly_divides::real list => real list => bool) p
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7265
                    ((poly_add::real list => real list => real list) q r)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7266
                ((poly_divides::real list => real list => bool) p r))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7267
  by (import poly POLY_DIVIDES_SUB)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7268
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7269
lemma POLY_DIVIDES_SUB2: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7270
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7271
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7272
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7273
          (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7274
           (%r::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7275
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7276
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7277
                  ((poly_divides::real list => real list => bool) p r)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7278
                  ((poly_divides::real list => real list => bool) p
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7279
                    ((poly_add::real list => real list => real list) q r)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7280
                ((poly_divides::real list => real list => bool) p q))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7281
  by (import poly POLY_DIVIDES_SUB2)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7282
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7283
lemma POLY_DIVIDES_ZERO: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7284
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7285
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7286
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7287
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7288
           ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7289
             ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7290
             ((poly::real list => real => real) ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7291
           ((poly_divides::real list => real list => bool) q p)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7292
  by (import poly POLY_DIVIDES_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7293
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7294
lemma POLY_ORDER_EXISTS: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7295
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7296
     (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7297
      (%d::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7298
          (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7299
           (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7300
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7301
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7302
                  ((op =::nat => nat => bool) ((size::real list => nat) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7303
                    d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7304
                  ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7305
                    ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7306
                      ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7307
                      ((poly::real list => real => real) ([]::real list)))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7308
                ((Ex::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7309
                  (%x::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7310
                      (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7311
                       ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7312
                         ((poly_exp::real list => nat => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7313
                           ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7314
                             ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7315
                             ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7316
                               (1::real) ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7317
                           x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7318
                         p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7319
                       ((Not::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)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7325
                                 (1::real) ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7326
                             ((Suc::nat => nat) x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7327
                           p)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7328
  by (import poly POLY_ORDER_EXISTS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7329
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7330
lemma POLY_ORDER: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7331
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7332
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7333
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7334
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7335
           ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7336
             ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7337
               ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7338
               ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7339
           ((Ex1::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7340
             (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7341
                 (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7342
                  ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7343
                    ((poly_exp::real list => nat => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7344
                      ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7345
                        ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7346
                        ((op #::real => real list => real list) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7347
                          ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7348
                      n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7349
                    p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7350
                  ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7351
                    ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7352
                      ((poly_exp::real list => nat => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7353
                        ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7354
                          ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7355
                          ((op #::real => real list => real list) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7356
                            ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7357
                        ((Suc::nat => nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7358
                      p))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7359
  by (import poly POLY_ORDER)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7360
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7361
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7362
  poly_order :: "real => real list => nat" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7363
  "poly_order ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7364
%a p. SOME n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7365
         poly_divides (poly_exp [- a, 1] n) p &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7366
         ~ poly_divides (poly_exp [- a, 1] (Suc n)) p"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7367
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7368
lemma poly_order: "ALL a p.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7369
   poly_order a p =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7370
   (SOME n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7371
       poly_divides (poly_exp [- a, 1] n) p &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7372
       ~ poly_divides (poly_exp [- a, 1] (Suc n)) p)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7373
  by (import poly poly_order)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7374
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7375
lemma ORDER: "ALL p a n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7376
   (poly_divides (poly_exp [- a, 1] n) p &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7377
    ~ poly_divides (poly_exp [- a, 1] (Suc n)) p) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7378
   (n = poly_order a p & poly p ~= poly [])"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7379
  by (import poly ORDER)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7380
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7381
lemma ORDER_THM: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7382
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7383
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7384
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7385
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7386
           ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7387
             ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7388
               ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7389
               ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7390
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7391
             ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7392
               ((poly_exp::real list => nat => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7393
                 ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7394
                   ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7395
                   ((op #::real => real list => real list) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7396
                     ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7397
                 ((poly_order::real => real list => nat) a p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7398
               p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7399
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7400
               ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7401
                 ((poly_exp::real list => nat => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7402
                   ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7403
                     ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7404
                     ((op #::real => real list => real list) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7405
                       ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7406
                   ((Suc::nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7407
                     ((poly_order::real => real list => nat) a p)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7408
                 p)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7409
  by (import poly ORDER_THM)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7410
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7411
lemma ORDER_UNIQUE: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7412
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7413
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7414
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7415
          (All::(nat => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7416
           (%n::nat.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7417
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7418
                ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7419
                  ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7420
                    ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7421
                      ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7422
                      ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7423
                  ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7424
                    ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7425
                      ((poly_exp::real list => nat => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7426
                        ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7427
                          ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7428
                          ((op #::real => real list => real list) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7429
                            ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7430
                        n)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7431
                      p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7432
                    ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7433
                      ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7434
                        ((poly_exp::real list => nat => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7435
                          ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7436
                            ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7437
                            ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7438
                              (1::real) ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7439
                          ((Suc::nat => nat) n))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7440
                        p))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7441
                ((op =::nat => nat => bool) n
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7442
                  ((poly_order::real => real list => nat) a p)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7443
  by (import poly ORDER_UNIQUE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7444
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7445
lemma ORDER_POLY: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7446
 (%p::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
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7449
          (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7450
           (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7451
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7452
                ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7453
                  ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7454
                  ((poly::real list => real => real) q))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7455
                ((op =::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7456
                  ((poly_order::real => real list => nat) a p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7457
                  ((poly_order::real => real list => nat) a q)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7458
  by (import poly ORDER_POLY)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7459
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7460
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
  7461
  by (import poly ORDER_ROOT)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7462
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7463
lemma ORDER_DIVIDES: "ALL p a n.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7464
   poly_divides (poly_exp [- a, 1] n) p =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7465
   (poly p = poly [] | n <= poly_order a p)"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7466
  by (import poly ORDER_DIVIDES)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7467
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7468
lemma ORDER_DECOMP: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7469
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7470
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7471
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7472
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7473
           ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7474
             ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7475
               ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7476
               ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7477
           ((Ex::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7478
             (%x::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7479
                 (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7480
                  ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7481
                    ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7482
                    ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7483
                      ((poly_mul::real list => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7484
                        ((poly_exp::real list => nat => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7485
                          ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7486
                            ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7487
                            ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7488
                              (1::real) ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7489
                          ((poly_order::real => real list => nat) a p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7490
                        x)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7491
                  ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7492
                    ((poly_divides::real list => real list => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7493
                      ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7494
                        ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7495
                        ((op #::real => real list => real list) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7496
                          ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7497
                      x))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7498
  by (import poly ORDER_DECOMP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7499
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7500
lemma ORDER_MUL: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7501
 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7502
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7503
      (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7504
          (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7505
           (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7506
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7507
                ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7508
                  ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7509
                    ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7510
                      ((poly_mul::real list => real list => real list) p q))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7511
                    ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7512
                ((op =::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7513
                  ((poly_order::real => real list => nat) a
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7514
                    ((poly_mul::real list => real list => real list) p q))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7515
                  ((op +::nat => nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7516
                    ((poly_order::real => real list => nat) a p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7517
                    ((poly_order::real => real list => nat) a q))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7518
  by (import poly ORDER_MUL)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7519
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7520
lemma ORDER_DIFF: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7521
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7522
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7523
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7524
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7525
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7526
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7527
               ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7528
                 ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7529
                   ((diff::real list => real list) p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7530
                 ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7531
             ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7532
               ((op =::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7533
                 ((poly_order::real => real list => nat) a p) (0::nat))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7534
           ((op =::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7535
             ((poly_order::real => real list => nat) a p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7536
             ((Suc::nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7537
               ((poly_order::real => real list => nat) a
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7538
                 ((diff::real list => real list) p))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7539
  by (import poly ORDER_DIFF)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7540
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7541
lemma POLY_SQUAREFREE_DECOMP_ORDER: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7542
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7543
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7544
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7545
          (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7546
           (%d::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7547
               (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7548
                (%e::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7549
                    (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7550
                     (%r::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7551
                         (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7552
                          (%s::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7553
                              (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7554
                               ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7555
                                 ((Not::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)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7559
 ((diff::real list => real list) p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7560
                                     ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7561
 ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7562
                                 ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7563
                                   ((op =::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7564
     => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7565
                                     ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7566
                                     ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7567
 ((poly_mul::real list => real list => real list) q d)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7568
                                   ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7569
                                     ((op =::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7570
       => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7571
 ((poly::real list => real => real) ((diff::real list => real list) p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7572
 ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7573
   ((poly_mul::real list => real list => real list) e d)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7574
                                     ((op =::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7575
       => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7576
 ((poly::real list => real => real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7577
 ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7578
   ((poly_add::real list => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7579
     ((poly_mul::real list => real list => real list) r p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7580
     ((poly_mul::real list => real list => real list) s
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7581
       ((diff::real list => real list) p))))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7582
                               ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7583
                                 (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7584
                                     (op =::nat => nat => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7585
((poly_order::real => real list => nat) a q)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7586
((If::bool => nat => nat => nat)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7587
  ((op =::nat => nat => bool) ((poly_order::real => real list => nat) a p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7588
    (0::nat))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7589
  (0::nat) (1::nat))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7590
  by (import poly POLY_SQUAREFREE_DECOMP_ORDER)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7591
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7592
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7593
  rsquarefree :: "real list => bool" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7594
  "rsquarefree ==
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7595
%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
  7596
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7597
lemma rsquarefree: "ALL p.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7598
   rsquarefree p =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7599
   (poly p ~= poly [] & (ALL a. poly_order a p = 0 | poly_order a p = 1))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7600
  by (import poly rsquarefree)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7601
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7602
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
  7603
  by (import poly RSQUAREFREE_ROOTS)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7604
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7605
lemma RSQUAREFREE_DECOMP: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7606
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7607
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7608
      (%a::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7609
          (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7610
           ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7611
             ((rsquarefree::real list => bool) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7612
             ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7613
               ((poly::real list => real => real) p a) (0::real)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7614
           ((Ex::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7615
             (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7616
                 (op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7617
                  ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7618
                    ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7619
                    ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7620
                      ((poly_mul::real list => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7621
                        ((op #::real => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7622
                          ((uminus::real => real) a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7623
                          ((op #::real => real list => real list) (1::real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7624
                            ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7625
                        q)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7626
                  ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7627
                    ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7628
                      ((poly::real list => real => real) q a)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7629
                      (0::real)))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7630
  by (import poly RSQUAREFREE_DECOMP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7631
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7632
lemma POLY_SQUAREFREE_DECOMP: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7633
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7634
     (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7635
      (%q::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7636
          (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7637
           (%d::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7638
               (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7639
                (%e::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7640
                    (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7641
                     (%r::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7642
                         (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7643
                          (%s::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7644
                              (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7645
                               ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7646
                                 ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7647
                                   ((op =::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7648
     => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7649
                                     ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7650
 ((diff::real list => real list) p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7651
                                     ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7652
 ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7653
                                 ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7654
                                   ((op =::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7655
     => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7656
                                     ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7657
                                     ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7658
 ((poly_mul::real list => real list => real list) q d)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7659
                                   ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7660
                                     ((op =::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7661
       => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7662
 ((poly::real list => real => real) ((diff::real list => real list) p))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7663
 ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7664
   ((poly_mul::real list => real list => real list) e d)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7665
                                     ((op =::(real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7666
       => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7667
 ((poly::real list => real => real) d)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7668
 ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7669
   ((poly_add::real list => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7670
     ((poly_mul::real list => real list => real list) r p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7671
     ((poly_mul::real list => real list => real list) s
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7672
       ((diff::real list => real list) p))))))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7673
                               ((op &::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7674
                                 ((rsquarefree::real list => bool) q)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7675
                                 ((All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7676
                                   (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7677
 (op =::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7678
  ((op =::real => real => bool) ((poly::real list => real => real) q x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7679
    (0::real))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7680
  ((op =::real => real => bool) ((poly::real list => real => real) p x)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7681
    (0::real)))))))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7682
  by (import poly POLY_SQUAREFREE_DECOMP)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7683
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7684
consts
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7685
  normalize :: "real list => real list" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7686
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7687
specification (normalize) normalize: "normalize [] = [] &
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7688
(ALL h t.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7689
    normalize (h # t) =
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7690
    (if normalize t = [] then if h = 0 then [] else [h]
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7691
     else h # normalize t))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7692
  by (import poly normalize)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7693
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7694
lemma POLY_NORMALIZE: "ALL t. poly (normalize t) = poly t"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7695
  by (import poly POLY_NORMALIZE)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7696
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7697
constdefs
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7698
  degree :: "real list => nat" 
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7699
  "degree == %p. PRE (length (normalize p))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7700
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7701
lemma degree: "ALL p. degree p = PRE (length (normalize p))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7702
  by (import poly degree)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7703
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7704
lemma DEGREE_ZERO: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7705
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7706
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7707
      ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7708
        ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7709
        ((poly::real list => real => real) ([]::real list)))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7710
      ((op =::nat => nat => bool) ((degree::real list => nat) p) (0::nat)))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7711
  by (import poly DEGREE_ZERO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7712
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7713
lemma POLY_ROOTS_FINITE_SET: "(All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7714
 (%p::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7715
     (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7716
      ((Not::bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7717
        ((op =::(real => real) => (real => real) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7718
          ((poly::real list => real => real) p)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7719
          ((poly::real list => real => real) ([]::real list))))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7720
      ((FINITE::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7721
        ((GSPEC::(real => real * bool) => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7722
          (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7723
              (Pair::real => bool => real * bool) x
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7724
               ((op =::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7725
                 ((poly::real list => real => real) p x) (0::real))))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7726
  by (import poly POLY_ROOTS_FINITE_SET)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7727
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7728
lemma POLY_MONO: "(All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7729
 (%x::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7730
     (All::(real => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7731
      (%k::real.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7732
          (All::(real list => bool) => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7733
           (%xa::real list.
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7734
               (op -->::bool => bool => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7735
                ((op <=::real => real => bool) ((abs::real => real) x) k)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7736
                ((op <=::real => real => bool)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7737
                  ((abs::real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7738
                    ((poly::real list => real => real) xa x))
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7739
                  ((poly::real list => real => real)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7740
                    ((map::(real => real) => real list => real list)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7741
                      (abs::real => real) xa)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7742
                    k)))))"
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7743
  by (import poly POLY_MONO)
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7744
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7745
;end_setup
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7746
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7747
end
a183dec876ab Added HOL proof importer.
skalberg
parents:
diff changeset
  7748