src/HOL/Import/HOLLight/HOLLight.thy
changeset 17652 b1ef33ebfa17
parent 17644 bd59bfd4bf37
child 17915 e38947f9ba5e
     1.1 --- a/src/HOL/Import/HOLLight/HOLLight.thy	Mon Sep 26 15:56:28 2005 +0200
     1.2 +++ b/src/HOL/Import/HOLLight/HOLLight.thy	Mon Sep 26 16:10:19 2005 +0200
     1.3 @@ -96,7 +96,7 @@
     1.4    by (import hollight EXCLUDED_MIDDLE)
     1.5  
     1.6  constdefs
     1.7 -  COND :: "bool => 'A::type => 'A::type => 'A::type" 
     1.8 +  COND :: "bool => 'A => 'A => 'A" 
     1.9    "COND ==
    1.10  %(t::bool) (t1::'A::type) t2::'A::type.
    1.11     SOME x::'A::type. (t = True --> x = t1) & (t = False --> x = t2)"
    1.12 @@ -174,14 +174,14 @@
    1.13    by (import hollight th_cond)
    1.14  
    1.15  constdefs
    1.16 -  LET_END :: "'A::type => 'A::type" 
    1.17 +  LET_END :: "'A => 'A" 
    1.18    "LET_END == %t::'A::type. t"
    1.19  
    1.20  lemma DEF_LET_END: "LET_END = (%t::'A::type. t)"
    1.21    by (import hollight DEF_LET_END)
    1.22  
    1.23  constdefs
    1.24 -  GABS :: "('A::type => bool) => 'A::type" 
    1.25 +  GABS :: "('A => bool) => 'A" 
    1.26    "(op ==::(('A::type => bool) => 'A::type)
    1.27          => (('A::type => bool) => 'A::type) => prop)
    1.28   (GABS::('A::type => bool) => 'A::type)
    1.29 @@ -194,7 +194,7 @@
    1.30    by (import hollight DEF_GABS)
    1.31  
    1.32  constdefs
    1.33 -  GEQ :: "'A::type => 'A::type => bool" 
    1.34 +  GEQ :: "'A => 'A => bool" 
    1.35    "(op ==::('A::type => 'A::type => bool)
    1.36          => ('A::type => 'A::type => bool) => prop)
    1.37   (GEQ::'A::type => 'A::type => bool) (op =::'A::type => 'A::type => bool)"
    1.38 @@ -209,7 +209,7 @@
    1.39    by (import hollight PAIR_EXISTS_THM)
    1.40  
    1.41  constdefs
    1.42 -  CURRY :: "('A::type * 'B::type => 'C::type) => 'A::type => 'B::type => 'C::type" 
    1.43 +  CURRY :: "('A * 'B => 'C) => 'A => 'B => 'C" 
    1.44    "CURRY ==
    1.45  %(u::'A::type * 'B::type => 'C::type) (ua::'A::type) ub::'B::type.
    1.46     u (ua, ub)"
    1.47 @@ -220,7 +220,7 @@
    1.48    by (import hollight DEF_CURRY)
    1.49  
    1.50  constdefs
    1.51 -  UNCURRY :: "('A::type => 'B::type => 'C::type) => 'A::type * 'B::type => 'C::type" 
    1.52 +  UNCURRY :: "('A => 'B => 'C) => 'A * 'B => 'C" 
    1.53    "UNCURRY ==
    1.54  %(u::'A::type => 'B::type => 'C::type) ua::'A::type * 'B::type.
    1.55     u (fst ua) (snd ua)"
    1.56 @@ -231,8 +231,7 @@
    1.57    by (import hollight DEF_UNCURRY)
    1.58  
    1.59  constdefs
    1.60 -  PASSOC :: "(('A::type * 'B::type) * 'C::type => 'D::type)
    1.61 -=> 'A::type * 'B::type * 'C::type => 'D::type" 
    1.62 +  PASSOC :: "(('A * 'B) * 'C => 'D) => 'A * 'B * 'C => 'D" 
    1.63    "PASSOC ==
    1.64  %(u::('A::type * 'B::type) * 'C::type => 'D::type)
    1.65     ua::'A::type * 'B::type * 'C::type.
    1.66 @@ -245,12 +244,11 @@
    1.67    by (import hollight DEF_PASSOC)
    1.68  
    1.69  lemma num_Axiom: "ALL (e::'A::type) f::'A::type => nat => 'A::type.
    1.70 -   EX! fn::nat => 'A::type.
    1.71 -      fn (0::nat) = e & (ALL n::nat. fn (Suc n) = f (fn n) n)"
    1.72 +   EX! fn::nat => 'A::type. fn 0 = e & (ALL n::nat. fn (Suc n) = f (fn n) n)"
    1.73    by (import hollight num_Axiom)
    1.74  
    1.75 -lemma ADD_CLAUSES: "(ALL x::nat. (0::nat) + x = x) &
    1.76 -(ALL x::nat. x + (0::nat) = x) &
    1.77 +lemma ADD_CLAUSES: "(ALL x::nat. 0 + x = x) &
    1.78 +(ALL x::nat. x + 0 = x) &
    1.79  (ALL (x::nat) xa::nat. Suc x + xa = Suc (x + xa)) &
    1.80  (ALL (x::nat) xa::nat. x + Suc xa = Suc (x + xa))"
    1.81    by (import hollight ADD_CLAUSES)
    1.82 @@ -259,25 +257,25 @@
    1.83  m + n + (p::nat) = m + (n + p) & m + (n + p) = n + (m + p)"
    1.84    by (import hollight ADD_AC)
    1.85  
    1.86 -lemma EQ_ADD_LCANCEL_0: "ALL (m::nat) n::nat. (m + n = m) = (n = (0::nat))"
    1.87 +lemma EQ_ADD_LCANCEL_0: "ALL (m::nat) n::nat. (m + n = m) = (n = 0)"
    1.88    by (import hollight EQ_ADD_LCANCEL_0)
    1.89  
    1.90 -lemma EQ_ADD_RCANCEL_0: "ALL (x::nat) xa::nat. (x + xa = xa) = (x = (0::nat))"
    1.91 +lemma EQ_ADD_RCANCEL_0: "ALL (x::nat) xa::nat. (x + xa = xa) = (x = 0)"
    1.92    by (import hollight EQ_ADD_RCANCEL_0)
    1.93  
    1.94 -lemma ONE: "NUMERAL_BIT1 (0::nat) = Suc (0::nat)"
    1.95 +lemma ONE: "NUMERAL_BIT1 0 = Suc 0"
    1.96    by (import hollight ONE)
    1.97  
    1.98 -lemma TWO: "NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) = Suc (NUMERAL_BIT1 (0::nat))"
    1.99 +lemma TWO: "NUMERAL_BIT0 (NUMERAL_BIT1 0) = Suc (NUMERAL_BIT1 0)"
   1.100    by (import hollight TWO)
   1.101  
   1.102 -lemma ADD1: "ALL x::nat. Suc x = x + NUMERAL_BIT1 (0::nat)"
   1.103 +lemma ADD1: "ALL x::nat. Suc x = x + NUMERAL_BIT1 0"
   1.104    by (import hollight ADD1)
   1.105  
   1.106 -lemma MULT_CLAUSES: "(ALL x::nat. (0::nat) * x = (0::nat)) &
   1.107 -(ALL x::nat. x * (0::nat) = (0::nat)) &
   1.108 -(ALL x::nat. NUMERAL_BIT1 (0::nat) * x = x) &
   1.109 -(ALL x::nat. x * NUMERAL_BIT1 (0::nat) = x) &
   1.110 +lemma MULT_CLAUSES: "(ALL x::nat. 0 * x = 0) &
   1.111 +(ALL x::nat. x * 0 = 0) &
   1.112 +(ALL x::nat. NUMERAL_BIT1 0 * x = x) &
   1.113 +(ALL x::nat. x * NUMERAL_BIT1 0 = x) &
   1.114  (ALL (x::nat) xa::nat. Suc x * xa = x * xa + xa) &
   1.115  (ALL (x::nat) xa::nat. x * Suc xa = x + x * xa)"
   1.116    by (import hollight MULT_CLAUSES)
   1.117 @@ -286,40 +284,39 @@
   1.118  m * n * (p::nat) = m * (n * p) & m * (n * p) = n * (m * p)"
   1.119    by (import hollight MULT_AC)
   1.120  
   1.121 -lemma MULT_2: "ALL n::nat. NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * n = n + n"
   1.122 +lemma MULT_2: "ALL n::nat. NUMERAL_BIT0 (NUMERAL_BIT1 0) * n = n + n"
   1.123    by (import hollight MULT_2)
   1.124  
   1.125  lemma MULT_EQ_1: "ALL (m::nat) n::nat.
   1.126 -   (m * n = NUMERAL_BIT1 (0::nat)) =
   1.127 -   (m = NUMERAL_BIT1 (0::nat) & n = NUMERAL_BIT1 (0::nat))"
   1.128 +   (m * n = NUMERAL_BIT1 0) = (m = NUMERAL_BIT1 0 & n = NUMERAL_BIT1 0)"
   1.129    by (import hollight MULT_EQ_1)
   1.130  
   1.131  constdefs
   1.132    EXP :: "nat => nat => nat" 
   1.133    "EXP ==
   1.134  SOME EXP::nat => nat => nat.
   1.135 -   (ALL m::nat. EXP m (0::nat) = NUMERAL_BIT1 (0::nat)) &
   1.136 +   (ALL m::nat. EXP m 0 = NUMERAL_BIT1 0) &
   1.137     (ALL (m::nat) n::nat. EXP m (Suc n) = m * EXP m n)"
   1.138  
   1.139  lemma DEF_EXP: "EXP =
   1.140  (SOME EXP::nat => nat => nat.
   1.141 -    (ALL m::nat. EXP m (0::nat) = NUMERAL_BIT1 (0::nat)) &
   1.142 +    (ALL m::nat. EXP m 0 = NUMERAL_BIT1 0) &
   1.143      (ALL (m::nat) n::nat. EXP m (Suc n) = m * EXP m n))"
   1.144    by (import hollight DEF_EXP)
   1.145  
   1.146 -lemma EXP_EQ_0: "ALL (m::nat) n::nat. (EXP m n = (0::nat)) = (m = (0::nat) & n ~= (0::nat))"
   1.147 +lemma EXP_EQ_0: "ALL (m::nat) n::nat. (EXP m n = 0) = (m = 0 & n ~= 0)"
   1.148    by (import hollight EXP_EQ_0)
   1.149  
   1.150  lemma EXP_ADD: "ALL (m::nat) (n::nat) p::nat. EXP m (n + p) = EXP m n * EXP m p"
   1.151    by (import hollight EXP_ADD)
   1.152  
   1.153 -lemma EXP_ONE: "ALL n::nat. EXP (NUMERAL_BIT1 (0::nat)) n = NUMERAL_BIT1 (0::nat)"
   1.154 +lemma EXP_ONE: "ALL n::nat. EXP (NUMERAL_BIT1 0) n = NUMERAL_BIT1 0"
   1.155    by (import hollight EXP_ONE)
   1.156  
   1.157 -lemma EXP_1: "ALL x::nat. EXP x (NUMERAL_BIT1 (0::nat)) = x"
   1.158 +lemma EXP_1: "ALL x::nat. EXP x (NUMERAL_BIT1 0) = x"
   1.159    by (import hollight EXP_1)
   1.160  
   1.161 -lemma EXP_2: "ALL x::nat. EXP x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = x * x"
   1.162 +lemma EXP_2: "ALL x::nat. EXP x (NUMERAL_BIT0 (NUMERAL_BIT1 0)) = x * x"
   1.163    by (import hollight EXP_2)
   1.164  
   1.165  lemma MULT_EXP: "ALL (p::nat) (m::nat) n::nat. EXP (m * n) p = EXP m p * EXP n p"
   1.166 @@ -334,12 +331,12 @@
   1.167  defs
   1.168    "<=_def": "<= ==
   1.169  SOME u::nat => nat => bool.
   1.170 -   (ALL m::nat. u m (0::nat) = (m = (0::nat))) &
   1.171 +   (ALL m::nat. u m 0 = (m = 0)) &
   1.172     (ALL (m::nat) n::nat. u m (Suc n) = (m = Suc n | u m n))"
   1.173  
   1.174  lemma DEF__lessthan__equal_: "<= =
   1.175  (SOME u::nat => nat => bool.
   1.176 -    (ALL m::nat. u m (0::nat) = (m = (0::nat))) &
   1.177 +    (ALL m::nat. u m 0 = (m = 0)) &
   1.178      (ALL (m::nat) n::nat. u m (Suc n) = (m = Suc n | u m n)))"
   1.179    by (import hollight DEF__lessthan__equal_)
   1.180  
   1.181 @@ -349,12 +346,12 @@
   1.182  defs
   1.183    "<_def": "< ==
   1.184  SOME u::nat => nat => bool.
   1.185 -   (ALL m::nat. u m (0::nat) = False) &
   1.186 +   (ALL m::nat. u m 0 = False) &
   1.187     (ALL (m::nat) n::nat. u m (Suc n) = (m = n | u m n))"
   1.188  
   1.189  lemma DEF__lessthan_: "< =
   1.190  (SOME u::nat => nat => bool.
   1.191 -    (ALL m::nat. u m (0::nat) = False) &
   1.192 +    (ALL m::nat. u m 0 = False) &
   1.193      (ALL (m::nat) n::nat. u m (Suc n) = (m = n | u m n)))"
   1.194    by (import hollight DEF__lessthan_)
   1.195  
   1.196 @@ -388,10 +385,10 @@
   1.197  lemma LT_SUC: "ALL (x::nat) xa::nat. < (Suc x) (Suc xa) = < x xa"
   1.198    by (import hollight LT_SUC)
   1.199  
   1.200 -lemma LE_0: "All (<= (0::nat))"
   1.201 +lemma LE_0: "All (<= 0)"
   1.202    by (import hollight LE_0)
   1.203  
   1.204 -lemma LT_0: "ALL x::nat. < (0::nat) (Suc x)"
   1.205 +lemma LT_0: "ALL x::nat. < 0 (Suc x)"
   1.206    by (import hollight LT_0)
   1.207  
   1.208  lemma LE_REFL: "ALL n::nat. <= n n"
   1.209 @@ -436,7 +433,7 @@
   1.210  lemma LTE_CASES: "ALL (x::nat) xa::nat. < x xa | <= xa x"
   1.211    by (import hollight LTE_CASES)
   1.212  
   1.213 -lemma LT_NZ: "ALL n::nat. < (0::nat) n = (n ~= (0::nat))"
   1.214 +lemma LT_NZ: "ALL n::nat. < 0 n = (n ~= 0)"
   1.215    by (import hollight LT_NZ)
   1.216  
   1.217  lemma LE_LT: "ALL (m::nat) n::nat. <= m n = (< m n | m = n)"
   1.218 @@ -469,10 +466,10 @@
   1.219  lemma LE_ADDR: "ALL (x::nat) xa::nat. <= xa (x + xa)"
   1.220    by (import hollight LE_ADDR)
   1.221  
   1.222 -lemma LT_ADD: "ALL (m::nat) n::nat. < m (m + n) = < (0::nat) n"
   1.223 +lemma LT_ADD: "ALL (m::nat) n::nat. < m (m + n) = < 0 n"
   1.224    by (import hollight LT_ADD)
   1.225  
   1.226 -lemma LT_ADDR: "ALL (x::nat) xa::nat. < xa (x + xa) = < (0::nat) x"
   1.227 +lemma LT_ADDR: "ALL (x::nat) xa::nat. < xa (x + xa) = < 0 x"
   1.228    by (import hollight LT_ADDR)
   1.229  
   1.230  lemma LE_ADD_LCANCEL: "ALL (x::nat) (xa::nat) xb::nat. <= (x + xa) (x + xb) = <= xa xb"
   1.231 @@ -501,28 +498,26 @@
   1.232  lemma LT_ADD2: "ALL (m::nat) (n::nat) (p::nat) q::nat. < m p & < n q --> < (m + n) (p + q)"
   1.233    by (import hollight LT_ADD2)
   1.234  
   1.235 -lemma LT_MULT: "ALL (m::nat) n::nat. < (0::nat) (m * n) = (< (0::nat) m & < (0::nat) n)"
   1.236 +lemma LT_MULT: "ALL (m::nat) n::nat. < 0 (m * n) = (< 0 m & < 0 n)"
   1.237    by (import hollight LT_MULT)
   1.238  
   1.239  lemma LE_MULT2: "ALL (m::nat) (n::nat) (p::nat) q::nat.
   1.240     <= m n & <= p q --> <= (m * p) (n * q)"
   1.241    by (import hollight LE_MULT2)
   1.242  
   1.243 -lemma LT_LMULT: "ALL (m::nat) (n::nat) p::nat. m ~= (0::nat) & < n p --> < (m * n) (m * p)"
   1.244 +lemma LT_LMULT: "ALL (m::nat) (n::nat) p::nat. m ~= 0 & < n p --> < (m * n) (m * p)"
   1.245    by (import hollight LT_LMULT)
   1.246  
   1.247 -lemma LE_MULT_LCANCEL: "ALL (m::nat) (n::nat) p::nat. <= (m * n) (m * p) = (m = (0::nat) | <= n p)"
   1.248 +lemma LE_MULT_LCANCEL: "ALL (m::nat) (n::nat) p::nat. <= (m * n) (m * p) = (m = 0 | <= n p)"
   1.249    by (import hollight LE_MULT_LCANCEL)
   1.250  
   1.251 -lemma LE_MULT_RCANCEL: "ALL (x::nat) (xa::nat) xb::nat.
   1.252 -   <= (x * xb) (xa * xb) = (<= x xa | xb = (0::nat))"
   1.253 +lemma LE_MULT_RCANCEL: "ALL (x::nat) (xa::nat) xb::nat. <= (x * xb) (xa * xb) = (<= x xa | xb = 0)"
   1.254    by (import hollight LE_MULT_RCANCEL)
   1.255  
   1.256 -lemma LT_MULT_LCANCEL: "ALL (m::nat) (n::nat) p::nat. < (m * n) (m * p) = (m ~= (0::nat) & < n p)"
   1.257 +lemma LT_MULT_LCANCEL: "ALL (m::nat) (n::nat) p::nat. < (m * n) (m * p) = (m ~= 0 & < n p)"
   1.258    by (import hollight LT_MULT_LCANCEL)
   1.259  
   1.260 -lemma LT_MULT_RCANCEL: "ALL (x::nat) (xa::nat) xb::nat.
   1.261 -   < (x * xb) (xa * xb) = (< x xa & xb ~= (0::nat))"
   1.262 +lemma LT_MULT_RCANCEL: "ALL (x::nat) (xa::nat) xb::nat. < (x * xb) (xa * xb) = (< x xa & xb ~= 0)"
   1.263    by (import hollight LT_MULT_RCANCEL)
   1.264  
   1.265  lemma LT_MULT2: "ALL (m::nat) (n::nat) (p::nat) q::nat. < m n & < p q --> < (m * p) (n * q)"
   1.266 @@ -558,22 +553,21 @@
   1.267    EVEN :: "nat => bool" 
   1.268    "EVEN ==
   1.269  SOME EVEN::nat => bool.
   1.270 -   EVEN (0::nat) = True & (ALL n::nat. EVEN (Suc n) = (~ EVEN n))"
   1.271 +   EVEN 0 = True & (ALL n::nat. EVEN (Suc n) = (~ EVEN n))"
   1.272  
   1.273  lemma DEF_EVEN: "EVEN =
   1.274  (SOME EVEN::nat => bool.
   1.275 -    EVEN (0::nat) = True & (ALL n::nat. EVEN (Suc n) = (~ EVEN n)))"
   1.276 +    EVEN 0 = True & (ALL n::nat. EVEN (Suc n) = (~ EVEN n)))"
   1.277    by (import hollight DEF_EVEN)
   1.278  
   1.279  constdefs
   1.280    ODD :: "nat => bool" 
   1.281    "ODD ==
   1.282 -SOME ODD::nat => bool.
   1.283 -   ODD (0::nat) = False & (ALL n::nat. ODD (Suc n) = (~ ODD n))"
   1.284 +SOME ODD::nat => bool. ODD 0 = False & (ALL n::nat. ODD (Suc n) = (~ ODD n))"
   1.285  
   1.286  lemma DEF_ODD: "ODD =
   1.287  (SOME ODD::nat => bool.
   1.288 -    ODD (0::nat) = False & (ALL n::nat. ODD (Suc n) = (~ ODD n)))"
   1.289 +    ODD 0 = False & (ALL n::nat. ODD (Suc n) = (~ ODD n)))"
   1.290    by (import hollight DEF_ODD)
   1.291  
   1.292  lemma NOT_EVEN: "ALL n::nat. (~ EVEN n) = ODD n"
   1.293 @@ -594,7 +588,7 @@
   1.294  lemma EVEN_MULT: "ALL (m::nat) n::nat. EVEN (m * n) = (EVEN m | EVEN n)"
   1.295    by (import hollight EVEN_MULT)
   1.296  
   1.297 -lemma EVEN_EXP: "ALL (m::nat) n::nat. EVEN (EXP m n) = (EVEN m & n ~= (0::nat))"
   1.298 +lemma EVEN_EXP: "ALL (m::nat) n::nat. EVEN (EXP m n) = (EVEN m & n ~= 0)"
   1.299    by (import hollight EVEN_EXP)
   1.300  
   1.301  lemma ODD_ADD: "ALL (m::nat) n::nat. ODD (m + n) = (ODD m ~= ODD n)"
   1.302 @@ -603,83 +597,76 @@
   1.303  lemma ODD_MULT: "ALL (m::nat) n::nat. ODD (m * n) = (ODD m & ODD n)"
   1.304    by (import hollight ODD_MULT)
   1.305  
   1.306 -lemma ODD_EXP: "ALL (m::nat) n::nat. ODD (EXP m n) = (ODD m | n = (0::nat))"
   1.307 +lemma ODD_EXP: "ALL (m::nat) n::nat. ODD (EXP m n) = (ODD m | n = 0)"
   1.308    by (import hollight ODD_EXP)
   1.309  
   1.310 -lemma EVEN_DOUBLE: "ALL n::nat. EVEN (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * n)"
   1.311 +lemma EVEN_DOUBLE: "ALL n::nat. EVEN (NUMERAL_BIT0 (NUMERAL_BIT1 0) * n)"
   1.312    by (import hollight EVEN_DOUBLE)
   1.313  
   1.314 -lemma ODD_DOUBLE: "ALL x::nat. ODD (Suc (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * x))"
   1.315 +lemma ODD_DOUBLE: "ALL x::nat. ODD (Suc (NUMERAL_BIT0 (NUMERAL_BIT1 0) * x))"
   1.316    by (import hollight ODD_DOUBLE)
   1.317  
   1.318  lemma EVEN_EXISTS_LEMMA: "ALL n::nat.
   1.319 -   (EVEN n --> (EX m::nat. n = NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * m)) &
   1.320 -   (~ EVEN n -->
   1.321 -    (EX m::nat. n = Suc (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * m)))"
   1.322 +   (EVEN n --> (EX m::nat. n = NUMERAL_BIT0 (NUMERAL_BIT1 0) * m)) &
   1.323 +   (~ EVEN n --> (EX m::nat. n = Suc (NUMERAL_BIT0 (NUMERAL_BIT1 0) * m)))"
   1.324    by (import hollight EVEN_EXISTS_LEMMA)
   1.325  
   1.326 -lemma EVEN_EXISTS: "ALL n::nat.
   1.327 -   EVEN n = (EX m::nat. n = NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * m)"
   1.328 +lemma EVEN_EXISTS: "ALL n::nat. EVEN n = (EX m::nat. n = NUMERAL_BIT0 (NUMERAL_BIT1 0) * m)"
   1.329    by (import hollight EVEN_EXISTS)
   1.330  
   1.331 -lemma ODD_EXISTS: "ALL n::nat.
   1.332 -   ODD n = (EX m::nat. n = Suc (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * m))"
   1.333 +lemma ODD_EXISTS: "ALL n::nat. ODD n = (EX m::nat. n = Suc (NUMERAL_BIT0 (NUMERAL_BIT1 0) * m))"
   1.334    by (import hollight ODD_EXISTS)
   1.335  
   1.336  lemma EVEN_ODD_DECOMPOSITION: "ALL n::nat.
   1.337     (EX (k::nat) m::nat.
   1.338 -       ODD m & n = EXP (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) k * m) =
   1.339 -   (n ~= (0::nat))"
   1.340 +       ODD m & n = EXP (NUMERAL_BIT0 (NUMERAL_BIT1 0)) k * m) =
   1.341 +   (n ~= 0)"
   1.342    by (import hollight EVEN_ODD_DECOMPOSITION)
   1.343  
   1.344 -lemma SUB_0: "ALL x::nat. (0::nat) - x = (0::nat) & x - (0::nat) = x"
   1.345 +lemma SUB_0: "ALL x::nat. 0 - x = 0 & x - 0 = x"
   1.346    by (import hollight SUB_0)
   1.347  
   1.348  lemma SUB_PRESUC: "ALL (m::nat) n::nat. Pred (Suc m - n) = m - n"
   1.349    by (import hollight SUB_PRESUC)
   1.350  
   1.351 -lemma SUB_EQ_0: "ALL (m::nat) n::nat. (m - n = (0::nat)) = <= m n"
   1.352 +lemma SUB_EQ_0: "ALL (m::nat) n::nat. (m - n = 0) = <= m n"
   1.353    by (import hollight SUB_EQ_0)
   1.354  
   1.355 -lemma ADD_SUBR: "ALL (x::nat) xa::nat. xa - (x + xa) = (0::nat)"
   1.356 +lemma ADD_SUBR: "ALL (x::nat) xa::nat. xa - (x + xa) = 0"
   1.357    by (import hollight ADD_SUBR)
   1.358  
   1.359  lemma SUB_ADD: "ALL (x::nat) xa::nat. <= xa x --> x - xa + xa = x"
   1.360    by (import hollight SUB_ADD)
   1.361  
   1.362 -lemma SUC_SUB1: "ALL x::nat. Suc x - NUMERAL_BIT1 (0::nat) = x"
   1.363 +lemma SUC_SUB1: "ALL x::nat. Suc x - NUMERAL_BIT1 0 = x"
   1.364    by (import hollight SUC_SUB1)
   1.365  
   1.366  constdefs
   1.367    FACT :: "nat => nat" 
   1.368    "FACT ==
   1.369  SOME FACT::nat => nat.
   1.370 -   FACT (0::nat) = NUMERAL_BIT1 (0::nat) &
   1.371 -   (ALL n::nat. FACT (Suc n) = Suc n * FACT n)"
   1.372 +   FACT 0 = NUMERAL_BIT1 0 & (ALL n::nat. FACT (Suc n) = Suc n * FACT n)"
   1.373  
   1.374  lemma DEF_FACT: "FACT =
   1.375  (SOME FACT::nat => nat.
   1.376 -    FACT (0::nat) = NUMERAL_BIT1 (0::nat) &
   1.377 -    (ALL n::nat. FACT (Suc n) = Suc n * FACT n))"
   1.378 +    FACT 0 = NUMERAL_BIT1 0 & (ALL n::nat. FACT (Suc n) = Suc n * FACT n))"
   1.379    by (import hollight DEF_FACT)
   1.380  
   1.381 -lemma FACT_LT: "ALL n::nat. < (0::nat) (FACT n)"
   1.382 +lemma FACT_LT: "ALL n::nat. < 0 (FACT n)"
   1.383    by (import hollight FACT_LT)
   1.384  
   1.385 -lemma FACT_LE: "ALL x::nat. <= (NUMERAL_BIT1 (0::nat)) (FACT x)"
   1.386 +lemma FACT_LE: "ALL x::nat. <= (NUMERAL_BIT1 0) (FACT x)"
   1.387    by (import hollight FACT_LE)
   1.388  
   1.389  lemma FACT_MONO: "ALL (m::nat) n::nat. <= m n --> <= (FACT m) (FACT n)"
   1.390    by (import hollight FACT_MONO)
   1.391  
   1.392 -lemma DIVMOD_EXIST: "ALL (m::nat) n::nat.
   1.393 -   n ~= (0::nat) --> (EX (q::nat) r::nat. m = q * n + r & < r n)"
   1.394 +lemma DIVMOD_EXIST: "ALL (m::nat) n::nat. n ~= 0 --> (EX (q::nat) r::nat. m = q * n + r & < r n)"
   1.395    by (import hollight DIVMOD_EXIST)
   1.396  
   1.397  lemma DIVMOD_EXIST_0: "ALL (m::nat) n::nat.
   1.398     EX (x::nat) xa::nat.
   1.399 -      COND (n = (0::nat)) (x = (0::nat) & xa = (0::nat))
   1.400 -       (m = x * n + xa & < xa n)"
   1.401 +      COND (n = 0) (x = 0 & xa = 0) (m = x * n + xa & < xa n)"
   1.402    by (import hollight DIVMOD_EXIST_0)
   1.403  
   1.404  constdefs
   1.405 @@ -688,14 +675,14 @@
   1.406  SOME q::nat => nat => nat.
   1.407     EX r::nat => nat => nat.
   1.408        ALL (m::nat) n::nat.
   1.409 -         COND (n = (0::nat)) (q m n = (0::nat) & r m n = (0::nat))
   1.410 +         COND (n = 0) (q m n = 0 & r m n = 0)
   1.411            (m = q m n * n + r m n & < (r m n) n)"
   1.412  
   1.413  lemma DEF_DIV: "DIV =
   1.414  (SOME q::nat => nat => nat.
   1.415      EX r::nat => nat => nat.
   1.416         ALL (m::nat) n::nat.
   1.417 -          COND (n = (0::nat)) (q m n = (0::nat) & r m n = (0::nat))
   1.418 +          COND (n = 0) (q m n = 0 & r m n = 0)
   1.419             (m = q m n * n + r m n & < (r m n) n))"
   1.420    by (import hollight DEF_DIV)
   1.421  
   1.422 @@ -704,18 +691,17 @@
   1.423    "MOD ==
   1.424  SOME r::nat => nat => nat.
   1.425     ALL (m::nat) n::nat.
   1.426 -      COND (n = (0::nat)) (DIV m n = (0::nat) & r m n = (0::nat))
   1.427 +      COND (n = 0) (DIV m n = 0 & r m n = 0)
   1.428         (m = DIV m n * n + r m n & < (r m n) n)"
   1.429  
   1.430  lemma DEF_MOD: "MOD =
   1.431  (SOME r::nat => nat => nat.
   1.432      ALL (m::nat) n::nat.
   1.433 -       COND (n = (0::nat)) (DIV m n = (0::nat) & r m n = (0::nat))
   1.434 +       COND (n = 0) (DIV m n = 0 & r m n = 0)
   1.435          (m = DIV m n * n + r m n & < (r m n) n))"
   1.436    by (import hollight DEF_MOD)
   1.437  
   1.438 -lemma DIVISION: "ALL (m::nat) n::nat.
   1.439 -   n ~= (0::nat) --> m = DIV m n * n + MOD m n & < (MOD m n) n"
   1.440 +lemma DIVISION: "ALL (m::nat) n::nat. n ~= 0 --> m = DIV m n * n + MOD m n & < (MOD m n) n"
   1.441    by (import hollight DIVISION)
   1.442  
   1.443  lemma DIVMOD_UNIQ_LEMMA: "ALL (m::nat) (n::nat) (q1::nat) (r1::nat) (q2::nat) r2::nat.
   1.444 @@ -733,14 +719,13 @@
   1.445  lemma DIV_UNIQ: "ALL (m::nat) (n::nat) (q::nat) r::nat. m = q * n + r & < r n --> DIV m n = q"
   1.446    by (import hollight DIV_UNIQ)
   1.447  
   1.448 -lemma MOD_MULT: "ALL (x::nat) xa::nat. x ~= (0::nat) --> MOD (x * xa) x = (0::nat)"
   1.449 +lemma MOD_MULT: "ALL (x::nat) xa::nat. x ~= 0 --> MOD (x * xa) x = 0"
   1.450    by (import hollight MOD_MULT)
   1.451  
   1.452 -lemma DIV_MULT: "ALL (x::nat) xa::nat. x ~= (0::nat) --> DIV (x * xa) x = xa"
   1.453 +lemma DIV_MULT: "ALL (x::nat) xa::nat. x ~= 0 --> DIV (x * xa) x = xa"
   1.454    by (import hollight DIV_MULT)
   1.455  
   1.456 -lemma DIV_DIV: "ALL (m::nat) (n::nat) p::nat.
   1.457 -   n * p ~= (0::nat) --> DIV (DIV m n) p = DIV m (n * p)"
   1.458 +lemma DIV_DIV: "ALL (m::nat) (n::nat) p::nat. n * p ~= 0 --> DIV (DIV m n) p = DIV m (n * p)"
   1.459    by (import hollight DIV_DIV)
   1.460  
   1.461  lemma MOD_LT: "ALL (m::nat) n::nat. < m n --> MOD m n = m"
   1.462 @@ -750,166 +735,150 @@
   1.463    by (import hollight MOD_EQ)
   1.464  
   1.465  lemma DIV_MOD: "ALL (m::nat) (n::nat) p::nat.
   1.466 -   n * p ~= (0::nat) --> MOD (DIV m n) p = DIV (MOD m (n * p)) n"
   1.467 +   n * p ~= 0 --> MOD (DIV m n) p = DIV (MOD m (n * p)) n"
   1.468    by (import hollight DIV_MOD)
   1.469  
   1.470 -lemma DIV_1: "ALL n::nat. DIV n (NUMERAL_BIT1 (0::nat)) = n"
   1.471 +lemma DIV_1: "ALL n::nat. DIV n (NUMERAL_BIT1 0) = n"
   1.472    by (import hollight DIV_1)
   1.473  
   1.474 -lemma EXP_LT_0: "ALL (x::nat) xa::nat.
   1.475 -   < (0::nat) (EXP xa x) = (xa ~= (0::nat) | x = (0::nat))"
   1.476 +lemma EXP_LT_0: "ALL (x::nat) xa::nat. < 0 (EXP xa x) = (xa ~= 0 | x = 0)"
   1.477    by (import hollight EXP_LT_0)
   1.478  
   1.479 -lemma DIV_LE: "ALL (m::nat) n::nat. n ~= (0::nat) --> <= (DIV m n) m"
   1.480 +lemma DIV_LE: "ALL (m::nat) n::nat. n ~= 0 --> <= (DIV m n) m"
   1.481    by (import hollight DIV_LE)
   1.482  
   1.483  lemma DIV_MUL_LE: "ALL (m::nat) n::nat. <= (n * DIV m n) m"
   1.484    by (import hollight DIV_MUL_LE)
   1.485  
   1.486 -lemma DIV_0: "ALL n::nat. n ~= (0::nat) --> DIV (0::nat) n = (0::nat)"
   1.487 +lemma DIV_0: "ALL n::nat. n ~= 0 --> DIV 0 n = 0"
   1.488    by (import hollight DIV_0)
   1.489  
   1.490 -lemma MOD_0: "ALL n::nat. n ~= (0::nat) --> MOD (0::nat) n = (0::nat)"
   1.491 +lemma MOD_0: "ALL n::nat. n ~= 0 --> MOD 0 n = 0"
   1.492    by (import hollight MOD_0)
   1.493  
   1.494 -lemma DIV_LT: "ALL (m::nat) n::nat. < m n --> DIV m n = (0::nat)"
   1.495 +lemma DIV_LT: "ALL (m::nat) n::nat. < m n --> DIV m n = 0"
   1.496    by (import hollight DIV_LT)
   1.497  
   1.498 -lemma MOD_MOD: "ALL (m::nat) (n::nat) p::nat.
   1.499 -   n * p ~= (0::nat) --> MOD (MOD m (n * p)) n = MOD m n"
   1.500 +lemma MOD_MOD: "ALL (m::nat) (n::nat) p::nat. n * p ~= 0 --> MOD (MOD m (n * p)) n = MOD m n"
   1.501    by (import hollight MOD_MOD)
   1.502  
   1.503 -lemma MOD_MOD_REFL: "ALL (m::nat) n::nat. n ~= (0::nat) --> MOD (MOD m n) n = MOD m n"
   1.504 +lemma MOD_MOD_REFL: "ALL (m::nat) n::nat. n ~= 0 --> MOD (MOD m n) n = MOD m n"
   1.505    by (import hollight MOD_MOD_REFL)
   1.506  
   1.507  lemma DIV_MULT2: "ALL (x::nat) (xa::nat) xb::nat.
   1.508 -   x * xb ~= (0::nat) --> DIV (x * xa) (x * xb) = DIV xa xb"
   1.509 +   x * xb ~= 0 --> DIV (x * xa) (x * xb) = DIV xa xb"
   1.510    by (import hollight DIV_MULT2)
   1.511  
   1.512  lemma MOD_MULT2: "ALL (x::nat) (xa::nat) xb::nat.
   1.513 -   x * xb ~= (0::nat) --> MOD (x * xa) (x * xb) = x * MOD xa xb"
   1.514 +   x * xb ~= 0 --> MOD (x * xa) (x * xb) = x * MOD xa xb"
   1.515    by (import hollight MOD_MULT2)
   1.516  
   1.517 -lemma MOD_1: "ALL n::nat. MOD n (NUMERAL_BIT1 (0::nat)) = (0::nat)"
   1.518 +lemma MOD_1: "ALL n::nat. MOD n (NUMERAL_BIT1 0) = 0"
   1.519    by (import hollight MOD_1)
   1.520  
   1.521  lemma MOD_EXISTS: "ALL (m::nat) n::nat.
   1.522 -   (EX q::nat. m = n * q) =
   1.523 -   COND (n = (0::nat)) (m = (0::nat)) (MOD m n = (0::nat))"
   1.524 +   (EX q::nat. m = n * q) = COND (n = 0) (m = 0) (MOD m n = 0)"
   1.525    by (import hollight MOD_EXISTS)
   1.526  
   1.527  lemma LT_EXP: "ALL (x::nat) (m::nat) n::nat.
   1.528     < (EXP x m) (EXP x n) =
   1.529 -   (<= (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) x & < m n |
   1.530 -    x = (0::nat) & m ~= (0::nat) & n = (0::nat))"
   1.531 +   (<= (NUMERAL_BIT0 (NUMERAL_BIT1 0)) x & < m n | x = 0 & m ~= 0 & n = 0)"
   1.532    by (import hollight LT_EXP)
   1.533  
   1.534  lemma LE_EXP: "ALL (x::nat) (m::nat) n::nat.
   1.535     <= (EXP x m) (EXP x n) =
   1.536 -   COND (x = (0::nat)) (m = (0::nat) --> n = (0::nat))
   1.537 -    (x = NUMERAL_BIT1 (0::nat) | <= m n)"
   1.538 +   COND (x = 0) (m = 0 --> n = 0) (x = NUMERAL_BIT1 0 | <= m n)"
   1.539    by (import hollight LE_EXP)
   1.540  
   1.541 -lemma DIV_MONO: "ALL (m::nat) (n::nat) p::nat.
   1.542 -   p ~= (0::nat) & <= m n --> <= (DIV m p) (DIV n p)"
   1.543 +lemma DIV_MONO: "ALL (m::nat) (n::nat) p::nat. p ~= 0 & <= m n --> <= (DIV m p) (DIV n p)"
   1.544    by (import hollight DIV_MONO)
   1.545  
   1.546  lemma DIV_MONO_LT: "ALL (m::nat) (n::nat) p::nat.
   1.547 -   p ~= (0::nat) & <= (m + p) n --> < (DIV m p) (DIV n p)"
   1.548 +   p ~= 0 & <= (m + p) n --> < (DIV m p) (DIV n p)"
   1.549    by (import hollight DIV_MONO_LT)
   1.550  
   1.551 -lemma LE_LDIV: "ALL (a::nat) (b::nat) n::nat.
   1.552 -   a ~= (0::nat) & <= b (a * n) --> <= (DIV b a) n"
   1.553 +lemma LE_LDIV: "ALL (a::nat) (b::nat) n::nat. a ~= 0 & <= b (a * n) --> <= (DIV b a) n"
   1.554    by (import hollight LE_LDIV)
   1.555  
   1.556 -lemma LE_RDIV_EQ: "ALL (a::nat) (b::nat) n::nat.
   1.557 -   a ~= (0::nat) --> <= n (DIV b a) = <= (a * n) b"
   1.558 +lemma LE_RDIV_EQ: "ALL (a::nat) (b::nat) n::nat. a ~= 0 --> <= n (DIV b a) = <= (a * n) b"
   1.559    by (import hollight LE_RDIV_EQ)
   1.560  
   1.561  lemma LE_LDIV_EQ: "ALL (a::nat) (b::nat) n::nat.
   1.562 -   a ~= (0::nat) --> <= (DIV b a) n = < b (a * (n + NUMERAL_BIT1 (0::nat)))"
   1.563 +   a ~= 0 --> <= (DIV b a) n = < b (a * (n + NUMERAL_BIT1 0))"
   1.564    by (import hollight LE_LDIV_EQ)
   1.565  
   1.566 -lemma DIV_EQ_0: "ALL (m::nat) n::nat. n ~= (0::nat) --> (DIV m n = (0::nat)) = < m n"
   1.567 +lemma DIV_EQ_0: "ALL (m::nat) n::nat. n ~= 0 --> (DIV m n = 0) = < m n"
   1.568    by (import hollight DIV_EQ_0)
   1.569  
   1.570 -lemma MOD_EQ_0: "ALL (m::nat) n::nat.
   1.571 -   n ~= (0::nat) --> (MOD m n = (0::nat)) = (EX q::nat. m = q * n)"
   1.572 +lemma MOD_EQ_0: "ALL (m::nat) n::nat. n ~= 0 --> (MOD m n = 0) = (EX q::nat. m = q * n)"
   1.573    by (import hollight MOD_EQ_0)
   1.574  
   1.575 -lemma EVEN_MOD: "ALL n::nat.
   1.576 -   EVEN n = (MOD n (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = (0::nat))"
   1.577 +lemma EVEN_MOD: "ALL n::nat. EVEN n = (MOD n (NUMERAL_BIT0 (NUMERAL_BIT1 0)) = 0)"
   1.578    by (import hollight EVEN_MOD)
   1.579  
   1.580 -lemma ODD_MOD: "ALL n::nat.
   1.581 -   ODD n =
   1.582 -   (MOD n (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = NUMERAL_BIT1 (0::nat))"
   1.583 +lemma ODD_MOD: "ALL n::nat. ODD n = (MOD n (NUMERAL_BIT0 (NUMERAL_BIT1 0)) = NUMERAL_BIT1 0)"
   1.584    by (import hollight ODD_MOD)
   1.585  
   1.586 -lemma MOD_MULT_RMOD: "ALL (m::nat) (n::nat) p::nat.
   1.587 -   n ~= (0::nat) --> MOD (m * MOD p n) n = MOD (m * p) n"
   1.588 +lemma MOD_MULT_RMOD: "ALL (m::nat) (n::nat) p::nat. n ~= 0 --> MOD (m * MOD p n) n = MOD (m * p) n"
   1.589    by (import hollight MOD_MULT_RMOD)
   1.590  
   1.591  lemma MOD_MULT_LMOD: "ALL (x::nat) (xa::nat) xb::nat.
   1.592 -   xa ~= (0::nat) --> MOD (MOD x xa * xb) xa = MOD (x * xb) xa"
   1.593 +   xa ~= 0 --> MOD (MOD x xa * xb) xa = MOD (x * xb) xa"
   1.594    by (import hollight MOD_MULT_LMOD)
   1.595  
   1.596  lemma MOD_MULT_MOD2: "ALL (x::nat) (xa::nat) xb::nat.
   1.597 -   xa ~= (0::nat) --> MOD (MOD x xa * MOD xb xa) xa = MOD (x * xb) xa"
   1.598 +   xa ~= 0 --> MOD (MOD x xa * MOD xb xa) xa = MOD (x * xb) xa"
   1.599    by (import hollight MOD_MULT_MOD2)
   1.600  
   1.601  lemma MOD_EXP_MOD: "ALL (m::nat) (n::nat) p::nat.
   1.602 -   n ~= (0::nat) --> MOD (EXP (MOD m n) p) n = MOD (EXP m p) n"
   1.603 +   n ~= 0 --> MOD (EXP (MOD m n) p) n = MOD (EXP m p) n"
   1.604    by (import hollight MOD_EXP_MOD)
   1.605  
   1.606  lemma MOD_MULT_ADD: "ALL (m::nat) (n::nat) p::nat. MOD (m * n + p) n = MOD p n"
   1.607    by (import hollight MOD_MULT_ADD)
   1.608  
   1.609  lemma MOD_ADD_MOD: "ALL (a::nat) (b::nat) n::nat.
   1.610 -   n ~= (0::nat) --> MOD (MOD a n + MOD b n) n = MOD (a + b) n"
   1.611 +   n ~= 0 --> MOD (MOD a n + MOD b n) n = MOD (a + b) n"
   1.612    by (import hollight MOD_ADD_MOD)
   1.613  
   1.614  lemma DIV_ADD_MOD: "ALL (a::nat) (b::nat) n::nat.
   1.615 -   n ~= (0::nat) -->
   1.616 +   n ~= 0 -->
   1.617     (MOD (a + b) n = MOD a n + MOD b n) = (DIV (a + b) n = DIV a n + DIV b n)"
   1.618    by (import hollight DIV_ADD_MOD)
   1.619  
   1.620 -lemma DIV_REFL: "ALL n::nat. n ~= (0::nat) --> DIV n n = NUMERAL_BIT1 (0::nat)"
   1.621 +lemma DIV_REFL: "ALL n::nat. n ~= 0 --> DIV n n = NUMERAL_BIT1 0"
   1.622    by (import hollight DIV_REFL)
   1.623  
   1.624 -lemma MOD_LE: "ALL (m::nat) n::nat. n ~= (0::nat) --> <= (MOD m n) m"
   1.625 +lemma MOD_LE: "ALL (m::nat) n::nat. n ~= 0 --> <= (MOD m n) m"
   1.626    by (import hollight MOD_LE)
   1.627  
   1.628 -lemma DIV_MONO2: "ALL (m::nat) (n::nat) p::nat.
   1.629 -   p ~= (0::nat) & <= p m --> <= (DIV n m) (DIV n p)"
   1.630 +lemma DIV_MONO2: "ALL (m::nat) (n::nat) p::nat. p ~= 0 & <= p m --> <= (DIV n m) (DIV n p)"
   1.631    by (import hollight DIV_MONO2)
   1.632  
   1.633  lemma DIV_LE_EXCLUSION: "ALL (a::nat) (b::nat) (c::nat) d::nat.
   1.634 -   b ~= (0::nat) & < (b * c) ((a + NUMERAL_BIT1 (0::nat)) * d) -->
   1.635 -   <= (DIV c d) (DIV a b)"
   1.636 +   b ~= 0 & < (b * c) ((a + NUMERAL_BIT1 0) * d) --> <= (DIV c d) (DIV a b)"
   1.637    by (import hollight DIV_LE_EXCLUSION)
   1.638  
   1.639 -lemma DIV_EQ_EXCLUSION: "< ((b::nat) * (c::nat)) (((a::nat) + NUMERAL_BIT1 (0::nat)) * (d::nat)) &
   1.640 -< (a * d) ((c + NUMERAL_BIT1 (0::nat)) * b) -->
   1.641 +lemma DIV_EQ_EXCLUSION: "< ((b::nat) * (c::nat)) (((a::nat) + NUMERAL_BIT1 0) * (d::nat)) &
   1.642 +< (a * d) ((c + NUMERAL_BIT1 0) * b) -->
   1.643  DIV a b = DIV c d"
   1.644    by (import hollight DIV_EQ_EXCLUSION)
   1.645  
   1.646  lemma SUB_ELIM_THM: "(P::nat => bool) ((a::nat) - (b::nat)) =
   1.647 -(ALL x::nat. (b = a + x --> P (0::nat)) & (a = b + x --> P x))"
   1.648 +(ALL x::nat. (b = a + x --> P 0) & (a = b + x --> P x))"
   1.649    by (import hollight SUB_ELIM_THM)
   1.650  
   1.651  lemma PRE_ELIM_THM: "(P::nat => bool) (Pred (n::nat)) =
   1.652 -(ALL m::nat. (n = (0::nat) --> P (0::nat)) & (n = Suc m --> P m))"
   1.653 +(ALL m::nat. (n = 0 --> P 0) & (n = Suc m --> P m))"
   1.654    by (import hollight PRE_ELIM_THM)
   1.655  
   1.656  lemma DIVMOD_ELIM_THM: "(P::nat => nat => bool) (DIV (m::nat) (n::nat)) (MOD m n) =
   1.657 -(n = (0::nat) & P (0::nat) (0::nat) |
   1.658 - n ~= (0::nat) & (ALL (q::nat) r::nat. m = q * n + r & < r n --> P q r))"
   1.659 +(n = 0 & P 0 0 |
   1.660 + n ~= 0 & (ALL (q::nat) r::nat. m = q * n + r & < r n --> P q r))"
   1.661    by (import hollight DIVMOD_ELIM_THM)
   1.662  
   1.663  constdefs
   1.664 -  eqeq :: "'q_9910::type
   1.665 -=> 'q_9909::type => ('q_9910::type => 'q_9909::type => bool) => bool" 
   1.666 +  eqeq :: "'q_9910 => 'q_9909 => ('q_9910 => 'q_9909 => bool) => bool" 
   1.667    "eqeq ==
   1.668  %(u::'q_9910::type) (ua::'q_9909::type)
   1.669     ub::'q_9910::type => 'q_9909::type => bool. ub u ua"
   1.670 @@ -942,7 +911,7 @@
   1.671    by (import hollight MINIMAL)
   1.672  
   1.673  constdefs
   1.674 -  WF :: "('A::type => 'A::type => bool) => bool" 
   1.675 +  WF :: "('A => 'A => bool) => bool" 
   1.676    "WF ==
   1.677  %u::'A::type => 'A::type => bool.
   1.678     ALL P::'A::type => bool.
   1.679 @@ -1081,7 +1050,7 @@
   1.680    by (import hollight WF_REC_num)
   1.681  
   1.682  consts
   1.683 -  measure :: "('q_11107::type => nat) => 'q_11107::type => 'q_11107::type => bool" 
   1.684 +  measure :: "('q_11107 => nat) => 'q_11107 => 'q_11107 => bool" 
   1.685  
   1.686  defs
   1.687    measure_def: "hollight.measure ==
   1.688 @@ -1128,73 +1097,216 @@
   1.689         ALL x::'A::type. f x = COND (P f x) (f (G f x)) (H f x))"
   1.690    by (import hollight WF_REC_TAIL_GENERAL)
   1.691  
   1.692 -lemma ARITH_ZERO: "(0::nat) = (0::nat) & NUMERAL_BIT0 (0::nat) = (0::nat)"
   1.693 +lemma ARITH_ZERO: "(op &::bool => bool => bool) ((op =::nat => nat => bool) (0::nat) (0::nat))
   1.694 + ((op =::nat => nat => bool) ((NUMERAL_BIT0::nat => nat) (0::nat)) (0::nat))"
   1.695    by (import hollight ARITH_ZERO)
   1.696  
   1.697  lemma ARITH_SUC: "(ALL x::nat. Suc x = Suc x) &
   1.698 -Suc (0::nat) = NUMERAL_BIT1 (0::nat) &
   1.699 +Suc 0 = NUMERAL_BIT1 0 &
   1.700  (ALL x::nat. Suc (NUMERAL_BIT0 x) = NUMERAL_BIT1 x) &
   1.701  (ALL x::nat. Suc (NUMERAL_BIT1 x) = NUMERAL_BIT0 (Suc x))"
   1.702    by (import hollight ARITH_SUC)
   1.703  
   1.704  lemma ARITH_PRE: "(ALL x::nat. Pred x = Pred x) &
   1.705 -Pred (0::nat) = (0::nat) &
   1.706 +Pred 0 = 0 &
   1.707  (ALL x::nat.
   1.708 -    Pred (NUMERAL_BIT0 x) =
   1.709 -    COND (x = (0::nat)) (0::nat) (NUMERAL_BIT1 (Pred x))) &
   1.710 +    Pred (NUMERAL_BIT0 x) = COND (x = 0) 0 (NUMERAL_BIT1 (Pred x))) &
   1.711  (ALL x::nat. Pred (NUMERAL_BIT1 x) = NUMERAL_BIT0 x)"
   1.712    by (import hollight ARITH_PRE)
   1.713  
   1.714 -lemma ARITH_ADD: "(ALL (x::nat) xa::nat. x + xa = x + xa) &
   1.715 -(0::nat) + (0::nat) = (0::nat) &
   1.716 -(ALL x::nat. (0::nat) + NUMERAL_BIT0 x = NUMERAL_BIT0 x) &
   1.717 -(ALL x::nat. (0::nat) + NUMERAL_BIT1 x = NUMERAL_BIT1 x) &
   1.718 -(ALL x::nat. NUMERAL_BIT0 x + (0::nat) = NUMERAL_BIT0 x) &
   1.719 -(ALL x::nat. NUMERAL_BIT1 x + (0::nat) = NUMERAL_BIT1 x) &
   1.720 -(ALL (x::nat) xa::nat.
   1.721 -    NUMERAL_BIT0 x + NUMERAL_BIT0 xa = NUMERAL_BIT0 (x + xa)) &
   1.722 -(ALL (x::nat) xa::nat.
   1.723 -    NUMERAL_BIT0 x + NUMERAL_BIT1 xa = NUMERAL_BIT1 (x + xa)) &
   1.724 -(ALL (x::nat) xa::nat.
   1.725 -    NUMERAL_BIT1 x + NUMERAL_BIT0 xa = NUMERAL_BIT1 (x + xa)) &
   1.726 -(ALL (x::nat) xa::nat.
   1.727 -    NUMERAL_BIT1 x + NUMERAL_BIT1 xa = NUMERAL_BIT0 (Suc (x + xa)))"
   1.728 +lemma ARITH_ADD: "(op &::bool => bool => bool)
   1.729 + ((All::(nat => bool) => bool)
   1.730 +   (%x::nat.
   1.731 +       (All::(nat => bool) => bool)
   1.732 +        (%xa::nat.
   1.733 +            (op =::nat => nat => bool) ((op +::nat => nat => nat) x xa)
   1.734 +             ((op +::nat => nat => nat) x xa))))
   1.735 + ((op &::bool => bool => bool)
   1.736 +   ((op =::nat => nat => bool) ((op +::nat => nat => nat) (0::nat) (0::nat))
   1.737 +     (0::nat))
   1.738 +   ((op &::bool => bool => bool)
   1.739 +     ((All::(nat => bool) => bool)
   1.740 +       (%x::nat.
   1.741 +           (op =::nat => nat => bool)
   1.742 +            ((op +::nat => nat => nat) (0::nat)
   1.743 +              ((NUMERAL_BIT0::nat => nat) x))
   1.744 +            ((NUMERAL_BIT0::nat => nat) x)))
   1.745 +     ((op &::bool => bool => bool)
   1.746 +       ((All::(nat => bool) => bool)
   1.747 +         (%x::nat.
   1.748 +             (op =::nat => nat => bool)
   1.749 +              ((op +::nat => nat => nat) (0::nat)
   1.750 +                ((NUMERAL_BIT1::nat => nat) x))
   1.751 +              ((NUMERAL_BIT1::nat => nat) x)))
   1.752 +       ((op &::bool => bool => bool)
   1.753 +         ((All::(nat => bool) => bool)
   1.754 +           (%x::nat.
   1.755 +               (op =::nat => nat => bool)
   1.756 +                ((op +::nat => nat => nat) ((NUMERAL_BIT0::nat => nat) x)
   1.757 +                  (0::nat))
   1.758 +                ((NUMERAL_BIT0::nat => nat) x)))
   1.759 +         ((op &::bool => bool => bool)
   1.760 +           ((All::(nat => bool) => bool)
   1.761 +             (%x::nat.
   1.762 +                 (op =::nat => nat => bool)
   1.763 +                  ((op +::nat => nat => nat) ((NUMERAL_BIT1::nat => nat) x)
   1.764 +                    (0::nat))
   1.765 +                  ((NUMERAL_BIT1::nat => nat) x)))
   1.766 +           ((op &::bool => bool => bool)
   1.767 +             ((All::(nat => bool) => bool)
   1.768 +               (%x::nat.
   1.769 +                   (All::(nat => bool) => bool)
   1.770 +                    (%xa::nat.
   1.771 +                        (op =::nat => nat => bool)
   1.772 +                         ((op +::nat => nat => nat)
   1.773 +                           ((NUMERAL_BIT0::nat => nat) x)
   1.774 +                           ((NUMERAL_BIT0::nat => nat) xa))
   1.775 +                         ((NUMERAL_BIT0::nat => nat)
   1.776 +                           ((op +::nat => nat => nat) x xa)))))
   1.777 +             ((op &::bool => bool => bool)
   1.778 +               ((All::(nat => bool) => bool)
   1.779 +                 (%x::nat.
   1.780 +                     (All::(nat => bool) => bool)
   1.781 +                      (%xa::nat.
   1.782 +                          (op =::nat => nat => bool)
   1.783 +                           ((op +::nat => nat => nat)
   1.784 +                             ((NUMERAL_BIT0::nat => nat) x)
   1.785 +                             ((NUMERAL_BIT1::nat => nat) xa))
   1.786 +                           ((NUMERAL_BIT1::nat => nat)
   1.787 +                             ((op +::nat => nat => nat) x xa)))))
   1.788 +               ((op &::bool => bool => bool)
   1.789 +                 ((All::(nat => bool) => bool)
   1.790 +                   (%x::nat.
   1.791 +                       (All::(nat => bool) => bool)
   1.792 +                        (%xa::nat.
   1.793 +                            (op =::nat => nat => bool)
   1.794 +                             ((op +::nat => nat => nat)
   1.795 +                               ((NUMERAL_BIT1::nat => nat) x)
   1.796 +                               ((NUMERAL_BIT0::nat => nat) xa))
   1.797 +                             ((NUMERAL_BIT1::nat => nat)
   1.798 +                               ((op +::nat => nat => nat) x xa)))))
   1.799 +                 ((All::(nat => bool) => bool)
   1.800 +                   (%x::nat.
   1.801 +                       (All::(nat => bool) => bool)
   1.802 +                        (%xa::nat.
   1.803 +                            (op =::nat => nat => bool)
   1.804 +                             ((op +::nat => nat => nat)
   1.805 +                               ((NUMERAL_BIT1::nat => nat) x)
   1.806 +                               ((NUMERAL_BIT1::nat => nat) xa))
   1.807 +                             ((NUMERAL_BIT0::nat => nat)
   1.808 +                               ((Suc::nat => nat)
   1.809 +                                 ((op +::nat => nat => nat) x
   1.810 +                                   xa))))))))))))))"
   1.811    by (import hollight ARITH_ADD)
   1.812  
   1.813 -lemma ARITH_MULT: "(ALL (x::nat) xa::nat. x * xa = x * xa) &
   1.814 -(0::nat) * (0::nat) = (0::nat) &
   1.815 -(ALL x::nat. (0::nat) * NUMERAL_BIT0 x = (0::nat)) &
   1.816 -(ALL x::nat. (0::nat) * NUMERAL_BIT1 x = (0::nat)) &
   1.817 -(ALL x::nat. NUMERAL_BIT0 x * (0::nat) = (0::nat)) &
   1.818 -(ALL x::nat. NUMERAL_BIT1 x * (0::nat) = (0::nat)) &
   1.819 -(ALL (x::nat) xa::nat.
   1.820 -    NUMERAL_BIT0 x * NUMERAL_BIT0 xa =
   1.821 -    NUMERAL_BIT0 (NUMERAL_BIT0 (x * xa))) &
   1.822 -(ALL (x::nat) xa::nat.
   1.823 -    NUMERAL_BIT0 x * NUMERAL_BIT1 xa =
   1.824 -    NUMERAL_BIT0 x + NUMERAL_BIT0 (NUMERAL_BIT0 (x * xa))) &
   1.825 -(ALL (x::nat) xa::nat.
   1.826 -    NUMERAL_BIT1 x * NUMERAL_BIT0 xa =
   1.827 -    NUMERAL_BIT0 xa + NUMERAL_BIT0 (NUMERAL_BIT0 (x * xa))) &
   1.828 -(ALL (x::nat) xa::nat.
   1.829 -    NUMERAL_BIT1 x * NUMERAL_BIT1 xa =
   1.830 -    NUMERAL_BIT1 x +
   1.831 -    (NUMERAL_BIT0 xa + NUMERAL_BIT0 (NUMERAL_BIT0 (x * xa))))"
   1.832 +lemma ARITH_MULT: "(op &::bool => bool => bool)
   1.833 + ((All::(nat => bool) => bool)
   1.834 +   (%x::nat.
   1.835 +       (All::(nat => bool) => bool)
   1.836 +        (%xa::nat.
   1.837 +            (op =::nat => nat => bool) ((op *::nat => nat => nat) x xa)
   1.838 +             ((op *::nat => nat => nat) x xa))))
   1.839 + ((op &::bool => bool => bool)
   1.840 +   ((op =::nat => nat => bool) ((op *::nat => nat => nat) (0::nat) (0::nat))
   1.841 +     (0::nat))
   1.842 +   ((op &::bool => bool => bool)
   1.843 +     ((All::(nat => bool) => bool)
   1.844 +       (%x::nat.
   1.845 +           (op =::nat => nat => bool)
   1.846 +            ((op *::nat => nat => nat) (0::nat)
   1.847 +              ((NUMERAL_BIT0::nat => nat) x))
   1.848 +            (0::nat)))
   1.849 +     ((op &::bool => bool => bool)
   1.850 +       ((All::(nat => bool) => bool)
   1.851 +         (%x::nat.
   1.852 +             (op =::nat => nat => bool)
   1.853 +              ((op *::nat => nat => nat) (0::nat)
   1.854 +                ((NUMERAL_BIT1::nat => nat) x))
   1.855 +              (0::nat)))
   1.856 +       ((op &::bool => bool => bool)
   1.857 +         ((All::(nat => bool) => bool)
   1.858 +           (%x::nat.
   1.859 +               (op =::nat => nat => bool)
   1.860 +                ((op *::nat => nat => nat) ((NUMERAL_BIT0::nat => nat) x)
   1.861 +                  (0::nat))
   1.862 +                (0::nat)))
   1.863 +         ((op &::bool => bool => bool)
   1.864 +           ((All::(nat => bool) => bool)
   1.865 +             (%x::nat.
   1.866 +                 (op =::nat => nat => bool)
   1.867 +                  ((op *::nat => nat => nat) ((NUMERAL_BIT1::nat => nat) x)
   1.868 +                    (0::nat))
   1.869 +                  (0::nat)))
   1.870 +           ((op &::bool => bool => bool)
   1.871 +             ((All::(nat => bool) => bool)
   1.872 +               (%x::nat.
   1.873 +                   (All::(nat => bool) => bool)
   1.874 +                    (%xa::nat.
   1.875 +                        (op =::nat => nat => bool)
   1.876 +                         ((op *::nat => nat => nat)
   1.877 +                           ((NUMERAL_BIT0::nat => nat) x)
   1.878 +                           ((NUMERAL_BIT0::nat => nat) xa))
   1.879 +                         ((NUMERAL_BIT0::nat => nat)
   1.880 +                           ((NUMERAL_BIT0::nat => nat)
   1.881 +                             ((op *::nat => nat => nat) x xa))))))
   1.882 +             ((op &::bool => bool => bool)
   1.883 +               ((All::(nat => bool) => bool)
   1.884 +                 (%x::nat.
   1.885 +                     (All::(nat => bool) => bool)
   1.886 +                      (%xa::nat.
   1.887 +                          (op =::nat => nat => bool)
   1.888 +                           ((op *::nat => nat => nat)
   1.889 +                             ((NUMERAL_BIT0::nat => nat) x)
   1.890 +                             ((NUMERAL_BIT1::nat => nat) xa))
   1.891 +                           ((op +::nat => nat => nat)
   1.892 +                             ((NUMERAL_BIT0::nat => nat) x)
   1.893 +                             ((NUMERAL_BIT0::nat => nat)
   1.894 +                               ((NUMERAL_BIT0::nat => nat)
   1.895 +                                 ((op *::nat => nat => nat) x xa)))))))
   1.896 +               ((op &::bool => bool => bool)
   1.897 +                 ((All::(nat => bool) => bool)
   1.898 +                   (%x::nat.
   1.899 +                       (All::(nat => bool) => bool)
   1.900 +                        (%xa::nat.
   1.901 +                            (op =::nat => nat => bool)
   1.902 +                             ((op *::nat => nat => nat)
   1.903 +                               ((NUMERAL_BIT1::nat => nat) x)
   1.904 +                               ((NUMERAL_BIT0::nat => nat) xa))
   1.905 +                             ((op +::nat => nat => nat)
   1.906 +                               ((NUMERAL_BIT0::nat => nat) xa)
   1.907 +                               ((NUMERAL_BIT0::nat => nat)
   1.908 +                                 ((NUMERAL_BIT0::nat => nat)
   1.909 +                                   ((op *::nat => nat => nat) x xa)))))))
   1.910 +                 ((All::(nat => bool) => bool)
   1.911 +                   (%x::nat.
   1.912 +                       (All::(nat => bool) => bool)
   1.913 +                        (%xa::nat.
   1.914 +                            (op =::nat => nat => bool)
   1.915 +                             ((op *::nat => nat => nat)
   1.916 +                               ((NUMERAL_BIT1::nat => nat) x)
   1.917 +                               ((NUMERAL_BIT1::nat => nat) xa))
   1.918 +                             ((op +::nat => nat => nat)
   1.919 +                               ((NUMERAL_BIT1::nat => nat) x)
   1.920 +                               ((op +::nat => nat => nat)
   1.921 +                                 ((NUMERAL_BIT0::nat => nat) xa)
   1.922 +                                 ((NUMERAL_BIT0::nat => nat)
   1.923 +                                   ((NUMERAL_BIT0::nat => nat)
   1.924 +                                     ((op *::nat => nat => nat) x
   1.925 + xa))))))))))))))))"
   1.926    by (import hollight ARITH_MULT)
   1.927  
   1.928  lemma ARITH_EXP: "(ALL (x::nat) xa::nat. EXP x xa = EXP x xa) &
   1.929 -EXP (0::nat) (0::nat) = NUMERAL_BIT1 (0::nat) &
   1.930 -(ALL m::nat. EXP (NUMERAL_BIT0 m) (0::nat) = NUMERAL_BIT1 (0::nat)) &
   1.931 -(ALL m::nat. EXP (NUMERAL_BIT1 m) (0::nat) = NUMERAL_BIT1 (0::nat)) &
   1.932 -(ALL n::nat.
   1.933 -    EXP (0::nat) (NUMERAL_BIT0 n) = EXP (0::nat) n * EXP (0::nat) n) &
   1.934 +EXP 0 0 = NUMERAL_BIT1 0 &
   1.935 +(ALL m::nat. EXP (NUMERAL_BIT0 m) 0 = NUMERAL_BIT1 0) &
   1.936 +(ALL m::nat. EXP (NUMERAL_BIT1 m) 0 = NUMERAL_BIT1 0) &
   1.937 +(ALL n::nat. EXP 0 (NUMERAL_BIT0 n) = EXP 0 n * EXP 0 n) &
   1.938  (ALL (m::nat) n::nat.
   1.939      EXP (NUMERAL_BIT0 m) (NUMERAL_BIT0 n) =
   1.940      EXP (NUMERAL_BIT0 m) n * EXP (NUMERAL_BIT0 m) n) &
   1.941  (ALL (m::nat) n::nat.
   1.942      EXP (NUMERAL_BIT1 m) (NUMERAL_BIT0 n) =
   1.943      EXP (NUMERAL_BIT1 m) n * EXP (NUMERAL_BIT1 m) n) &
   1.944 -(ALL n::nat. EXP (0::nat) (NUMERAL_BIT1 n) = (0::nat)) &
   1.945 +(ALL n::nat. EXP 0 (NUMERAL_BIT1 n) = 0) &
   1.946  (ALL (m::nat) n::nat.
   1.947      EXP (NUMERAL_BIT0 m) (NUMERAL_BIT1 n) =
   1.948      NUMERAL_BIT0 m * (EXP (NUMERAL_BIT0 m) n * EXP (NUMERAL_BIT0 m) n)) &
   1.949 @@ -1204,23 +1316,23 @@
   1.950    by (import hollight ARITH_EXP)
   1.951  
   1.952  lemma ARITH_EVEN: "(ALL x::nat. EVEN x = EVEN x) &
   1.953 -EVEN (0::nat) = True &
   1.954 +EVEN 0 = True &
   1.955  (ALL x::nat. EVEN (NUMERAL_BIT0 x) = True) &
   1.956  (ALL x::nat. EVEN (NUMERAL_BIT1 x) = False)"
   1.957    by (import hollight ARITH_EVEN)
   1.958  
   1.959  lemma ARITH_ODD: "(ALL x::nat. ODD x = ODD x) &
   1.960 -ODD (0::nat) = False &
   1.961 +ODD 0 = False &
   1.962  (ALL x::nat. ODD (NUMERAL_BIT0 x) = False) &
   1.963  (ALL x::nat. ODD (NUMERAL_BIT1 x) = True)"
   1.964    by (import hollight ARITH_ODD)
   1.965  
   1.966  lemma ARITH_LE: "(ALL (x::nat) xa::nat. <= x xa = <= x xa) &
   1.967 -<= (0::nat) (0::nat) = True &
   1.968 -(ALL x::nat. <= (NUMERAL_BIT0 x) (0::nat) = (x = (0::nat))) &
   1.969 -(ALL x::nat. <= (NUMERAL_BIT1 x) (0::nat) = False) &
   1.970 -(ALL x::nat. <= (0::nat) (NUMERAL_BIT0 x) = True) &
   1.971 -(ALL x::nat. <= (0::nat) (NUMERAL_BIT1 x) = True) &
   1.972 +<= 0 0 = True &
   1.973 +(ALL x::nat. <= (NUMERAL_BIT0 x) 0 = (x = 0)) &
   1.974 +(ALL x::nat. <= (NUMERAL_BIT1 x) 0 = False) &
   1.975 +(ALL x::nat. <= 0 (NUMERAL_BIT0 x) = True) &
   1.976 +(ALL x::nat. <= 0 (NUMERAL_BIT1 x) = True) &
   1.977  (ALL (x::nat) xa::nat. <= (NUMERAL_BIT0 x) (NUMERAL_BIT0 xa) = <= x xa) &
   1.978  (ALL (x::nat) xa::nat. <= (NUMERAL_BIT0 x) (NUMERAL_BIT1 xa) = <= x xa) &
   1.979  (ALL (x::nat) xa::nat. <= (NUMERAL_BIT1 x) (NUMERAL_BIT0 xa) = < x xa) &
   1.980 @@ -1228,44 +1340,181 @@
   1.981    by (import hollight ARITH_LE)
   1.982  
   1.983  lemma ARITH_LT: "(ALL (x::nat) xa::nat. < x xa = < x xa) &
   1.984 -< (0::nat) (0::nat) = False &
   1.985 -(ALL x::nat. < (NUMERAL_BIT0 x) (0::nat) = False) &
   1.986 -(ALL x::nat. < (NUMERAL_BIT1 x) (0::nat) = False) &
   1.987 -(ALL x::nat. < (0::nat) (NUMERAL_BIT0 x) = < (0::nat) x) &
   1.988 -(ALL x::nat. < (0::nat) (NUMERAL_BIT1 x) = True) &
   1.989 +< 0 0 = False &
   1.990 +(ALL x::nat. < (NUMERAL_BIT0 x) 0 = False) &
   1.991 +(ALL x::nat. < (NUMERAL_BIT1 x) 0 = False) &
   1.992 +(ALL x::nat. < 0 (NUMERAL_BIT0 x) = < 0 x) &
   1.993 +(ALL x::nat. < 0 (NUMERAL_BIT1 x) = True) &
   1.994  (ALL (x::nat) xa::nat. < (NUMERAL_BIT0 x) (NUMERAL_BIT0 xa) = < x xa) &
   1.995  (ALL (x::nat) xa::nat. < (NUMERAL_BIT0 x) (NUMERAL_BIT1 xa) = <= x xa) &
   1.996  (ALL (x::nat) xa::nat. < (NUMERAL_BIT1 x) (NUMERAL_BIT0 xa) = < x xa) &
   1.997  (ALL (x::nat) xa::nat. < (NUMERAL_BIT1 x) (NUMERAL_BIT1 xa) = < x xa)"
   1.998    by (import hollight ARITH_LT)
   1.999  
  1.1000 -lemma ARITH_EQ: "(ALL (x::nat) xa::nat. (x = xa) = (x = xa)) &
  1.1001 -((0::nat) = (0::nat)) = True &
  1.1002 -(ALL x::nat. (NUMERAL_BIT0 x = (0::nat)) = (x = (0::nat))) &
  1.1003 -(ALL x::nat. (NUMERAL_BIT1 x = (0::nat)) = False) &
  1.1004 -(ALL x::nat. ((0::nat) = NUMERAL_BIT0 x) = ((0::nat) = x)) &
  1.1005 -(ALL x::nat. ((0::nat) = NUMERAL_BIT1 x) = False) &
  1.1006 -(ALL (x::nat) xa::nat. (NUMERAL_BIT0 x = NUMERAL_BIT0 xa) = (x = xa)) &
  1.1007 -(ALL (x::nat) xa::nat. (NUMERAL_BIT0 x = NUMERAL_BIT1 xa) = False) &
  1.1008 -(ALL (x::nat) xa::nat. (NUMERAL_BIT1 x = NUMERAL_BIT0 xa) = False) &
  1.1009 -(ALL (x::nat) xa::nat. (NUMERAL_BIT1 x = NUMERAL_BIT1 xa) = (x = xa))"
  1.1010 +lemma ARITH_EQ: "(op &::bool => bool => bool)
  1.1011 + ((All::(nat => bool) => bool)
  1.1012 +   (%x::nat.
  1.1013 +       (All::(nat => bool) => bool)
  1.1014 +        (%xa::nat.
  1.1015 +            (op =::bool => bool => bool) ((op =::nat => nat => bool) x xa)
  1.1016 +             ((op =::nat => nat => bool) x xa))))
  1.1017 + ((op &::bool => bool => bool)
  1.1018 +   ((op =::bool => bool => bool)
  1.1019 +     ((op =::nat => nat => bool) (0::nat) (0::nat)) (True::bool))
  1.1020 +   ((op &::bool => bool => bool)
  1.1021 +     ((All::(nat => bool) => bool)
  1.1022 +       (%x::nat.
  1.1023 +           (op =::bool => bool => bool)
  1.1024 +            ((op =::nat => nat => bool) ((NUMERAL_BIT0::nat => nat) x)
  1.1025 +              (0::nat))
  1.1026 +            ((op =::nat => nat => bool) x (0::nat))))
  1.1027 +     ((op &::bool => bool => bool)
  1.1028 +       ((All::(nat => bool) => bool)
  1.1029 +         (%x::nat.
  1.1030 +             (op =::bool => bool => bool)
  1.1031 +              ((op =::nat => nat => bool) ((NUMERAL_BIT1::nat => nat) x)
  1.1032 +                (0::nat))
  1.1033 +              (False::bool)))
  1.1034 +       ((op &::bool => bool => bool)
  1.1035 +         ((All::(nat => bool) => bool)
  1.1036 +           (%x::nat.
  1.1037 +               (op =::bool => bool => bool)
  1.1038 +                ((op =::nat => nat => bool) (0::nat)
  1.1039 +                  ((NUMERAL_BIT0::nat => nat) x))
  1.1040 +                ((op =::nat => nat => bool) (0::nat) x)))
  1.1041 +         ((op &::bool => bool => bool)
  1.1042 +           ((All::(nat => bool) => bool)
  1.1043 +             (%x::nat.
  1.1044 +                 (op =::bool => bool => bool)
  1.1045 +                  ((op =::nat => nat => bool) (0::nat)
  1.1046 +                    ((NUMERAL_BIT1::nat => nat) x))
  1.1047 +                  (False::bool)))
  1.1048 +           ((op &::bool => bool => bool)
  1.1049 +             ((All::(nat => bool) => bool)
  1.1050 +               (%x::nat.
  1.1051 +                   (All::(nat => bool) => bool)
  1.1052 +                    (%xa::nat.
  1.1053 +                        (op =::bool => bool => bool)
  1.1054 +                         ((op =::nat => nat => bool)
  1.1055 +                           ((NUMERAL_BIT0::nat => nat) x)
  1.1056 +                           ((NUMERAL_BIT0::nat => nat) xa))
  1.1057 +                         ((op =::nat => nat => bool) x xa))))
  1.1058 +             ((op &::bool => bool => bool)
  1.1059 +               ((All::(nat => bool) => bool)
  1.1060 +                 (%x::nat.
  1.1061 +                     (All::(nat => bool) => bool)
  1.1062 +                      (%xa::nat.
  1.1063 +                          (op =::bool => bool => bool)
  1.1064 +                           ((op =::nat => nat => bool)
  1.1065 +                             ((NUMERAL_BIT0::nat => nat) x)
  1.1066 +                             ((NUMERAL_BIT1::nat => nat) xa))
  1.1067 +                           (False::bool))))
  1.1068 +               ((op &::bool => bool => bool)
  1.1069 +                 ((All::(nat => bool) => bool)
  1.1070 +                   (%x::nat.
  1.1071 +                       (All::(nat => bool) => bool)
  1.1072 +                        (%xa::nat.
  1.1073 +                            (op =::bool => bool => bool)
  1.1074 +                             ((op =::nat => nat => bool)
  1.1075 +                               ((NUMERAL_BIT1::nat => nat) x)
  1.1076 +                               ((NUMERAL_BIT0::nat => nat) xa))
  1.1077 +                             (False::bool))))
  1.1078 +                 ((All::(nat => bool) => bool)
  1.1079 +                   (%x::nat.
  1.1080 +                       (All::(nat => bool) => bool)
  1.1081 +                        (%xa::nat.
  1.1082 +                            (op =::bool => bool => bool)
  1.1083 +                             ((op =::nat => nat => bool)
  1.1084 +                               ((NUMERAL_BIT1::nat => nat) x)
  1.1085 +                               ((NUMERAL_BIT1::nat => nat) xa))
  1.1086 +                             ((op =::nat => nat => bool) x xa))))))))))))"
  1.1087    by (import hollight ARITH_EQ)
  1.1088  
  1.1089 -lemma ARITH_SUB: "(ALL (x::nat) xa::nat. x - xa = x - xa) &
  1.1090 -(0::nat) - (0::nat) = (0::nat) &
  1.1091 -(ALL x::nat. (0::nat) - NUMERAL_BIT0 x = (0::nat)) &
  1.1092 -(ALL x::nat. (0::nat) - NUMERAL_BIT1 x = (0::nat)) &
  1.1093 -(ALL x::nat. NUMERAL_BIT0 x - (0::nat) = NUMERAL_BIT0 x) &
  1.1094 -(ALL x::nat. NUMERAL_BIT1 x - (0::nat) = NUMERAL_BIT1 x) &
  1.1095 -(ALL (m::nat) n::nat.
  1.1096 -    NUMERAL_BIT0 m - NUMERAL_BIT0 n = NUMERAL_BIT0 (m - n)) &
  1.1097 -(ALL (m::nat) n::nat.
  1.1098 -    NUMERAL_BIT0 m - NUMERAL_BIT1 n = Pred (NUMERAL_BIT0 (m - n))) &
  1.1099 -(ALL (m::nat) n::nat.
  1.1100 -    NUMERAL_BIT1 m - NUMERAL_BIT0 n =
  1.1101 -    COND (<= n m) (NUMERAL_BIT1 (m - n)) (0::nat)) &
  1.1102 -(ALL (m::nat) n::nat.
  1.1103 -    NUMERAL_BIT1 m - NUMERAL_BIT1 n = NUMERAL_BIT0 (m - n))"
  1.1104 +lemma ARITH_SUB: "(op &::bool => bool => bool)
  1.1105 + ((All::(nat => bool) => bool)
  1.1106 +   (%x::nat.
  1.1107 +       (All::(nat => bool) => bool)
  1.1108 +        (%xa::nat.
  1.1109 +            (op =::nat => nat => bool) ((op -::nat => nat => nat) x xa)
  1.1110 +             ((op -::nat => nat => nat) x xa))))
  1.1111 + ((op &::bool => bool => bool)
  1.1112 +   ((op =::nat => nat => bool) ((op -::nat => nat => nat) (0::nat) (0::nat))
  1.1113 +     (0::nat))
  1.1114 +   ((op &::bool => bool => bool)
  1.1115 +     ((All::(nat => bool) => bool)
  1.1116 +       (%x::nat.
  1.1117 +           (op =::nat => nat => bool)
  1.1118 +            ((op -::nat => nat => nat) (0::nat)
  1.1119 +              ((NUMERAL_BIT0::nat => nat) x))
  1.1120 +            (0::nat)))
  1.1121 +     ((op &::bool => bool => bool)
  1.1122 +       ((All::(nat => bool) => bool)
  1.1123 +         (%x::nat.
  1.1124 +             (op =::nat => nat => bool)
  1.1125 +              ((op -::nat => nat => nat) (0::nat)
  1.1126 +                ((NUMERAL_BIT1::nat => nat) x))
  1.1127 +              (0::nat)))
  1.1128 +       ((op &::bool => bool => bool)
  1.1129 +         ((All::(nat => bool) => bool)
  1.1130 +           (%x::nat.
  1.1131 +               (op =::nat => nat => bool)
  1.1132 +                ((op -::nat => nat => nat) ((NUMERAL_BIT0::nat => nat) x)
  1.1133 +                  (0::nat))
  1.1134 +                ((NUMERAL_BIT0::nat => nat) x)))
  1.1135 +         ((op &::bool => bool => bool)
  1.1136 +           ((All::(nat => bool) => bool)
  1.1137 +             (%x::nat.
  1.1138 +                 (op =::nat => nat => bool)
  1.1139 +                  ((op -::nat => nat => nat) ((NUMERAL_BIT1::nat => nat) x)
  1.1140 +                    (0::nat))
  1.1141 +                  ((NUMERAL_BIT1::nat => nat) x)))
  1.1142 +           ((op &::bool => bool => bool)
  1.1143 +             ((All::(nat => bool) => bool)
  1.1144 +               (%m::nat.
  1.1145 +                   (All::(nat => bool) => bool)
  1.1146 +                    (%n::nat.
  1.1147 +                        (op =::nat => nat => bool)
  1.1148 +                         ((op -::nat => nat => nat)
  1.1149 +                           ((NUMERAL_BIT0::nat => nat) m)
  1.1150 +                           ((NUMERAL_BIT0::nat => nat) n))
  1.1151 +                         ((NUMERAL_BIT0::nat => nat)
  1.1152 +                           ((op -::nat => nat => nat) m n)))))
  1.1153 +             ((op &::bool => bool => bool)
  1.1154 +               ((All::(nat => bool) => bool)
  1.1155 +                 (%m::nat.
  1.1156 +                     (All::(nat => bool) => bool)
  1.1157 +                      (%n::nat.
  1.1158 +                          (op =::nat => nat => bool)
  1.1159 +                           ((op -::nat => nat => nat)
  1.1160 +                             ((NUMERAL_BIT0::nat => nat) m)
  1.1161 +                             ((NUMERAL_BIT1::nat => nat) n))
  1.1162 +                           ((Pred::nat => nat)
  1.1163 +                             ((NUMERAL_BIT0::nat => nat)
  1.1164 +                               ((op -::nat => nat => nat) m n))))))
  1.1165 +               ((op &::bool => bool => bool)
  1.1166 +                 ((All::(nat => bool) => bool)
  1.1167 +                   (%m::nat.
  1.1168 +                       (All::(nat => bool) => bool)
  1.1169 +                        (%n::nat.
  1.1170 +                            (op =::nat => nat => bool)
  1.1171 +                             ((op -::nat => nat => nat)
  1.1172 +                               ((NUMERAL_BIT1::nat => nat) m)
  1.1173 +                               ((NUMERAL_BIT0::nat => nat) n))
  1.1174 +                             ((COND::bool => nat => nat => nat)
  1.1175 +                               ((<=::nat => nat => bool) n m)
  1.1176 +                               ((NUMERAL_BIT1::nat => nat)
  1.1177 +                                 ((op -::nat => nat => nat) m n))
  1.1178 +                               (0::nat)))))
  1.1179 +                 ((All::(nat => bool) => bool)
  1.1180 +                   (%m::nat.
  1.1181 +                       (All::(nat => bool) => bool)
  1.1182 +                        (%n::nat.
  1.1183 +                            (op =::nat => nat => bool)
  1.1184 +                             ((op -::nat => nat => nat)
  1.1185 +                               ((NUMERAL_BIT1::nat => nat) m)
  1.1186 +                               ((NUMERAL_BIT1::nat => nat) n))
  1.1187 +                             ((NUMERAL_BIT0::nat => nat)
  1.1188 +                               ((op -::nat => nat => nat) m n)))))))))))))"
  1.1189    by (import hollight ARITH_SUB)
  1.1190  
  1.1191  lemma right_th: "(s::nat) * NUMERAL_BIT1 (x::nat) = s + NUMERAL_BIT0 (s * x)"
  1.1192 @@ -1282,7 +1531,7 @@
  1.1193  (ALL x::'A::type. mul r0 x = r0) &
  1.1194  (ALL (x::'A::type) (y::'A::type) z::'A::type.
  1.1195      mul x (add y z) = add (mul x y) (mul x z)) &
  1.1196 -(ALL x::'A::type. (pwr::'A::type => nat => 'A::type) x (0::nat) = r1) &
  1.1197 +(ALL x::'A::type. (pwr::'A::type => nat => 'A::type) x 0 = r1) &
  1.1198  (ALL (x::'A::type) n::nat. pwr x (Suc n) = mul x (pwr x n)) -->
  1.1199  mul r1 (x::'A::type) = x &
  1.1200  add (mul (a::'A::type) (m::'A::type)) (mul (b::'A::type) m) =
  1.1201 @@ -1318,24 +1567,24 @@
  1.1202  mul (pwr x (p::nat)) (pwr x (q::nat)) = pwr x (p + q) &
  1.1203  mul x (pwr x q) = pwr x (Suc q) &
  1.1204  mul (pwr x q) x = pwr x (Suc q) &
  1.1205 -mul x x = pwr x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) &
  1.1206 +mul x x = pwr x (NUMERAL_BIT0 (NUMERAL_BIT1 0)) &
  1.1207  pwr (mul x (y::'A::type)) q = mul (pwr x q) (pwr y q) &
  1.1208  pwr (pwr x p) q = pwr x (p * q) &
  1.1209 -pwr x (0::nat) = r1 &
  1.1210 -pwr x (NUMERAL_BIT1 (0::nat)) = x &
  1.1211 +pwr x 0 = r1 &
  1.1212 +pwr x (NUMERAL_BIT1 0) = x &
  1.1213  mul x (add y (z::'A::type)) = add (mul x y) (mul x z) &
  1.1214  pwr x (Suc q) = mul x (pwr x q)"
  1.1215    by (import hollight SEMIRING_PTHS)
  1.1216  
  1.1217  lemma sth: "(ALL (x::nat) (y::nat) z::nat. x + (y + z) = x + y + z) &
  1.1218  (ALL (x::nat) y::nat. x + y = y + x) &
  1.1219 -(ALL x::nat. (0::nat) + x = x) &
  1.1220 +(ALL x::nat. 0 + x = x) &
  1.1221  (ALL (x::nat) (y::nat) z::nat. x * (y * z) = x * y * z) &
  1.1222  (ALL (x::nat) y::nat. x * y = y * x) &
  1.1223 -(ALL x::nat. NUMERAL_BIT1 (0::nat) * x = x) &
  1.1224 -(ALL x::nat. (0::nat) * x = (0::nat)) &
  1.1225 +(ALL x::nat. NUMERAL_BIT1 0 * x = x) &
  1.1226 +(ALL x::nat. 0 * x = 0) &
  1.1227  (ALL (x::nat) (xa::nat) xb::nat. x * (xa + xb) = x * xa + x * xb) &
  1.1228 -(ALL x::nat. EXP x (0::nat) = NUMERAL_BIT1 (0::nat)) &
  1.1229 +(ALL x::nat. EXP x 0 = NUMERAL_BIT1 0) &
  1.1230  (ALL (x::nat) xa::nat. EXP x (Suc xa) = x * EXP x xa)"
  1.1231    by (import hollight sth)
  1.1232  
  1.1233 @@ -1343,7 +1592,7 @@
  1.1234  (w * y + x * z = w * z + x * y) = (w = x | y = z)"
  1.1235    by (import hollight NUM_INTEGRAL_LEMMA)
  1.1236  
  1.1237 -lemma NUM_INTEGRAL: "(ALL x::nat. (0::nat) * x = (0::nat)) &
  1.1238 +lemma NUM_INTEGRAL: "(ALL x::nat. 0 * x = 0) &
  1.1239  (ALL (x::nat) (xa::nat) xb::nat. (x + xa = x + xb) = (xa = xb)) &
  1.1240  (ALL (w::nat) (x::nat) (y::nat) z::nat.
  1.1241      (w * y + x * z = w * z + x * y) = (w = x | y = z))"
  1.1242 @@ -1360,13 +1609,13 @@
  1.1243    NUMPAIR :: "nat => nat => nat" 
  1.1244    "NUMPAIR ==
  1.1245  %(u::nat) ua::nat.
  1.1246 -   EXP (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) u *
  1.1247 -   (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * ua + NUMERAL_BIT1 (0::nat))"
  1.1248 +   EXP (NUMERAL_BIT0 (NUMERAL_BIT1 0)) u *
  1.1249 +   (NUMERAL_BIT0 (NUMERAL_BIT1 0) * ua + NUMERAL_BIT1 0)"
  1.1250  
  1.1251  lemma DEF_NUMPAIR: "NUMPAIR =
  1.1252  (%(u::nat) ua::nat.
  1.1253 -    EXP (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) u *
  1.1254 -    (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * ua + NUMERAL_BIT1 (0::nat)))"
  1.1255 +    EXP (NUMERAL_BIT0 (NUMERAL_BIT1 0)) u *
  1.1256 +    (NUMERAL_BIT0 (NUMERAL_BIT1 0) * ua + NUMERAL_BIT1 0))"
  1.1257    by (import hollight DEF_NUMPAIR)
  1.1258  
  1.1259  lemma NUMPAIR_INJ_LEMMA: "ALL (x::nat) (xa::nat) (xb::nat) xc::nat.
  1.1260 @@ -1405,13 +1654,13 @@
  1.1261    NUMSUM :: "bool => nat => nat" 
  1.1262    "NUMSUM ==
  1.1263  %(u::bool) ua::nat.
  1.1264 -   COND u (Suc (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * ua))
  1.1265 -    (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * ua)"
  1.1266 +   COND u (Suc (NUMERAL_BIT0 (NUMERAL_BIT1 0) * ua))
  1.1267 +    (NUMERAL_BIT0 (NUMERAL_BIT1 0) * ua)"
  1.1268  
  1.1269  lemma DEF_NUMSUM: "NUMSUM =
  1.1270  (%(u::bool) ua::nat.
  1.1271 -    COND u (Suc (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * ua))
  1.1272 -     (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * ua))"
  1.1273 +    COND u (Suc (NUMERAL_BIT0 (NUMERAL_BIT1 0) * ua))
  1.1274 +     (NUMERAL_BIT0 (NUMERAL_BIT1 0) * ua))"
  1.1275    by (import hollight DEF_NUMSUM)
  1.1276  
  1.1277  lemma NUMSUM_INJ: "ALL (b1::bool) (x1::nat) (b2::bool) x2::nat.
  1.1278 @@ -1443,7 +1692,7 @@
  1.1279    by (import hollight DEF_NUMRIGHT)
  1.1280  
  1.1281  constdefs
  1.1282 -  INJN :: "nat => nat => 'A::type => bool" 
  1.1283 +  INJN :: "nat => nat => 'A => bool" 
  1.1284    "INJN == %(u::nat) (n::nat) a::'A::type. n = u"
  1.1285  
  1.1286  lemma DEF_INJN: "INJN = (%(u::nat) (n::nat) a::'A::type. n = u)"
  1.1287 @@ -1462,7 +1711,7 @@
  1.1288    by (import hollight INJN_INJ)
  1.1289  
  1.1290  constdefs
  1.1291 -  INJA :: "'A::type => nat => 'A::type => bool" 
  1.1292 +  INJA :: "'A => nat => 'A => bool" 
  1.1293    "INJA == %(u::'A::type) (n::nat) b::'A::type. b = u"
  1.1294  
  1.1295  lemma DEF_INJA: "INJA = (%(u::'A::type) (n::nat) b::'A::type. b = u)"
  1.1296 @@ -1472,7 +1721,7 @@
  1.1297    by (import hollight INJA_INJ)
  1.1298  
  1.1299  constdefs
  1.1300 -  INJF :: "(nat => nat => 'A::type => bool) => nat => 'A::type => bool" 
  1.1301 +  INJF :: "(nat => nat => 'A => bool) => nat => 'A => bool" 
  1.1302    "INJF == %(u::nat => nat => 'A::type => bool) n::nat. u (NUMFST n) (NUMSND n)"
  1.1303  
  1.1304  lemma DEF_INJF: "INJF =
  1.1305 @@ -1484,8 +1733,7 @@
  1.1306    by (import hollight INJF_INJ)
  1.1307  
  1.1308  constdefs
  1.1309 -  INJP :: "(nat => 'A::type => bool)
  1.1310 -=> (nat => 'A::type => bool) => nat => 'A::type => bool" 
  1.1311 +  INJP :: "(nat => 'A => bool) => (nat => 'A => bool) => nat => 'A => bool" 
  1.1312    "INJP ==
  1.1313  %(u::nat => 'A::type => bool) (ua::nat => 'A::type => bool) (n::nat)
  1.1314     a::'A::type. COND (NUMLEFT n) (u (NUMRIGHT n) a) (ua (NUMRIGHT n) a)"
  1.1315 @@ -1501,8 +1749,7 @@
  1.1316    by (import hollight INJP_INJ)
  1.1317  
  1.1318  constdefs
  1.1319 -  ZCONSTR :: "nat
  1.1320 -=> 'A::type => (nat => nat => 'A::type => bool) => nat => 'A::type => bool" 
  1.1321 +  ZCONSTR :: "nat => 'A => (nat => nat => 'A => bool) => nat => 'A => bool" 
  1.1322    "ZCONSTR ==
  1.1323  %(u::nat) (ua::'A::type) ub::nat => nat => 'A::type => bool.
  1.1324     INJP (INJN (Suc u)) (INJP (INJA ua) (INJF ub))"
  1.1325 @@ -1513,10 +1760,10 @@
  1.1326    by (import hollight DEF_ZCONSTR)
  1.1327  
  1.1328  constdefs
  1.1329 -  ZBOT :: "nat => 'A::type => bool" 
  1.1330 -  "ZBOT == INJP (INJN (0::nat)) (SOME z::nat => 'A::type => bool. True)"
  1.1331 -
  1.1332 -lemma DEF_ZBOT: "ZBOT = INJP (INJN (0::nat)) (SOME z::nat => 'A::type => bool. True)"
  1.1333 +  ZBOT :: "nat => 'A => bool" 
  1.1334 +  "ZBOT == INJP (INJN 0) (SOME z::nat => 'A::type => bool. True)"
  1.1335 +
  1.1336 +lemma DEF_ZBOT: "ZBOT = INJP (INJN 0) (SOME z::nat => 'A::type => bool. True)"
  1.1337    by (import hollight DEF_ZBOT)
  1.1338  
  1.1339  lemma ZCONSTR_ZBOT: "ALL (x::nat) (xa::'A::type) xb::nat => nat => 'A::type => bool.
  1.1340 @@ -1524,7 +1771,7 @@
  1.1341    by (import hollight ZCONSTR_ZBOT)
  1.1342  
  1.1343  constdefs
  1.1344 -  ZRECSPACE :: "(nat => 'A::type => bool) => bool" 
  1.1345 +  ZRECSPACE :: "(nat => 'A => bool) => bool" 
  1.1346    "ZRECSPACE ==
  1.1347  %a::nat => 'A::type => bool.
  1.1348     ALL ZRECSPACE'::(nat => 'A::type => bool) => bool.
  1.1349 @@ -1559,29 +1806,74 @@
  1.1350    "_mk_rec" :: _ ("'_mk'_rec")
  1.1351  
  1.1352  lemmas "TYDEF_recspace_@intern" = typedef_hol2hollight 
  1.1353 -  [where a="a :: 'A::type recspace" and r=r ,
  1.1354 +  [where a="a :: 'A recspace" and r=r ,
  1.1355     OF type_definition_recspace]
  1.1356  
  1.1357  constdefs
  1.1358 -  BOTTOM :: "'A::type recspace" 
  1.1359 -  "BOTTOM == _mk_rec ZBOT"
  1.1360 -
  1.1361 -lemma DEF_BOTTOM: "BOTTOM = _mk_rec ZBOT"
  1.1362 +  BOTTOM :: "'A recspace" 
  1.1363 +  "(op ==::'A::type recspace => 'A::type recspace => prop)
  1.1364 + (BOTTOM::'A::type recspace)
  1.1365 + ((_mk_rec::(nat => 'A::type => bool) => 'A::type recspace)
  1.1366 +   (ZBOT::nat => 'A::type => bool))"
  1.1367 +
  1.1368 +lemma DEF_BOTTOM: "(op =::'A::type recspace => 'A::type recspace => bool)
  1.1369 + (BOTTOM::'A::type recspace)
  1.1370 + ((_mk_rec::(nat => 'A::type => bool) => 'A::type recspace)
  1.1371 +   (ZBOT::nat => 'A::type => bool))"
  1.1372    by (import hollight DEF_BOTTOM)
  1.1373  
  1.1374  constdefs
  1.1375 -  CONSTR :: "nat => 'A::type => (nat => 'A::type recspace) => 'A::type recspace" 
  1.1376 -  "CONSTR ==
  1.1377 -%(u::nat) (ua::'A::type) ub::nat => 'A::type recspace.
  1.1378 -   _mk_rec (ZCONSTR u ua (%n::nat. _dest_rec (ub n)))"
  1.1379 -
  1.1380 -lemma DEF_CONSTR: "CONSTR =
  1.1381 -(%(u::nat) (ua::'A::type) ub::nat => 'A::type recspace.
  1.1382 -    _mk_rec (ZCONSTR u ua (%n::nat. _dest_rec (ub n))))"
  1.1383 +  CONSTR :: "nat => 'A => (nat => 'A recspace) => 'A recspace" 
  1.1384 +  "(op ==::(nat => 'A::type => (nat => 'A::type recspace) => 'A::type recspace)
  1.1385 +        => (nat
  1.1386 +            => 'A::type => (nat => 'A::type recspace) => 'A::type recspace)
  1.1387 +           => prop)
  1.1388 + (CONSTR::nat
  1.1389 +          => 'A::type => (nat => 'A::type recspace) => 'A::type recspace)
  1.1390 + (%(u::nat) (ua::'A::type) ub::nat => 'A::type recspace.
  1.1391 +     (_mk_rec::(nat => 'A::type => bool) => 'A::type recspace)
  1.1392 +      ((ZCONSTR::nat
  1.1393 +                 => 'A::type
  1.1394 +                    => (nat => nat => 'A::type => bool)
  1.1395 +                       => nat => 'A::type => bool)
  1.1396 +        u ua
  1.1397 +        (%n::nat.
  1.1398 +            (_dest_rec::'A::type recspace => nat => 'A::type => bool)
  1.1399 +             (ub n))))"
  1.1400 +
  1.1401 +lemma DEF_CONSTR: "(op =::(nat => 'A::type => (nat => 'A::type recspace) => 'A::type recspace)
  1.1402 +       => (nat
  1.1403 +           => 'A::type => (nat => 'A::type recspace) => 'A::type recspace)
  1.1404 +          => bool)
  1.1405 + (CONSTR::nat
  1.1406 +          => 'A::type => (nat => 'A::type recspace) => 'A::type recspace)
  1.1407 + (%(u::nat) (ua::'A::type) ub::nat => 'A::type recspace.
  1.1408 +     (_mk_rec::(nat => 'A::type => bool) => 'A::type recspace)
  1.1409 +      ((ZCONSTR::nat
  1.1410 +                 => 'A::type
  1.1411 +                    => (nat => nat => 'A::type => bool)
  1.1412 +                       => nat => 'A::type => bool)
  1.1413 +        u ua
  1.1414 +        (%n::nat.
  1.1415 +            (_dest_rec::'A::type recspace => nat => 'A::type => bool)
  1.1416 +             (ub n))))"
  1.1417    by (import hollight DEF_CONSTR)
  1.1418  
  1.1419 -lemma MK_REC_INJ: "ALL (x::nat => 'A::type => bool) y::nat => 'A::type => bool.
  1.1420 -   _mk_rec x = _mk_rec y --> ZRECSPACE x & ZRECSPACE y --> x = y"
  1.1421 +lemma MK_REC_INJ: "(All::((nat => 'A::type => bool) => bool) => bool)
  1.1422 + (%x::nat => 'A::type => bool.
  1.1423 +     (All::((nat => 'A::type => bool) => bool) => bool)
  1.1424 +      (%y::nat => 'A::type => bool.
  1.1425 +          (op -->::bool => bool => bool)
  1.1426 +           ((op =::'A::type recspace => 'A::type recspace => bool)
  1.1427 +             ((_mk_rec::(nat => 'A::type => bool) => 'A::type recspace) x)
  1.1428 +             ((_mk_rec::(nat => 'A::type => bool) => 'A::type recspace) y))
  1.1429 +           ((op -->::bool => bool => bool)
  1.1430 +             ((op &::bool => bool => bool)
  1.1431 +               ((ZRECSPACE::(nat => 'A::type => bool) => bool) x)
  1.1432 +               ((ZRECSPACE::(nat => 'A::type => bool) => bool) y))
  1.1433 +             ((op =::(nat => 'A::type => bool)
  1.1434 +                     => (nat => 'A::type => bool) => bool)
  1.1435 +               x y))))"
  1.1436    by (import hollight MK_REC_INJ)
  1.1437  
  1.1438  lemma CONSTR_BOT: "ALL (c::nat) (i::'A::type) r::nat => 'A::type recspace.
  1.1439 @@ -1609,24 +1901,24 @@
  1.1440    by (import hollight CONSTR_REC)
  1.1441  
  1.1442  constdefs
  1.1443 -  FCONS :: "'A::type => (nat => 'A::type) => nat => 'A::type" 
  1.1444 +  FCONS :: "'A => (nat => 'A) => nat => 'A" 
  1.1445    "FCONS ==
  1.1446  SOME FCONS::'A::type => (nat => 'A::type) => nat => 'A::type.
  1.1447 -   (ALL (a::'A::type) f::nat => 'A::type. FCONS a f (0::nat) = a) &
  1.1448 +   (ALL (a::'A::type) f::nat => 'A::type. FCONS a f 0 = a) &
  1.1449     (ALL (a::'A::type) (f::nat => 'A::type) n::nat. FCONS a f (Suc n) = f n)"
  1.1450  
  1.1451  lemma DEF_FCONS: "FCONS =
  1.1452  (SOME FCONS::'A::type => (nat => 'A::type) => nat => 'A::type.
  1.1453 -    (ALL (a::'A::type) f::nat => 'A::type. FCONS a f (0::nat) = a) &
  1.1454 +    (ALL (a::'A::type) f::nat => 'A::type. FCONS a f 0 = a) &
  1.1455      (ALL (a::'A::type) (f::nat => 'A::type) n::nat.
  1.1456          FCONS a f (Suc n) = f n))"
  1.1457    by (import hollight DEF_FCONS)
  1.1458  
  1.1459 -lemma FCONS_UNDO: "ALL f::nat => 'A::type. f = FCONS (f (0::nat)) (f o Suc)"
  1.1460 +lemma FCONS_UNDO: "ALL f::nat => 'A::type. f = FCONS (f 0) (f o Suc)"
  1.1461    by (import hollight FCONS_UNDO)
  1.1462  
  1.1463  constdefs
  1.1464 -  FNIL :: "nat => 'A::type" 
  1.1465 +  FNIL :: "nat => 'A" 
  1.1466    "FNIL == %u::nat. SOME x::'A::type. True"
  1.1467  
  1.1468  lemma DEF_FNIL: "FNIL = (%u::nat. SOME x::'A::type. True)"
  1.1469 @@ -1695,35 +1987,77 @@
  1.1470    "_mk_sum" :: _ ("'_mk'_sum")
  1.1471  
  1.1472  lemmas "TYDEF_sum_@intern" = typedef_hol2hollight 
  1.1473 -  [where a="a :: ('A::type, 'B::type) sum" and r=r ,
  1.1474 +  [where a="a :: ('A, 'B) sum" and r=r ,
  1.1475     OF type_definition_sum]
  1.1476  
  1.1477  constdefs
  1.1478 -  INL :: "'A::type => ('A::type, 'B::type) sum" 
  1.1479 -  "INL ==
  1.1480 -%a::'A::type.
  1.1481 -   _mk_sum (CONSTR (0::nat) (a, SOME v::'B::type. True) (%n::nat. BOTTOM))"
  1.1482 -
  1.1483 -lemma DEF_INL: "INL =
  1.1484 -(%a::'A::type.
  1.1485 -    _mk_sum (CONSTR (0::nat) (a, SOME v::'B::type. True) (%n::nat. BOTTOM)))"
  1.1486 +  INL :: "'A => ('A, 'B) sum" 
  1.1487 +  "(op ==::('A::type => ('A::type, 'B::type) sum)
  1.1488 +        => ('A::type => ('A::type, 'B::type) sum) => prop)
  1.1489 + (INL::'A::type => ('A::type, 'B::type) sum)
  1.1490 + (%a::'A::type.
  1.1491 +     (_mk_sum::('A::type * 'B::type) recspace => ('A::type, 'B::type) sum)
  1.1492 +      ((CONSTR::nat
  1.1493 +                => 'A::type * 'B::type
  1.1494 +                   => (nat => ('A::type * 'B::type) recspace)
  1.1495 +                      => ('A::type * 'B::type) recspace)
  1.1496 +        (0::nat)
  1.1497 +        ((Pair::'A::type => 'B::type => 'A::type * 'B::type) a
  1.1498 +          ((Eps::('B::type => bool) => 'B::type)
  1.1499 +            (%v::'B::type. True::bool)))
  1.1500 +        (%n::nat. BOTTOM::('A::type * 'B::type) recspace)))"
  1.1501 +
  1.1502 +lemma DEF_INL: "(op =::('A::type => ('A::type, 'B::type) sum)
  1.1503 +       => ('A::type => ('A::type, 'B::type) sum) => bool)
  1.1504 + (INL::'A::type => ('A::type, 'B::type) sum)
  1.1505 + (%a::'A::type.
  1.1506 +     (_mk_sum::('A::type * 'B::type) recspace => ('A::type, 'B::type) sum)
  1.1507 +      ((CONSTR::nat
  1.1508 +                => 'A::type * 'B::type
  1.1509 +                   => (nat => ('A::type * 'B::type) recspace)
  1.1510 +                      => ('A::type * 'B::type) recspace)
  1.1511 +        (0::nat)
  1.1512 +        ((Pair::'A::type => 'B::type => 'A::type * 'B::type) a
  1.1513 +          ((Eps::('B::type => bool) => 'B::type)
  1.1514 +            (%v::'B::type. True::bool)))
  1.1515 +        (%n::nat. BOTTOM::('A::type * 'B::type) recspace)))"
  1.1516    by (import hollight DEF_INL)
  1.1517  
  1.1518  constdefs
  1.1519 -  INR :: "'B::type => ('A::type, 'B::type) sum" 
  1.1520 -  "INR ==
  1.1521 -%a::'B::type.
  1.1522 -   _mk_sum
  1.1523 -    (CONSTR (Suc (0::nat)) (SOME v::'A::type. True, a) (%n::nat. BOTTOM))"
  1.1524 -
  1.1525 -lemma DEF_INR: "INR =
  1.1526 -(%a::'B::type.
  1.1527 -    _mk_sum
  1.1528 -     (CONSTR (Suc (0::nat)) (SOME v::'A::type. True, a) (%n::nat. BOTTOM)))"
  1.1529 +  INR :: "'B => ('A, 'B) sum" 
  1.1530 +  "(op ==::('B::type => ('A::type, 'B::type) sum)
  1.1531 +        => ('B::type => ('A::type, 'B::type) sum) => prop)
  1.1532 + (INR::'B::type => ('A::type, 'B::type) sum)
  1.1533 + (%a::'B::type.
  1.1534 +     (_mk_sum::('A::type * 'B::type) recspace => ('A::type, 'B::type) sum)
  1.1535 +      ((CONSTR::nat
  1.1536 +                => 'A::type * 'B::type
  1.1537 +                   => (nat => ('A::type * 'B::type) recspace)
  1.1538 +                      => ('A::type * 'B::type) recspace)
  1.1539 +        ((Suc::nat => nat) (0::nat))
  1.1540 +        ((Pair::'A::type => 'B::type => 'A::type * 'B::type)
  1.1541 +          ((Eps::('A::type => bool) => 'A::type) (%v::'A::type. True::bool))
  1.1542 +          a)
  1.1543 +        (%n::nat. BOTTOM::('A::type * 'B::type) recspace)))"
  1.1544 +
  1.1545 +lemma DEF_INR: "(op =::('B::type => ('A::type, 'B::type) sum)
  1.1546 +       => ('B::type => ('A::type, 'B::type) sum) => bool)
  1.1547 + (INR::'B::type => ('A::type, 'B::type) sum)
  1.1548 + (%a::'B::type.
  1.1549 +     (_mk_sum::('A::type * 'B::type) recspace => ('A::type, 'B::type) sum)
  1.1550 +      ((CONSTR::nat
  1.1551 +                => 'A::type * 'B::type
  1.1552 +                   => (nat => ('A::type * 'B::type) recspace)
  1.1553 +                      => ('A::type * 'B::type) recspace)
  1.1554 +        ((Suc::nat => nat) (0::nat))
  1.1555 +        ((Pair::'A::type => 'B::type => 'A::type * 'B::type)
  1.1556 +          ((Eps::('A::type => bool) => 'A::type) (%v::'A::type. True::bool))
  1.1557 +          a)
  1.1558 +        (%n::nat. BOTTOM::('A::type * 'B::type) recspace)))"
  1.1559    by (import hollight DEF_INR)
  1.1560  
  1.1561  consts
  1.1562 -  OUTL :: "('A::type, 'B::type) sum => 'A::type" 
  1.1563 +  OUTL :: "('A, 'B) sum => 'A" 
  1.1564  
  1.1565  defs
  1.1566    OUTL_def: "hollight.OUTL ==
  1.1567 @@ -1736,7 +2070,7 @@
  1.1568    by (import hollight DEF_OUTL)
  1.1569  
  1.1570  consts
  1.1571 -  OUTR :: "('A::type, 'B::type) sum => 'B::type" 
  1.1572 +  OUTR :: "('A, 'B) sum => 'B" 
  1.1573  
  1.1574  defs
  1.1575    OUTR_def: "hollight.OUTR ==
  1.1576 @@ -1790,26 +2124,55 @@
  1.1577    "_mk_option" :: _ ("'_mk'_option")
  1.1578  
  1.1579  lemmas "TYDEF_option_@intern" = typedef_hol2hollight 
  1.1580 -  [where a="a :: 'A::type hollight.option" and r=r ,
  1.1581 +  [where a="a :: 'A hollight.option" and r=r ,
  1.1582     OF type_definition_option]
  1.1583  
  1.1584  constdefs
  1.1585 -  NONE :: "'A::type hollight.option" 
  1.1586 -  "NONE ==
  1.1587 -_mk_option (CONSTR (0::nat) (SOME v::'A::type. True) (%n::nat. BOTTOM))"
  1.1588 -
  1.1589 -lemma DEF_NONE: "NONE =
  1.1590 -_mk_option (CONSTR (0::nat) (SOME v::'A::type. True) (%n::nat. BOTTOM))"
  1.1591 +  NONE :: "'A hollight.option" 
  1.1592 +  "(op ==::'A::type hollight.option => 'A::type hollight.option => prop)
  1.1593 + (NONE::'A::type hollight.option)
  1.1594 + ((_mk_option::'A::type recspace => 'A::type hollight.option)
  1.1595 +   ((CONSTR::nat
  1.1596 +             => 'A::type => (nat => 'A::type recspace) => 'A::type recspace)
  1.1597 +     (0::nat)
  1.1598 +     ((Eps::('A::type => bool) => 'A::type) (%v::'A::type. True::bool))
  1.1599 +     (%n::nat. BOTTOM::'A::type recspace)))"
  1.1600 +
  1.1601 +lemma DEF_NONE: "(op =::'A::type hollight.option => 'A::type hollight.option => bool)
  1.1602 + (NONE::'A::type hollight.option)
  1.1603 + ((_mk_option::'A::type recspace => 'A::type hollight.option)
  1.1604 +   ((CONSTR::nat
  1.1605 +             => 'A::type => (nat => 'A::type recspace) => 'A::type recspace)
  1.1606 +     (0::nat)
  1.1607 +     ((Eps::('A::type => bool) => 'A::type) (%v::'A::type. True::bool))
  1.1608 +     (%n::nat. BOTTOM::'A::type recspace)))"
  1.1609    by (import hollight DEF_NONE)
  1.1610  
  1.1611  consts
  1.1612 -  SOME :: "'A::type => 'A::type hollight.option" ("SOME")
  1.1613 +  SOME :: "'A => 'A hollight.option" ("SOME")
  1.1614  
  1.1615  defs
  1.1616 -  SOME_def: "SOME == %a::'A::type. _mk_option (CONSTR (Suc (0::nat)) a (%n::nat. BOTTOM))"
  1.1617 -
  1.1618 -lemma DEF_SOME: "SOME =
  1.1619 -(%a::'A::type. _mk_option (CONSTR (Suc (0::nat)) a (%n::nat. BOTTOM)))"
  1.1620 +  SOME_def: "(op ==::('A::type => 'A::type hollight.option)
  1.1621 +        => ('A::type => 'A::type hollight.option) => prop)
  1.1622 + (SOME::'A::type => 'A::type hollight.option)
  1.1623 + (%a::'A::type.
  1.1624 +     (_mk_option::'A::type recspace => 'A::type hollight.option)
  1.1625 +      ((CONSTR::nat
  1.1626 +                => 'A::type
  1.1627 +                   => (nat => 'A::type recspace) => 'A::type recspace)
  1.1628 +        ((Suc::nat => nat) (0::nat)) a
  1.1629 +        (%n::nat. BOTTOM::'A::type recspace)))"
  1.1630 +
  1.1631 +lemma DEF_SOME: "(op =::('A::type => 'A::type hollight.option)
  1.1632 +       => ('A::type => 'A::type hollight.option) => bool)
  1.1633 + (SOME::'A::type => 'A::type hollight.option)
  1.1634 + (%a::'A::type.
  1.1635 +     (_mk_option::'A::type recspace => 'A::type hollight.option)
  1.1636 +      ((CONSTR::nat
  1.1637 +                => 'A::type
  1.1638 +                   => (nat => 'A::type recspace) => 'A::type recspace)
  1.1639 +        ((Suc::nat => nat) (0::nat)) a
  1.1640 +        (%n::nat. BOTTOM::'A::type recspace)))"
  1.1641    by (import hollight DEF_SOME)
  1.1642  
  1.1643  typedef (open) ('A) list = "(Collect::('A::type recspace => bool) => 'A::type recspace set)
  1.1644 @@ -1859,27 +2222,61 @@
  1.1645    "_mk_list" :: _ ("'_mk'_list")
  1.1646  
  1.1647  lemmas "TYDEF_list_@intern" = typedef_hol2hollight 
  1.1648 -  [where a="a :: 'A::type hollight.list" and r=r ,
  1.1649 +  [where a="a :: 'A hollight.list" and r=r ,
  1.1650     OF type_definition_list]
  1.1651  
  1.1652  constdefs
  1.1653 -  NIL :: "'A::type hollight.list" 
  1.1654 -  "NIL == _mk_list (CONSTR (0::nat) (SOME v::'A::type. True) (%n::nat. BOTTOM))"
  1.1655 -
  1.1656 -lemma DEF_NIL: "NIL = _mk_list (CONSTR (0::nat) (SOME v::'A::type. True) (%n::nat. BOTTOM))"
  1.1657 +  NIL :: "'A hollight.list" 
  1.1658 +  "(op ==::'A::type hollight.list => 'A::type hollight.list => prop)
  1.1659 + (NIL::'A::type hollight.list)
  1.1660 + ((_mk_list::'A::type recspace => 'A::type hollight.list)
  1.1661 +   ((CONSTR::nat
  1.1662 +             => 'A::type => (nat => 'A::type recspace) => 'A::type recspace)
  1.1663 +     (0::nat)
  1.1664 +     ((Eps::('A::type => bool) => 'A::type) (%v::'A::type. True::bool))
  1.1665 +     (%n::nat. BOTTOM::'A::type recspace)))"
  1.1666 +
  1.1667 +lemma DEF_NIL: "(op =::'A::type hollight.list => 'A::type hollight.list => bool)
  1.1668 + (NIL::'A::type hollight.list)
  1.1669 + ((_mk_list::'A::type recspace => 'A::type hollight.list)
  1.1670 +   ((CONSTR::nat
  1.1671 +             => 'A::type => (nat => 'A::type recspace) => 'A::type recspace)
  1.1672 +     (0::nat)
  1.1673 +     ((Eps::('A::type => bool) => 'A::type) (%v::'A::type. True::bool))
  1.1674 +     (%n::nat. BOTTOM::'A::type recspace)))"
  1.1675    by (import hollight DEF_NIL)
  1.1676  
  1.1677  constdefs
  1.1678 -  CONS :: "'A::type => 'A::type hollight.list => 'A::type hollight.list" 
  1.1679 -  "CONS ==
  1.1680 -%(a0::'A::type) a1::'A::type hollight.list.
  1.1681 -   _mk_list
  1.1682 -    (CONSTR (Suc (0::nat)) a0 (FCONS (_dest_list a1) (%n::nat. BOTTOM)))"
  1.1683 -
  1.1684 -lemma DEF_CONS: "CONS =
  1.1685 -(%(a0::'A::type) a1::'A::type hollight.list.
  1.1686 -    _mk_list
  1.1687 -     (CONSTR (Suc (0::nat)) a0 (FCONS (_dest_list a1) (%n::nat. BOTTOM))))"
  1.1688 +  CONS :: "'A => 'A hollight.list => 'A hollight.list" 
  1.1689 +  "(op ==::('A::type => 'A::type hollight.list => 'A::type hollight.list)
  1.1690 +        => ('A::type => 'A::type hollight.list => 'A::type hollight.list)
  1.1691 +           => prop)
  1.1692 + (CONS::'A::type => 'A::type hollight.list => 'A::type hollight.list)
  1.1693 + (%(a0::'A::type) a1::'A::type hollight.list.
  1.1694 +     (_mk_list::'A::type recspace => 'A::type hollight.list)
  1.1695 +      ((CONSTR::nat
  1.1696 +                => 'A::type
  1.1697 +                   => (nat => 'A::type recspace) => 'A::type recspace)
  1.1698 +        ((Suc::nat => nat) (0::nat)) a0
  1.1699 +        ((FCONS::'A::type recspace
  1.1700 +                 => (nat => 'A::type recspace) => nat => 'A::type recspace)
  1.1701 +          ((_dest_list::'A::type hollight.list => 'A::type recspace) a1)
  1.1702 +          (%n::nat. BOTTOM::'A::type recspace))))"
  1.1703 +
  1.1704 +lemma DEF_CONS: "(op =::('A::type => 'A::type hollight.list => 'A::type hollight.list)
  1.1705 +       => ('A::type => 'A::type hollight.list => 'A::type hollight.list)
  1.1706 +          => bool)
  1.1707 + (CONS::'A::type => 'A::type hollight.list => 'A::type hollight.list)
  1.1708 + (%(a0::'A::type) a1::'A::type hollight.list.
  1.1709 +     (_mk_list::'A::type recspace => 'A::type hollight.list)
  1.1710 +      ((CONSTR::nat
  1.1711 +                => 'A::type
  1.1712 +                   => (nat => 'A::type recspace) => 'A::type recspace)
  1.1713 +        ((Suc::nat => nat) (0::nat)) a0
  1.1714 +        ((FCONS::'A::type recspace
  1.1715 +                 => (nat => 'A::type recspace) => nat => 'A::type recspace)
  1.1716 +          ((_dest_list::'A::type hollight.list => 'A::type recspace) a1)
  1.1717 +          (%n::nat. BOTTOM::'A::type recspace))))"
  1.1718    by (import hollight DEF_CONS)
  1.1719  
  1.1720  lemma pair_RECURSION: "ALL PAIR'::'A::type => 'B::type => 'C::type.
  1.1721 @@ -1888,12 +2285,11 @@
  1.1722    by (import hollight pair_RECURSION)
  1.1723  
  1.1724  lemma num_RECURSION_STD: "ALL (e::'Z::type) f::nat => 'Z::type => 'Z::type.
  1.1725 -   EX fn::nat => 'Z::type.
  1.1726 -      fn (0::nat) = e & (ALL n::nat. fn (Suc n) = f n (fn n))"
  1.1727 +   EX fn::nat => 'Z::type. fn 0 = e & (ALL n::nat. fn (Suc n) = f n (fn n))"
  1.1728    by (import hollight num_RECURSION_STD)
  1.1729  
  1.1730  constdefs
  1.1731 -  ISO :: "('A::type => 'B::type) => ('B::type => 'A::type) => bool" 
  1.1732 +  ISO :: "('A => 'B) => ('B => 'A) => bool" 
  1.1733    "ISO ==
  1.1734  %(u::'A::type => 'B::type) ua::'B::type => 'A::type.
  1.1735     (ALL x::'B::type. u (ua x) = x) & (ALL y::'A::type. ua (u y) = y)"
  1.1736 @@ -1922,14 +2318,12 @@
  1.1737  typedef (open) N_2 = "{a::bool recspace.
  1.1738   ALL u::bool recspace => bool.
  1.1739      (ALL a::bool recspace.
  1.1740 -        a =
  1.1741 -        CONSTR (NUMERAL (0::nat)) (SOME x::bool. True) (%n::nat. BOTTOM) |
  1.1742 +        a = CONSTR (NUMERAL 0) (SOME x::bool. True) (%n::nat. BOTTOM) |
  1.1743          a =
  1.1744 -        CONSTR (Suc (NUMERAL (0::nat))) (SOME x::bool. True)
  1.1745 -         (%n::nat. BOTTOM) -->
  1.1746 +        CONSTR (Suc (NUMERAL 0)) (SOME x::bool. True) (%n::nat. BOTTOM) -->
  1.1747          u a) -->
  1.1748      u a}"  morphisms "_dest_2" "_mk_2"
  1.1749 -  apply (rule light_ex_imp_nonempty[where t="CONSTR (NUMERAL (0::nat)) (SOME x::bool. True) (%n::nat. BOTTOM)"])
  1.1750 +  apply (rule light_ex_imp_nonempty[where t="CONSTR (NUMERAL 0) (SOME x::bool. True) (%n::nat. BOTTOM)"])
  1.1751    by (import hollight TYDEF_2)
  1.1752  
  1.1753  syntax
  1.1754 @@ -1946,20 +2340,36 @@
  1.1755    "_10288" :: "N_2" ("'_10288")
  1.1756  
  1.1757  defs
  1.1758 -  "_10288_def": "_10288 == _mk_2 (CONSTR (0::nat) (SOME x::bool. True) (%n::nat. BOTTOM))"
  1.1759 -
  1.1760 -lemma DEF__10288: "_10288 = _mk_2 (CONSTR (0::nat) (SOME x::bool. True) (%n::nat. BOTTOM))"
  1.1761 +  "_10288_def": "(op ==::N_2 => N_2 => prop) (_10288::N_2)
  1.1762 + ((_mk_2::bool recspace => N_2)
  1.1763 +   ((CONSTR::nat => bool => (nat => bool recspace) => bool recspace)
  1.1764 +     (0::nat) ((Eps::(bool => bool) => bool) (%x::bool. True::bool))
  1.1765 +     (%n::nat. BOTTOM::bool recspace)))"
  1.1766 +
  1.1767 +lemma DEF__10288: "(op =::N_2 => N_2 => bool) (_10288::N_2)
  1.1768 + ((_mk_2::bool recspace => N_2)
  1.1769 +   ((CONSTR::nat => bool => (nat => bool recspace) => bool recspace)
  1.1770 +     (0::nat) ((Eps::(bool => bool) => bool) (%x::bool. True::bool))
  1.1771 +     (%n::nat. BOTTOM::bool recspace)))"
  1.1772    by (import hollight DEF__10288)
  1.1773  
  1.1774  consts
  1.1775    "_10289" :: "N_2" ("'_10289")
  1.1776  
  1.1777  defs
  1.1778 -  "_10289_def": "_10289 ==
  1.1779 -_mk_2 (CONSTR (Suc (0::nat)) (SOME x::bool. True) (%n::nat. BOTTOM))"
  1.1780 -
  1.1781 -lemma DEF__10289: "_10289 =
  1.1782 -_mk_2 (CONSTR (Suc (0::nat)) (SOME x::bool. True) (%n::nat. BOTTOM))"
  1.1783 +  "_10289_def": "(op ==::N_2 => N_2 => prop) (_10289::N_2)
  1.1784 + ((_mk_2::bool recspace => N_2)
  1.1785 +   ((CONSTR::nat => bool => (nat => bool recspace) => bool recspace)
  1.1786 +     ((Suc::nat => nat) (0::nat))
  1.1787 +     ((Eps::(bool => bool) => bool) (%x::bool. True::bool))
  1.1788 +     (%n::nat. BOTTOM::bool recspace)))"
  1.1789 +
  1.1790 +lemma DEF__10289: "(op =::N_2 => N_2 => bool) (_10289::N_2)
  1.1791 + ((_mk_2::bool recspace => N_2)
  1.1792 +   ((CONSTR::nat => bool => (nat => bool recspace) => bool recspace)
  1.1793 +     ((Suc::nat => nat) (0::nat))
  1.1794 +     ((Eps::(bool => bool) => bool) (%x::bool. True::bool))
  1.1795 +     (%n::nat. BOTTOM::bool recspace)))"
  1.1796    by (import hollight DEF__10289)
  1.1797  
  1.1798  constdefs
  1.1799 @@ -1979,17 +2389,15 @@
  1.1800  typedef (open) N_3 = "{a::bool recspace.
  1.1801   ALL u::bool recspace => bool.
  1.1802      (ALL a::bool recspace.
  1.1803 -        a =
  1.1804 -        CONSTR (NUMERAL (0::nat)) (SOME x::bool. True) (%n::nat. BOTTOM) |
  1.1805 +        a = CONSTR (NUMERAL 0) (SOME x::bool. True) (%n::nat. BOTTOM) |
  1.1806          a =
  1.1807 -        CONSTR (Suc (NUMERAL (0::nat))) (SOME x::bool. True)
  1.1808 -         (%n::nat. BOTTOM) |
  1.1809 +        CONSTR (Suc (NUMERAL 0)) (SOME x::bool. True) (%n::nat. BOTTOM) |
  1.1810          a =
  1.1811 -        CONSTR (Suc (Suc (NUMERAL (0::nat)))) (SOME x::bool. True)
  1.1812 +        CONSTR (Suc (Suc (NUMERAL 0))) (SOME x::bool. True)
  1.1813           (%n::nat. BOTTOM) -->
  1.1814          u a) -->
  1.1815      u a}"  morphisms "_dest_3" "_mk_3"
  1.1816 -  apply (rule light_ex_imp_nonempty[where t="CONSTR (NUMERAL (0::nat)) (SOME x::bool. True) (%n::nat. BOTTOM)"])
  1.1817 +  apply (rule light_ex_imp_nonempty[where t="CONSTR (NUMERAL 0) (SOME x::bool. True) (%n::nat. BOTTOM)"])
  1.1818    by (import hollight TYDEF_3)
  1.1819  
  1.1820  syntax
  1.1821 @@ -2006,31 +2414,55 @@
  1.1822    "_10312" :: "N_3" ("'_10312")
  1.1823  
  1.1824  defs
  1.1825 -  "_10312_def": "_10312 == _mk_3 (CONSTR (0::nat) (SOME x::bool. True) (%n::nat. BOTTOM))"
  1.1826 -
  1.1827 -lemma DEF__10312: "_10312 = _mk_3 (CONSTR (0::nat) (SOME x::bool. True) (%n::nat. BOTTOM))"
  1.1828 +  "_10312_def": "(op ==::N_3 => N_3 => prop) (_10312::N_3)
  1.1829 + ((_mk_3::bool recspace => N_3)
  1.1830 +   ((CONSTR::nat => bool => (nat => bool recspace) => bool recspace)
  1.1831 +     (0::nat) ((Eps::(bool => bool) => bool) (%x::bool. True::bool))
  1.1832 +     (%n::nat. BOTTOM::bool recspace)))"
  1.1833 +
  1.1834 +lemma DEF__10312: "(op =::N_3 => N_3 => bool) (_10312::N_3)
  1.1835 + ((_mk_3::bool recspace => N_3)
  1.1836 +   ((CONSTR::nat => bool => (nat => bool recspace) => bool recspace)
  1.1837 +     (0::nat) ((Eps::(bool => bool) => bool) (%x::bool. True::bool))
  1.1838 +     (%n::nat. BOTTOM::bool recspace)))"
  1.1839    by (import hollight DEF__10312)
  1.1840  
  1.1841  consts
  1.1842    "_10313" :: "N_3" ("'_10313")
  1.1843  
  1.1844  defs
  1.1845 -  "_10313_def": "_10313 ==
  1.1846 -_mk_3 (CONSTR (Suc (0::nat)) (SOME x::bool. True) (%n::nat. BOTTOM))"
  1.1847 -
  1.1848 -lemma DEF__10313: "_10313 =
  1.1849 -_mk_3 (CONSTR (Suc (0::nat)) (SOME x::bool. True) (%n::nat. BOTTOM))"
  1.1850 +  "_10313_def": "(op ==::N_3 => N_3 => prop) (_10313::N_3)
  1.1851 + ((_mk_3::bool recspace => N_3)
  1.1852 +   ((CONSTR::nat => bool => (nat => bool recspace) => bool recspace)
  1.1853 +     ((Suc::nat => nat) (0::nat))
  1.1854 +     ((Eps::(bool => bool) => bool) (%x::bool. True::bool))
  1.1855 +     (%n::nat. BOTTOM::bool recspace)))"
  1.1856 +
  1.1857 +lemma DEF__10313: "(op =::N_3 => N_3 => bool) (_10313::N_3)
  1.1858 + ((_mk_3::bool recspace => N_3)
  1.1859 +   ((CONSTR::nat => bool => (nat => bool recspace) => bool recspace)
  1.1860 +     ((Suc::nat => nat) (0::nat))
  1.1861 +     ((Eps::(bool => bool) => bool) (%x::bool. True::bool))
  1.1862 +     (%n::nat. BOTTOM::bool recspace)))"
  1.1863    by (import hollight DEF__10313)
  1.1864  
  1.1865  consts
  1.1866    "_10314" :: "N_3" ("'_10314")
  1.1867  
  1.1868  defs
  1.1869 -  "_10314_def": "_10314 ==
  1.1870 -_mk_3 (CONSTR (Suc (Suc (0::nat))) (SOME x::bool. True) (%n::nat. BOTTOM))"
  1.1871 -
  1.1872 -lemma DEF__10314: "_10314 =
  1.1873 -_mk_3 (CONSTR (Suc (Suc (0::nat))) (SOME x::bool. True) (%n::nat. BOTTOM))"
  1.1874 +  "_10314_def": "(op ==::N_3 => N_3 => prop) (_10314::N_3)
  1.1875 + ((_mk_3::bool recspace => N_3)
  1.1876 +   ((CONSTR::nat => bool => (nat => bool recspace) => bool recspace)
  1.1877 +     ((Suc::nat => nat) ((Suc::nat => nat) (0::nat)))
  1.1878 +     ((Eps::(bool => bool) => bool) (%x::bool. True::bool))
  1.1879 +     (%n::nat. BOTTOM::bool recspace)))"
  1.1880 +
  1.1881 +lemma DEF__10314: "(op =::N_3 => N_3 => bool) (_10314::N_3)
  1.1882 + ((_mk_3::bool recspace => N_3)
  1.1883 +   ((CONSTR::nat => bool => (nat => bool recspace) => bool recspace)
  1.1884 +     ((Suc::nat => nat) ((Suc::nat => nat) (0::nat)))
  1.1885 +     ((Eps::(bool => bool) => bool) (%x::bool. True::bool))
  1.1886 +     (%n::nat. BOTTOM::bool recspace)))"
  1.1887    by (import hollight DEF__10314)
  1.1888  
  1.1889  constdefs
  1.1890 @@ -2062,7 +2494,7 @@
  1.1891    by (import hollight list_INDUCT)
  1.1892  
  1.1893  constdefs
  1.1894 -  HD :: "'A::type hollight.list => 'A::type" 
  1.1895 +  HD :: "'A hollight.list => 'A" 
  1.1896    "HD ==
  1.1897  SOME HD::'A::type hollight.list => 'A::type.
  1.1898     ALL (t::'A::type hollight.list) h::'A::type. HD (CONS h t) = h"
  1.1899 @@ -2073,7 +2505,7 @@
  1.1900    by (import hollight DEF_HD)
  1.1901  
  1.1902  constdefs
  1.1903 -  TL :: "'A::type hollight.list => 'A::type hollight.list" 
  1.1904 +  TL :: "'A hollight.list => 'A hollight.list" 
  1.1905    "TL ==
  1.1906  SOME TL::'A::type hollight.list => 'A::type hollight.list.
  1.1907     ALL (h::'A::type) t::'A::type hollight.list. TL (CONS h t) = t"
  1.1908 @@ -2084,7 +2516,7 @@
  1.1909    by (import hollight DEF_TL)
  1.1910  
  1.1911  constdefs
  1.1912 -  APPEND :: "'A::type hollight.list => 'A::type hollight.list => 'A::type hollight.list" 
  1.1913 +  APPEND :: "'A hollight.list => 'A hollight.list => 'A hollight.list" 
  1.1914    "APPEND ==
  1.1915  SOME APPEND::'A::type hollight.list
  1.1916               => 'A::type hollight.list => 'A::type hollight.list.
  1.1917 @@ -2102,7 +2534,7 @@
  1.1918    by (import hollight DEF_APPEND)
  1.1919  
  1.1920  constdefs
  1.1921 -  REVERSE :: "'A::type hollight.list => 'A::type hollight.list" 
  1.1922 +  REVERSE :: "'A hollight.list => 'A hollight.list" 
  1.1923    "REVERSE ==
  1.1924  SOME REVERSE::'A::type hollight.list => 'A::type hollight.list.
  1.1925     REVERSE NIL = NIL &
  1.1926 @@ -2117,22 +2549,22 @@
  1.1927    by (import hollight DEF_REVERSE)
  1.1928  
  1.1929  constdefs
  1.1930 -  LENGTH :: "'A::type hollight.list => nat" 
  1.1931 +  LENGTH :: "'A hollight.list => nat" 
  1.1932    "LENGTH ==
  1.1933  SOME LENGTH::'A::type hollight.list => nat.
  1.1934 -   LENGTH NIL = (0::nat) &
  1.1935 +   LENGTH NIL = 0 &
  1.1936     (ALL (h::'A::type) t::'A::type hollight.list.
  1.1937         LENGTH (CONS h t) = Suc (LENGTH t))"
  1.1938  
  1.1939  lemma DEF_LENGTH: "LENGTH =
  1.1940  (SOME LENGTH::'A::type hollight.list => nat.
  1.1941 -    LENGTH NIL = (0::nat) &
  1.1942 +    LENGTH NIL = 0 &
  1.1943      (ALL (h::'A::type) t::'A::type hollight.list.
  1.1944          LENGTH (CONS h t) = Suc (LENGTH t)))"
  1.1945    by (import hollight DEF_LENGTH)
  1.1946  
  1.1947  constdefs
  1.1948 -  MAP :: "('A::type => 'B::type) => 'A::type hollight.list => 'B::type hollight.list" 
  1.1949 +  MAP :: "('A => 'B) => 'A hollight.list => 'B hollight.list" 
  1.1950    "MAP ==
  1.1951  SOME MAP::('A::type => 'B::type)
  1.1952            => 'A::type hollight.list => 'B::type hollight.list.
  1.1953 @@ -2149,7 +2581,7 @@
  1.1954    by (import hollight DEF_MAP)
  1.1955  
  1.1956  constdefs
  1.1957 -  LAST :: "'A::type hollight.list => 'A::type" 
  1.1958 +  LAST :: "'A hollight.list => 'A" 
  1.1959    "LAST ==
  1.1960  SOME LAST::'A::type hollight.list => 'A::type.
  1.1961     ALL (h::'A::type) t::'A::type hollight.list.
  1.1962 @@ -2162,22 +2594,22 @@
  1.1963    by (import hollight DEF_LAST)
  1.1964  
  1.1965  constdefs
  1.1966 -  REPLICATE :: "nat => 'q_16809::type => 'q_16809::type hollight.list" 
  1.1967 +  REPLICATE :: "nat => 'q_16809 => 'q_16809 hollight.list" 
  1.1968    "REPLICATE ==
  1.1969  SOME REPLICATE::nat => 'q_16809::type => 'q_16809::type hollight.list.
  1.1970 -   (ALL x::'q_16809::type. REPLICATE (0::nat) x = NIL) &
  1.1971 +   (ALL x::'q_16809::type. REPLICATE 0 x = NIL) &
  1.1972     (ALL (n::nat) x::'q_16809::type.
  1.1973         REPLICATE (Suc n) x = CONS x (REPLICATE n x))"
  1.1974  
  1.1975  lemma DEF_REPLICATE: "REPLICATE =
  1.1976  (SOME REPLICATE::nat => 'q_16809::type => 'q_16809::type hollight.list.
  1.1977 -    (ALL x::'q_16809::type. REPLICATE (0::nat) x = NIL) &
  1.1978 +    (ALL x::'q_16809::type. REPLICATE 0 x = NIL) &
  1.1979      (ALL (n::nat) x::'q_16809::type.
  1.1980          REPLICATE (Suc n) x = CONS x (REPLICATE n x)))"
  1.1981    by (import hollight DEF_REPLICATE)
  1.1982  
  1.1983  constdefs
  1.1984 -  NULL :: "'q_16824::type hollight.list => bool" 
  1.1985 +  NULL :: "'q_16824 hollight.list => bool" 
  1.1986    "NULL ==
  1.1987  SOME NULL::'q_16824::type hollight.list => bool.
  1.1988     NULL NIL = True &
  1.1989 @@ -2192,7 +2624,7 @@
  1.1990    by (import hollight DEF_NULL)
  1.1991  
  1.1992  constdefs
  1.1993 -  ALL_list :: "('q_16844::type => bool) => 'q_16844::type hollight.list => bool" 
  1.1994 +  ALL_list :: "('q_16844 => bool) => 'q_16844 hollight.list => bool" 
  1.1995    "ALL_list ==
  1.1996  SOME u::('q_16844::type => bool) => 'q_16844::type hollight.list => bool.
  1.1997     (ALL P::'q_16844::type => bool. u P NIL = True) &
  1.1998 @@ -2207,7 +2639,7 @@
  1.1999    by (import hollight DEF_ALL)
  1.2000  
  1.2001  consts
  1.2002 -  EX :: "('q_16865::type => bool) => 'q_16865::type hollight.list => bool" ("EX")
  1.2003 +  EX :: "('q_16865 => bool) => 'q_16865 hollight.list => bool" ("EX")
  1.2004  
  1.2005  defs
  1.2006    EX_def: "EX ==
  1.2007 @@ -2224,8 +2656,8 @@
  1.2008    by (import hollight DEF_EX)
  1.2009  
  1.2010  constdefs
  1.2011 -  ITLIST :: "('q_16888::type => 'q_16887::type => 'q_16887::type)
  1.2012 -=> 'q_16888::type hollight.list => 'q_16887::type => 'q_16887::type" 
  1.2013 +  ITLIST :: "('q_16888 => 'q_16887 => 'q_16887)
  1.2014 +=> 'q_16888 hollight.list => 'q_16887 => 'q_16887" 
  1.2015    "ITLIST ==
  1.2016  SOME ITLIST::('q_16888::type => 'q_16887::type => 'q_16887::type)
  1.2017               => 'q_16888::type hollight.list
  1.2018 @@ -2250,7 +2682,7 @@
  1.2019    by (import hollight DEF_ITLIST)
  1.2020  
  1.2021  constdefs
  1.2022 -  MEM :: "'q_16913::type => 'q_16913::type hollight.list => bool" 
  1.2023 +  MEM :: "'q_16913 => 'q_16913 hollight.list => bool" 
  1.2024    "MEM ==
  1.2025  SOME MEM::'q_16913::type => 'q_16913::type hollight.list => bool.
  1.2026     (ALL x::'q_16913::type. MEM x NIL = False) &
  1.2027 @@ -2267,8 +2699,8 @@
  1.2028    by (import hollight DEF_MEM)
  1.2029  
  1.2030  constdefs
  1.2031 -  ALL2 :: "('q_16946::type => 'q_16953::type => bool)
  1.2032 -=> 'q_16946::type hollight.list => 'q_16953::type hollight.list => bool" 
  1.2033 +  ALL2 :: "('q_16946 => 'q_16953 => bool)
  1.2034 +=> 'q_16946 hollight.list => 'q_16953 hollight.list => bool" 
  1.2035    "ALL2 ==
  1.2036  SOME ALL2::('q_16946::type => 'q_16953::type => bool)
  1.2037             => 'q_16946::type hollight.list
  1.2038 @@ -2301,9 +2733,9 @@
  1.2039    by (import hollight ALL2)
  1.2040  
  1.2041  constdefs
  1.2042 -  MAP2 :: "('q_17038::type => 'q_17045::type => 'q_17035::type)
  1.2043 -=> 'q_17038::type hollight.list
  1.2044 -   => 'q_17045::type hollight.list => 'q_17035::type hollight.list" 
  1.2045 +  MAP2 :: "('q_17038 => 'q_17045 => 'q_17035)
  1.2046 +=> 'q_17038 hollight.list
  1.2047 +   => 'q_17045 hollight.list => 'q_17035 hollight.list" 
  1.2048    "MAP2 ==
  1.2049  SOME MAP2::('q_17038::type => 'q_17045::type => 'q_17035::type)
  1.2050             => 'q_17038::type hollight.list
  1.2051 @@ -2336,23 +2768,22 @@
  1.2052    by (import hollight MAP2)
  1.2053  
  1.2054  constdefs
  1.2055 -  EL :: "nat => 'q_17106::type hollight.list => 'q_17106::type" 
  1.2056 +  EL :: "nat => 'q_17106 hollight.list => 'q_17106" 
  1.2057    "EL ==
  1.2058  SOME EL::nat => 'q_17106::type hollight.list => 'q_17106::type.
  1.2059 -   (ALL l::'q_17106::type hollight.list. EL (0::nat) l = HD l) &
  1.2060 +   (ALL l::'q_17106::type hollight.list. EL 0 l = HD l) &
  1.2061     (ALL (n::nat) l::'q_17106::type hollight.list.
  1.2062         EL (Suc n) l = EL n (TL l))"
  1.2063  
  1.2064  lemma DEF_EL: "EL =
  1.2065  (SOME EL::nat => 'q_17106::type hollight.list => 'q_17106::type.
  1.2066 -    (ALL l::'q_17106::type hollight.list. EL (0::nat) l = HD l) &
  1.2067 +    (ALL l::'q_17106::type hollight.list. EL 0 l = HD l) &
  1.2068      (ALL (n::nat) l::'q_17106::type hollight.list.
  1.2069          EL (Suc n) l = EL n (TL l)))"
  1.2070    by (import hollight DEF_EL)
  1.2071  
  1.2072  constdefs
  1.2073 -  FILTER :: "('q_17131::type => bool)
  1.2074 -=> 'q_17131::type hollight.list => 'q_17131::type hollight.list" 
  1.2075 +  FILTER :: "('q_17131 => bool) => 'q_17131 hollight.list => 'q_17131 hollight.list" 
  1.2076    "FILTER ==
  1.2077  SOME FILTER::('q_17131::type => bool)
  1.2078               => 'q_17131::type hollight.list
  1.2079 @@ -2374,8 +2805,7 @@
  1.2080    by (import hollight DEF_FILTER)
  1.2081  
  1.2082  constdefs
  1.2083 -  ASSOC :: "'q_17160::type
  1.2084 -=> ('q_17160::type * 'q_17154::type) hollight.list => 'q_17154::type" 
  1.2085 +  ASSOC :: "'q_17160 => ('q_17160 * 'q_17154) hollight.list => 'q_17154" 
  1.2086    "ASSOC ==
  1.2087  SOME ASSOC::'q_17160::type
  1.2088              => ('q_17160::type * 'q_17154::type) hollight.list
  1.2089 @@ -2394,9 +2824,8 @@
  1.2090    by (import hollight DEF_ASSOC)
  1.2091  
  1.2092  constdefs
  1.2093 -  ITLIST2 :: "('q_17184::type => 'q_17192::type => 'q_17182::type => 'q_17182::type)
  1.2094 -=> 'q_17184::type hollight.list
  1.2095 -   => 'q_17192::type hollight.list => 'q_17182::type => 'q_17182::type" 
  1.2096 +  ITLIST2 :: "('q_17184 => 'q_17192 => 'q_17182 => 'q_17182)
  1.2097 +=> 'q_17184 hollight.list => 'q_17192 hollight.list => 'q_17182 => 'q_17182" 
  1.2098    "ITLIST2 ==
  1.2099  SOME ITLIST2::('q_17184::type
  1.2100                 => 'q_17192::type => 'q_17182::type => 'q_17182::type)
  1.2101 @@ -2443,9 +2872,8 @@
  1.2102    by (import hollight ITLIST2)
  1.2103  
  1.2104  consts
  1.2105 -  ZIP :: "'q_17256::type hollight.list
  1.2106 -=> 'q_17264::type hollight.list
  1.2107 -   => ('q_17256::type * 'q_17264::type) hollight.list" 
  1.2108 +  ZIP :: "'q_17256 hollight.list
  1.2109 +=> 'q_17264 hollight.list => ('q_17256 * 'q_17264) hollight.list" 
  1.2110  
  1.2111  defs
  1.2112    ZIP_def: "hollight.ZIP ==
  1.2113 @@ -2544,7 +2972,7 @@
  1.2114     LENGTH (MAP f l) = LENGTH l"
  1.2115    by (import hollight LENGTH_MAP)
  1.2116  
  1.2117 -lemma LENGTH_EQ_NIL: "ALL l::'A::type hollight.list. (LENGTH l = (0::nat)) = (l = NIL)"
  1.2118 +lemma LENGTH_EQ_NIL: "ALL l::'A::type hollight.list. (LENGTH l = 0) = (l = NIL)"
  1.2119    by (import hollight LENGTH_EQ_NIL)
  1.2120  
  1.2121  lemma LENGTH_EQ_CONS: "ALL (l::'q_17608::type hollight.list) n::nat.
  1.2122 @@ -2748,13 +3176,13 @@
  1.2123  lemma DEF_dist: "dist = (%u::nat * nat. fst u - snd u + (snd u - fst u))"
  1.2124    by (import hollight DEF_dist)
  1.2125  
  1.2126 -lemma DIST_REFL: "ALL x::nat. dist (x, x) = (0::nat)"
  1.2127 +lemma DIST_REFL: "ALL x::nat. dist (x, x) = 0"
  1.2128    by (import hollight DIST_REFL)
  1.2129  
  1.2130 -lemma DIST_LZERO: "ALL x::nat. dist (0::nat, x) = x"
  1.2131 +lemma DIST_LZERO: "ALL x::nat. dist (0, x) = x"
  1.2132    by (import hollight DIST_LZERO)
  1.2133  
  1.2134 -lemma DIST_RZERO: "ALL x::nat. dist (x, 0::nat) = x"
  1.2135 +lemma DIST_RZERO: "ALL x::nat. dist (x, 0) = x"
  1.2136    by (import hollight DIST_RZERO)
  1.2137  
  1.2138  lemma DIST_SYM: "ALL (x::nat) xa::nat. dist (x, xa) = dist (xa, x)"
  1.2139 @@ -2778,7 +3206,7 @@
  1.2140  lemma DIST_RMUL: "ALL (x::nat) (xa::nat) xb::nat. dist (x, xa) * xb = dist (x * xb, xa * xb)"
  1.2141    by (import hollight DIST_RMUL)
  1.2142  
  1.2143 -lemma DIST_EQ_0: "ALL (x::nat) xa::nat. (dist (x, xa) = (0::nat)) = (x = xa)"
  1.2144 +lemma DIST_EQ_0: "ALL (x::nat) xa::nat. (dist (x, xa) = 0) = (x = xa)"
  1.2145    by (import hollight DIST_EQ_0)
  1.2146  
  1.2147  lemma DIST_ELIM_THM: "(P::nat => bool) (dist (x::nat, y::nat)) =
  1.2148 @@ -2815,7 +3243,7 @@
  1.2149  lemma BOUNDS_LINEAR: "ALL (A::nat) (B::nat) C::nat. (ALL n::nat. <= (A * n) (B * n + C)) = <= A B"
  1.2150    by (import hollight BOUNDS_LINEAR)
  1.2151  
  1.2152 -lemma BOUNDS_LINEAR_0: "ALL (A::nat) B::nat. (ALL n::nat. <= (A * n) B) = (A = (0::nat))"
  1.2153 +lemma BOUNDS_LINEAR_0: "ALL (A::nat) B::nat. (ALL n::nat. <= (A * n) B) = (A = 0)"
  1.2154    by (import hollight BOUNDS_LINEAR_0)
  1.2155  
  1.2156  lemma BOUNDS_DIVIDED: "ALL P::nat => nat.
  1.2157 @@ -2824,8 +3252,7 @@
  1.2158    by (import hollight BOUNDS_DIVIDED)
  1.2159  
  1.2160  lemma BOUNDS_NOTZERO: "ALL (P::nat => nat => nat) (A::nat) B::nat.
  1.2161 -   P (0::nat) (0::nat) = (0::nat) &
  1.2162 -   (ALL (m::nat) n::nat. <= (P m n) (A * (m + n) + B)) -->
  1.2163 +   P 0 0 = 0 & (ALL (m::nat) n::nat. <= (P m n) (A * (m + n) + B)) -->
  1.2164     (EX x::nat. ALL (m::nat) n::nat. <= (P m n) (x * (m + n)))"
  1.2165    by (import hollight BOUNDS_NOTZERO)
  1.2166  
  1.2167 @@ -2847,11 +3274,11 @@
  1.2168         ALL (m::nat) n::nat. <= (dist (m * u n, n * u m)) (B * (m + n)))"
  1.2169    by (import hollight DEF_is_nadd)
  1.2170  
  1.2171 -lemma is_nadd_0: "is_nadd (%n::nat. 0::nat)"
  1.2172 +lemma is_nadd_0: "is_nadd (%n::nat. 0)"
  1.2173    by (import hollight is_nadd_0)
  1.2174  
  1.2175  typedef (open) nadd = "Collect is_nadd"  morphisms "dest_nadd" "mk_nadd"
  1.2176 -  apply (rule light_ex_imp_nonempty[where t="%n::nat. NUMERAL (0::nat)"])
  1.2177 +  apply (rule light_ex_imp_nonempty[where t="%n::nat. NUMERAL 0"])
  1.2178    by (import hollight TYDEF_nadd)
  1.2179  
  1.2180  syntax
  1.2181 @@ -2978,8 +3405,7 @@
  1.2182  
  1.2183  lemma NADD_LE_TOTAL_LEMMA: "ALL (x::nadd) y::nadd.
  1.2184     ~ nadd_le x y -->
  1.2185 -   (ALL B::nat.
  1.2186 -       EX n::nat. n ~= (0::nat) & < (dest_nadd y n + B) (dest_nadd x n))"
  1.2187 +   (ALL B::nat. EX n::nat. n ~= 0 & < (dest_nadd y n + B) (dest_nadd x n))"
  1.2188    by (import hollight NADD_LE_TOTAL_LEMMA)
  1.2189  
  1.2190  lemma NADD_LE_TOTAL: "ALL (x::nadd) y::nadd. nadd_le x y | nadd_le y x"
  1.2191 @@ -3015,7 +3441,7 @@
  1.2192     nadd_eq (nadd_add x (nadd_add y z)) (nadd_add (nadd_add x y) z)"
  1.2193    by (import hollight NADD_ADD_ASSOC)
  1.2194  
  1.2195 -lemma NADD_ADD_LID: "ALL x::nadd. nadd_eq (nadd_add (nadd_of_num (0::nat)) x) x"
  1.2196 +lemma NADD_ADD_LID: "ALL x::nadd. nadd_eq (nadd_add (nadd_of_num 0) x) x"
  1.2197    by (import hollight NADD_ADD_LID)
  1.2198  
  1.2199  lemma NADD_ADD_LCANCEL: "ALL (x::nadd) (y::nadd) z::nadd.
  1.2200 @@ -3054,7 +3480,7 @@
  1.2201     nadd_eq (nadd_mul x (nadd_mul y z)) (nadd_mul (nadd_mul x y) z)"
  1.2202    by (import hollight NADD_MUL_ASSOC)
  1.2203  
  1.2204 -lemma NADD_MUL_LID: "ALL x::nadd. nadd_eq (nadd_mul (nadd_of_num (NUMERAL_BIT1 (0::nat))) x) x"
  1.2205 +lemma NADD_MUL_LID: "ALL x::nadd. nadd_eq (nadd_mul (nadd_of_num (NUMERAL_BIT1 0)) x) x"
  1.2206    by (import hollight NADD_MUL_LID)
  1.2207  
  1.2208  lemma NADD_LDISTRIB: "ALL (x::nadd) (y::nadd) z::nadd.
  1.2209 @@ -3075,7 +3501,7 @@
  1.2210      (nadd_of_num (x * xa))"
  1.2211    by (import hollight NADD_OF_NUM_MUL)
  1.2212  
  1.2213 -lemma NADD_LE_0: "All (nadd_le (nadd_of_num (0::nat)))"
  1.2214 +lemma NADD_LE_0: "All (nadd_le (nadd_of_num 0))"
  1.2215    by (import hollight NADD_LE_0)
  1.2216  
  1.2217  lemma NADD_EQ_IMP_LE: "ALL (x::nadd) y::nadd. nadd_eq x y --> nadd_le x y"
  1.2218 @@ -3103,13 +3529,13 @@
  1.2219    by (import hollight NADD_RDISTRIB)
  1.2220  
  1.2221  lemma NADD_ARCH_MULT: "ALL (x::nadd) k::nat.
  1.2222 -   ~ nadd_eq x (nadd_of_num (0::nat)) -->
  1.2223 +   ~ nadd_eq x (nadd_of_num 0) -->
  1.2224     (EX xa::nat. nadd_le (nadd_of_num k) (nadd_mul (nadd_of_num xa) x))"
  1.2225    by (import hollight NADD_ARCH_MULT)
  1.2226  
  1.2227  lemma NADD_ARCH_ZERO: "ALL (x::nadd) k::nadd.
  1.2228     (ALL n::nat. nadd_le (nadd_mul (nadd_of_num n) x) k) -->
  1.2229 -   nadd_eq x (nadd_of_num (0::nat))"
  1.2230 +   nadd_eq x (nadd_of_num 0)"
  1.2231    by (import hollight NADD_ARCH_ZERO)
  1.2232  
  1.2233  lemma NADD_ARCH_LEMMA: "ALL (x::nadd) (y::nadd) z::nadd.
  1.2234 @@ -3131,12 +3557,12 @@
  1.2235    by (import hollight NADD_UBOUND)
  1.2236  
  1.2237  lemma NADD_NONZERO: "ALL x::nadd.
  1.2238 -   ~ nadd_eq x (nadd_of_num (0::nat)) -->
  1.2239 -   (EX N::nat. ALL n::nat. <= N n --> dest_nadd x n ~= (0::nat))"
  1.2240 +   ~ nadd_eq x (nadd_of_num 0) -->
  1.2241 +   (EX N::nat. ALL n::nat. <= N n --> dest_nadd x n ~= 0)"
  1.2242    by (import hollight NADD_NONZERO)
  1.2243  
  1.2244  lemma NADD_LBOUND: "ALL x::nadd.
  1.2245 -   ~ nadd_eq x (nadd_of_num (0::nat)) -->
  1.2246 +   ~ nadd_eq x (nadd_of_num 0) -->
  1.2247     (EX (A::nat) N::nat. ALL n::nat. <= N n --> <= n (A * dest_nadd x n))"
  1.2248    by (import hollight NADD_LBOUND)
  1.2249  
  1.2250 @@ -3148,17 +3574,17 @@
  1.2251    by (import hollight DEF_nadd_rinv)
  1.2252  
  1.2253  lemma NADD_MUL_LINV_LEMMA0: "ALL x::nadd.
  1.2254 -   ~ nadd_eq x (nadd_of_num (0::nat)) -->
  1.2255 +   ~ nadd_eq x (nadd_of_num 0) -->
  1.2256     (EX (xa::nat) B::nat. ALL i::nat. <= (nadd_rinv x i) (xa * i + B))"
  1.2257    by (import hollight NADD_MUL_LINV_LEMMA0)
  1.2258  
  1.2259  lemma NADD_MUL_LINV_LEMMA1: "ALL (x::nadd) n::nat.
  1.2260 -   dest_nadd x n ~= (0::nat) -->
  1.2261 +   dest_nadd x n ~= 0 -->
  1.2262     <= (dist (dest_nadd x n * nadd_rinv x n, n * n)) (dest_nadd x n)"
  1.2263    by (import hollight NADD_MUL_LINV_LEMMA1)
  1.2264  
  1.2265  lemma NADD_MUL_LINV_LEMMA2: "ALL x::nadd.
  1.2266 -   ~ nadd_eq x (nadd_of_num (0::nat)) -->
  1.2267 +   ~ nadd_eq x (nadd_of_num 0) -->
  1.2268     (EX N::nat.
  1.2269         ALL n::nat.
  1.2270            <= N n -->
  1.2271 @@ -3166,7 +3592,7 @@
  1.2272    by (import hollight NADD_MUL_LINV_LEMMA2)
  1.2273  
  1.2274  lemma NADD_MUL_LINV_LEMMA3: "ALL x::nadd.
  1.2275 -   ~ nadd_eq x (nadd_of_num (0::nat)) -->
  1.2276 +   ~ nadd_eq x (nadd_of_num 0) -->
  1.2277     (EX N::nat.
  1.2278         ALL (m::nat) n::nat.
  1.2279            <= N n -->
  1.2280 @@ -3177,7 +3603,7 @@
  1.2281    by (import hollight NADD_MUL_LINV_LEMMA3)
  1.2282  
  1.2283  lemma NADD_MUL_LINV_LEMMA4: "ALL x::nadd.
  1.2284 -   ~ nadd_eq x (nadd_of_num (0::nat)) -->
  1.2285 +   ~ nadd_eq x (nadd_of_num 0) -->
  1.2286     (EX N::nat.
  1.2287         ALL (m::nat) n::nat.
  1.2288            <= N m & <= N n -->
  1.2289 @@ -3188,7 +3614,7 @@
  1.2290    by (import hollight NADD_MUL_LINV_LEMMA4)
  1.2291  
  1.2292  lemma NADD_MUL_LINV_LEMMA5: "ALL x::nadd.
  1.2293 -   ~ nadd_eq x (nadd_of_num (0::nat)) -->
  1.2294 +   ~ nadd_eq x (nadd_of_num 0) -->
  1.2295     (EX (B::nat) N::nat.
  1.2296         ALL (m::nat) n::nat.
  1.2297            <= N m & <= N n -->
  1.2298 @@ -3198,7 +3624,7 @@
  1.2299    by (import hollight NADD_MUL_LINV_LEMMA5)
  1.2300  
  1.2301  lemma NADD_MUL_LINV_LEMMA6: "ALL x::nadd.
  1.2302 -   ~ nadd_eq x (nadd_of_num (0::nat)) -->
  1.2303 +   ~ nadd_eq x (nadd_of_num 0) -->
  1.2304     (EX (B::nat) N::nat.
  1.2305         ALL (m::nat) n::nat.
  1.2306            <= N m & <= N n -->
  1.2307 @@ -3207,7 +3633,7 @@
  1.2308    by (import hollight NADD_MUL_LINV_LEMMA6)
  1.2309  
  1.2310  lemma NADD_MUL_LINV_LEMMA7: "ALL x::nadd.
  1.2311 -   ~ nadd_eq x (nadd_of_num (0::nat)) -->
  1.2312 +   ~ nadd_eq x (nadd_of_num 0) -->
  1.2313     (EX (B::nat) N::nat.
  1.2314         ALL (m::nat) n::nat.
  1.2315            <= N m & <= N n -->
  1.2316 @@ -3215,7 +3641,7 @@
  1.2317    by (import hollight NADD_MUL_LINV_LEMMA7)
  1.2318  
  1.2319  lemma NADD_MUL_LINV_LEMMA7a: "ALL x::nadd.
  1.2320 -   ~ nadd_eq x (nadd_of_num (0::nat)) -->
  1.2321 +   ~ nadd_eq x (nadd_of_num 0) -->
  1.2322     (ALL N::nat.
  1.2323         EX (A::nat) B::nat.
  1.2324            ALL (m::nat) n::nat.
  1.2325 @@ -3224,7 +3650,7 @@
  1.2326    by (import hollight NADD_MUL_LINV_LEMMA7a)
  1.2327  
  1.2328  lemma NADD_MUL_LINV_LEMMA8: "ALL x::nadd.
  1.2329 -   ~ nadd_eq x (nadd_of_num (0::nat)) -->
  1.2330 +   ~ nadd_eq x (nadd_of_num 0) -->
  1.2331     (EX B::nat.
  1.2332         ALL (m::nat) n::nat.
  1.2333            <= (dist (m * nadd_rinv x n, n * nadd_rinv x m)) (B * (m + n)))"
  1.2334 @@ -3234,26 +3660,25 @@
  1.2335    nadd_inv :: "nadd => nadd" 
  1.2336    "nadd_inv ==
  1.2337  %u::nadd.
  1.2338 -   COND (nadd_eq u (nadd_of_num (0::nat))) (nadd_of_num (0::nat))
  1.2339 -    (mk_nadd (nadd_rinv u))"
  1.2340 +   COND (nadd_eq u (nadd_of_num 0)) (nadd_of_num 0) (mk_nadd (nadd_rinv u))"
  1.2341  
  1.2342  lemma DEF_nadd_inv: "nadd_inv =
  1.2343  (%u::nadd.
  1.2344 -    COND (nadd_eq u (nadd_of_num (0::nat))) (nadd_of_num (0::nat))
  1.2345 +    COND (nadd_eq u (nadd_of_num 0)) (nadd_of_num 0)
  1.2346       (mk_nadd (nadd_rinv u)))"
  1.2347    by (import hollight DEF_nadd_inv)
  1.2348  
  1.2349  lemma NADD_INV: "ALL x::nadd.
  1.2350     dest_nadd (nadd_inv x) =
  1.2351 -   COND (nadd_eq x (nadd_of_num (0::nat))) (%n::nat. 0::nat) (nadd_rinv x)"
  1.2352 +   COND (nadd_eq x (nadd_of_num 0)) (%n::nat. 0) (nadd_rinv x)"
  1.2353    by (import hollight NADD_INV)
  1.2354  
  1.2355  lemma NADD_MUL_LINV: "ALL x::nadd.
  1.2356 -   ~ nadd_eq x (nadd_of_num (0::nat)) -->
  1.2357 -   nadd_eq (nadd_mul (nadd_inv x) x) (nadd_of_num (NUMERAL_BIT1 (0::nat)))"
  1.2358 +   ~ nadd_eq x (nadd_of_num 0) -->
  1.2359 +   nadd_eq (nadd_mul (nadd_inv x) x) (nadd_of_num (NUMERAL_BIT1 0))"
  1.2360    by (import hollight NADD_MUL_LINV)
  1.2361  
  1.2362 -lemma NADD_INV_0: "nadd_eq (nadd_inv (nadd_of_num (0::nat))) (nadd_of_num (0::nat))"
  1.2363 +lemma NADD_INV_0: "nadd_eq (nadd_inv (nadd_of_num 0)) (nadd_of_num 0)"
  1.2364    by (import hollight NADD_INV_0)
  1.2365  
  1.2366  lemma NADD_INV_WELLDEF: "ALL (x::nadd) y::nadd. nadd_eq x y --> nadd_eq (nadd_inv x) (nadd_inv y)"
  1.2367 @@ -3361,7 +3786,7 @@
  1.2368     hreal_le (hreal_add x xb) (hreal_add xa xb) = hreal_le x xa"
  1.2369    by (import hollight HREAL_LE_ADD_RCANCEL)
  1.2370  
  1.2371 -lemma HREAL_ADD_RID: "ALL x::hreal. hreal_add x (hreal_of_num (0::nat)) = x"
  1.2372 +lemma HREAL_ADD_RID: "ALL x::hreal. hreal_add x (hreal_of_num 0) = x"
  1.2373    by (import hollight HREAL_ADD_RID)
  1.2374  
  1.2375  lemma HREAL_ADD_RDISTRIB: "ALL (x::hreal) (xa::hreal) xb::hreal.
  1.2376 @@ -3369,10 +3794,10 @@
  1.2377     hreal_add (hreal_mul x xb) (hreal_mul xa xb)"
  1.2378    by (import hollight HREAL_ADD_RDISTRIB)
  1.2379  
  1.2380 -lemma HREAL_MUL_LZERO: "ALL m::hreal. hreal_mul (hreal_of_num (0::nat)) m = hreal_of_num (0::nat)"
  1.2381 +lemma HREAL_MUL_LZERO: "ALL m::hreal. hreal_mul (hreal_of_num 0) m = hreal_of_num 0"
  1.2382    by (import hollight HREAL_MUL_LZERO)
  1.2383  
  1.2384 -lemma HREAL_MUL_RZERO: "ALL x::hreal. hreal_mul x (hreal_of_num (0::nat)) = hreal_of_num (0::nat)"
  1.2385 +lemma HREAL_MUL_RZERO: "ALL x::hreal. hreal_mul x (hreal_of_num 0) = hreal_of_num 0"
  1.2386    by (import hollight HREAL_MUL_RZERO)
  1.2387  
  1.2388  lemma HREAL_ADD_AC: "hreal_add (m::hreal) (n::hreal) = hreal_add n m &
  1.2389 @@ -3390,9 +3815,9 @@
  1.2390  
  1.2391  constdefs
  1.2392    treal_of_num :: "nat => hreal * hreal" 
  1.2393 -  "treal_of_num == %u::nat. (hreal_of_num u, hreal_of_num (0::nat))"
  1.2394 -
  1.2395 -lemma DEF_treal_of_num: "treal_of_num = (%u::nat. (hreal_of_num u, hreal_of_num (0::nat)))"
  1.2396 +  "treal_of_num == %u::nat. (hreal_of_num u, hreal_of_num 0)"
  1.2397 +
  1.2398 +lemma DEF_treal_of_num: "treal_of_num = (%u::nat. (hreal_of_num u, hreal_of_num 0))"
  1.2399    by (import hollight DEF_treal_of_num)
  1.2400  
  1.2401  constdefs
  1.2402 @@ -3441,20 +3866,20 @@
  1.2403    treal_inv :: "hreal * hreal => hreal * hreal" 
  1.2404    "treal_inv ==
  1.2405  %u::hreal * hreal.
  1.2406 -   COND (fst u = snd u) (hreal_of_num (0::nat), hreal_of_num (0::nat))
  1.2407 +   COND (fst u = snd u) (hreal_of_num 0, hreal_of_num 0)
  1.2408      (COND (hreal_le (snd u) (fst u))
  1.2409        (hreal_inv (SOME d::hreal. fst u = hreal_add (snd u) d),
  1.2410 -       hreal_of_num (0::nat))
  1.2411 -      (hreal_of_num (0::nat),
  1.2412 +       hreal_of_num 0)
  1.2413 +      (hreal_of_num 0,
  1.2414         hreal_inv (SOME d::hreal. snd u = hreal_add (fst u) d)))"
  1.2415  
  1.2416  lemma DEF_treal_inv: "treal_inv =
  1.2417  (%u::hreal * hreal.
  1.2418 -    COND (fst u = snd u) (hreal_of_num (0::nat), hreal_of_num (0::nat))
  1.2419 +    COND (fst u = snd u) (hreal_of_num 0, hreal_of_num 0)
  1.2420       (COND (hreal_le (snd u) (fst u))
  1.2421         (hreal_inv (SOME d::hreal. fst u = hreal_add (snd u) d),
  1.2422 -        hreal_of_num (0::nat))
  1.2423 -       (hreal_of_num (0::nat),
  1.2424 +        hreal_of_num 0)
  1.2425 +       (hreal_of_num 0,
  1.2426          hreal_inv (SOME d::hreal. snd u = hreal_add (fst u) d))))"
  1.2427    by (import hollight DEF_treal_inv)
  1.2428  
  1.2429 @@ -3512,11 +3937,10 @@
  1.2430     treal_eq (treal_add x (treal_add y z)) (treal_add (treal_add x y) z)"
  1.2431    by (import hollight TREAL_ADD_ASSOC)
  1.2432  
  1.2433 -lemma TREAL_ADD_LID: "ALL x::hreal * hreal. treal_eq (treal_add (treal_of_num (0::nat)) x) x"
  1.2434 +lemma TREAL_ADD_LID: "ALL x::hreal * hreal. treal_eq (treal_add (treal_of_num 0) x) x"
  1.2435    by (import hollight TREAL_ADD_LID)
  1.2436  
  1.2437 -lemma TREAL_ADD_LINV: "ALL x::hreal * hreal.
  1.2438 -   treal_eq (treal_add (treal_neg x) x) (treal_of_num (0::nat))"
  1.2439 +lemma TREAL_ADD_LINV: "ALL x::hreal * hreal. treal_eq (treal_add (treal_neg x) x) (treal_of_num 0)"
  1.2440    by (import hollight TREAL_ADD_LINV)
  1.2441  
  1.2442  lemma TREAL_MUL_SYM: "ALL (x::hreal * hreal) y::hreal * hreal.
  1.2443 @@ -3528,7 +3952,7 @@
  1.2444    by (import hollight TREAL_MUL_ASSOC)
  1.2445  
  1.2446  lemma TREAL_MUL_LID: "ALL x::hreal * hreal.
  1.2447 -   treal_eq (treal_mul (treal_of_num (NUMERAL_BIT1 (0::nat))) x) x"
  1.2448 +   treal_eq (treal_mul (treal_of_num (NUMERAL_BIT1 0)) x) x"
  1.2449    by (import hollight TREAL_MUL_LID)
  1.2450  
  1.2451  lemma TREAL_ADD_LDISTRIB: "ALL (x::hreal * hreal) (y::hreal * hreal) z::hreal * hreal.
  1.2452 @@ -3555,18 +3979,16 @@
  1.2453    by (import hollight TREAL_LE_LADD_IMP)
  1.2454  
  1.2455  lemma TREAL_LE_MUL: "ALL (x::hreal * hreal) y::hreal * hreal.
  1.2456 -   treal_le (treal_of_num (0::nat)) x &
  1.2457 -   treal_le (treal_of_num (0::nat)) y -->
  1.2458 -   treal_le (treal_of_num (0::nat)) (treal_mul x y)"
  1.2459 +   treal_le (treal_of_num 0) x & treal_le (treal_of_num 0) y -->
  1.2460 +   treal_le (treal_of_num 0) (treal_mul x y)"
  1.2461    by (import hollight TREAL_LE_MUL)
  1.2462  
  1.2463 -lemma TREAL_INV_0: "treal_eq (treal_inv (treal_of_num (0::nat))) (treal_of_num (0::nat))"
  1.2464 +lemma TREAL_INV_0: "treal_eq (treal_inv (treal_of_num 0)) (treal_of_num 0)"
  1.2465    by (import hollight TREAL_INV_0)
  1.2466  
  1.2467  lemma TREAL_MUL_LINV: "ALL x::hreal * hreal.
  1.2468 -   ~ treal_eq x (treal_of_num (0::nat)) -->
  1.2469 -   treal_eq (treal_mul (treal_inv x) x)
  1.2470 -    (treal_of_num (NUMERAL_BIT1 (0::nat)))"
  1.2471 +   ~ treal_eq x (treal_of_num 0) -->
  1.2472 +   treal_eq (treal_mul (treal_inv x) x) (treal_of_num (NUMERAL_BIT1 0))"
  1.2473    by (import hollight TREAL_MUL_LINV)
  1.2474  
  1.2475  lemma TREAL_OF_NUM_WELLDEF: "ALL (m::nat) n::nat. m = n --> treal_eq (treal_of_num m) (treal_of_num n)"
  1.2476 @@ -3749,25 +4171,23 @@
  1.2477  constdefs
  1.2478    real_abs :: "hollight.real => hollight.real" 
  1.2479    "real_abs ==
  1.2480 -%u::hollight.real. COND (real_le (real_of_num (0::nat)) u) u (real_neg u)"
  1.2481 +%u::hollight.real. COND (real_le (real_of_num 0) u) u (real_neg u)"
  1.2482  
  1.2483  lemma DEF_real_abs: "real_abs =
  1.2484 -(%u::hollight.real. COND (real_le (real_of_num (0::nat)) u) u (real_neg u))"
  1.2485 +(%u::hollight.real. COND (real_le (real_of_num 0) u) u (real_neg u))"
  1.2486    by (import hollight DEF_real_abs)
  1.2487  
  1.2488  constdefs
  1.2489    real_pow :: "hollight.real => nat => hollight.real" 
  1.2490    "real_pow ==
  1.2491  SOME real_pow::hollight.real => nat => hollight.real.
  1.2492 -   (ALL x::hollight.real.
  1.2493 -       real_pow x (0::nat) = real_of_num (NUMERAL_BIT1 (0::nat))) &
  1.2494 +   (ALL x::hollight.real. real_pow x 0 = real_of_num (NUMERAL_BIT1 0)) &
  1.2495     (ALL (x::hollight.real) n::nat.
  1.2496         real_pow x (Suc n) = real_mul x (real_pow x n))"
  1.2497  
  1.2498  lemma DEF_real_pow: "real_pow =
  1.2499  (SOME real_pow::hollight.real => nat => hollight.real.
  1.2500 -    (ALL x::hollight.real.
  1.2501 -        real_pow x (0::nat) = real_of_num (NUMERAL_BIT1 (0::nat))) &
  1.2502 +    (ALL x::hollight.real. real_pow x 0 = real_of_num (NUMERAL_BIT1 0)) &
  1.2503      (ALL (x::hollight.real) n::nat.
  1.2504          real_pow x (Suc n) = real_mul x (real_pow x n)))"
  1.2505    by (import hollight DEF_real_pow)
  1.2506 @@ -3795,20 +4215,19 @@
  1.2507  
  1.2508  lemma REAL_HREAL_LEMMA1: "EX x::hreal => hollight.real.
  1.2509     (ALL xa::hollight.real.
  1.2510 -       real_le (real_of_num (0::nat)) xa = (EX y::hreal. xa = x y)) &
  1.2511 +       real_le (real_of_num 0) xa = (EX y::hreal. xa = x y)) &
  1.2512     (ALL (y::hreal) z::hreal. hreal_le y z = real_le (x y) (x z))"
  1.2513    by (import hollight REAL_HREAL_LEMMA1)
  1.2514  
  1.2515  lemma REAL_HREAL_LEMMA2: "EX (x::hollight.real => hreal) r::hreal => hollight.real.
  1.2516     (ALL xa::hreal. x (r xa) = xa) &
  1.2517 -   (ALL xa::hollight.real.
  1.2518 -       real_le (real_of_num (0::nat)) xa --> r (x xa) = xa) &
  1.2519 -   (ALL x::hreal. real_le (real_of_num (0::nat)) (r x)) &
  1.2520 +   (ALL xa::hollight.real. real_le (real_of_num 0) xa --> r (x xa) = xa) &
  1.2521 +   (ALL x::hreal. real_le (real_of_num 0) (r x)) &
  1.2522     (ALL (x::hreal) y::hreal. hreal_le x y = real_le (r x) (r y))"
  1.2523    by (import hollight REAL_HREAL_LEMMA2)
  1.2524  
  1.2525  lemma REAL_COMPLETE_SOMEPOS: "ALL P::hollight.real => bool.
  1.2526 -   (EX x::hollight.real. P x & real_le (real_of_num (0::nat)) x) &
  1.2527 +   (EX x::hollight.real. P x & real_le (real_of_num 0) x) &
  1.2528     (EX M::hollight.real. ALL x::hollight.real. P x --> real_le x M) -->
  1.2529     (EX M::hollight.real.
  1.2530         (ALL x::hollight.real. P x --> real_le x M) &
  1.2531 @@ -3830,7 +4249,7 @@
  1.2532  real_add m (real_add n p) = real_add n (real_add m p)"
  1.2533    by (import hollight REAL_ADD_AC)
  1.2534  
  1.2535 -lemma REAL_ADD_RINV: "ALL x::hollight.real. real_add x (real_neg x) = real_of_num (0::nat)"
  1.2536 +lemma REAL_ADD_RINV: "ALL x::hollight.real. real_add x (real_neg x) = real_of_num 0"
  1.2537    by (import hollight REAL_ADD_RINV)
  1.2538  
  1.2539  lemma REAL_EQ_ADD_LCANCEL: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.2540 @@ -3852,11 +4271,11 @@
  1.2541     real_mul (real_neg x) y = real_neg (real_mul x y)"
  1.2542    by (import hollight REAL_MUL_LNEG)
  1.2543  
  1.2544 -lemma REAL_ADD_RID: "ALL x::hollight.real. real_add x (real_of_num (0::nat)) = x"
  1.2545 +lemma REAL_ADD_RID: "ALL x::hollight.real. real_add x (real_of_num 0) = x"
  1.2546    by (import hollight REAL_ADD_RID)
  1.2547  
  1.2548  lemma REAL_LE_LNEG: "ALL (x::hollight.real) y::hollight.real.
  1.2549 -   real_le (real_neg x) y = real_le (real_of_num (0::nat)) (real_add x y)"
  1.2550 +   real_le (real_neg x) y = real_le (real_of_num 0) (real_add x y)"
  1.2551    by (import hollight REAL_LE_LNEG)
  1.2552  
  1.2553  lemma REAL_LE_NEG2: "ALL (x::hollight.real) y::hollight.real.
  1.2554 @@ -3864,7 +4283,7 @@
  1.2555    by (import hollight REAL_LE_NEG2)
  1.2556  
  1.2557  lemma REAL_LE_RNEG: "ALL (x::hollight.real) y::hollight.real.
  1.2558 -   real_le x (real_neg y) = real_le (real_add x y) (real_of_num (0::nat))"
  1.2559 +   real_le x (real_neg y) = real_le (real_add x y) (real_of_num 0)"
  1.2560    by (import hollight REAL_LE_RNEG)
  1.2561  
  1.2562  lemma REAL_OF_NUM_POW: "ALL (x::nat) n::nat. real_pow (real_of_num x) n = real_of_num (EXP x n)"
  1.2563 @@ -3896,8 +4315,8 @@
  1.2564    by (import hollight REAL_LT_TRANS)
  1.2565  
  1.2566  lemma REAL_LE_ADD: "ALL (x::hollight.real) y::hollight.real.
  1.2567 -   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) y -->
  1.2568 -   real_le (real_of_num (0::nat)) (real_add x y)"
  1.2569 +   real_le (real_of_num 0) x & real_le (real_of_num 0) y -->
  1.2570 +   real_le (real_of_num 0) (real_add x y)"
  1.2571    by (import hollight REAL_LE_ADD)
  1.2572  
  1.2573  lemma REAL_LTE_ANTISYM: "ALL (x::hollight.real) y::hollight.real. ~ (real_lt x y & real_le y x)"
  1.2574 @@ -3907,46 +4326,40 @@
  1.2575    by (import hollight REAL_LT_REFL)
  1.2576  
  1.2577  lemma REAL_LET_ADD: "ALL (x::hollight.real) y::hollight.real.
  1.2578 -   real_le (real_of_num (0::nat)) x & real_lt (real_of_num (0::nat)) y -->
  1.2579 -   real_lt (real_of_num (0::nat)) (real_add x y)"
  1.2580 +   real_le (real_of_num 0) x & real_lt (real_of_num 0) y -->
  1.2581 +   real_lt (real_of_num 0) (real_add x y)"
  1.2582    by (import hollight REAL_LET_ADD)
  1.2583  
  1.2584  lemma REAL_ENTIRE: "ALL (x::hollight.real) y::hollight.real.
  1.2585 -   (real_mul x y = real_of_num (0::nat)) =
  1.2586 -   (x = real_of_num (0::nat) | y = real_of_num (0::nat))"
  1.2587 +   (real_mul x y = real_of_num 0) = (x = real_of_num 0 | y = real_of_num 0)"
  1.2588    by (import hollight REAL_ENTIRE)
  1.2589  
  1.2590  lemma REAL_POW_2: "ALL x::hollight.real.
  1.2591 -   real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = real_mul x x"
  1.2592 +   real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 0)) = real_mul x x"
  1.2593    by (import hollight REAL_POW_2)
  1.2594  
  1.2595  lemma REAL_POLY_CLAUSES: "(ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.2596      real_add x (real_add y z) = real_add (real_add x y) z) &
  1.2597  (ALL (x::hollight.real) y::hollight.real. real_add x y = real_add y x) &
  1.2598 -(ALL x::hollight.real. real_add (real_of_num (0::nat)) x = x) &
  1.2599 +(ALL x::hollight.real. real_add (real_of_num 0) x = x) &
  1.2600  (ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.2601      real_mul x (real_mul y z) = real_mul (real_mul x y) z) &
  1.2602  (ALL (x::hollight.real) y::hollight.real. real_mul x y = real_mul y x) &
  1.2603 -(ALL x::hollight.real.
  1.2604 -    real_mul (real_of_num (NUMERAL_BIT1 (0::nat))) x = x) &
  1.2605 -(ALL x::hollight.real.
  1.2606 -    real_mul (real_of_num (0::nat)) x = real_of_num (0::nat)) &
  1.2607 +(ALL x::hollight.real. real_mul (real_of_num (NUMERAL_BIT1 0)) x = x) &
  1.2608 +(ALL x::hollight.real. real_mul (real_of_num 0) x = real_of_num 0) &
  1.2609  (ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
  1.2610      real_mul x (real_add xa xb) =
  1.2611      real_add (real_mul x xa) (real_mul x xb)) &
  1.2612 -(ALL x::hollight.real.
  1.2613 -    real_pow x (0::nat) = real_of_num (NUMERAL_BIT1 (0::nat))) &
  1.2614 +(ALL x::hollight.real. real_pow x 0 = real_of_num (NUMERAL_BIT1 0)) &
  1.2615  (ALL (x::hollight.real) xa::nat.
  1.2616      real_pow x (Suc xa) = real_mul x (real_pow x xa))"
  1.2617    by (import hollight REAL_POLY_CLAUSES)
  1.2618  
  1.2619  lemma REAL_POLY_NEG_CLAUSES: "(ALL x::hollight.real.
  1.2620 -    real_neg x =
  1.2621 -    real_mul (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) x) &
  1.2622 +    real_neg x = real_mul (real_neg (real_of_num (NUMERAL_BIT1 0))) x) &
  1.2623  (ALL (x::hollight.real) xa::hollight.real.
  1.2624      real_sub x xa =
  1.2625 -    real_add x
  1.2626 -     (real_mul (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) xa))"
  1.2627 +    real_add x (real_mul (real_neg (real_of_num (NUMERAL_BIT1 0))) xa))"
  1.2628    by (import hollight REAL_POLY_NEG_CLAUSES)
  1.2629  
  1.2630  lemma REAL_OF_NUM_LT: "ALL (x::nat) xa::nat. real_lt (real_of_num x) (real_of_num xa) = < x xa"
  1.2631 @@ -3961,7 +4374,7 @@
  1.2632    by (import hollight REAL_OF_NUM_GT)
  1.2633  
  1.2634  lemma REAL_OF_NUM_SUC: "ALL x::nat.
  1.2635 -   real_add (real_of_num x) (real_of_num (NUMERAL_BIT1 (0::nat))) =
  1.2636 +   real_add (real_of_num x) (real_of_num (NUMERAL_BIT1 0)) =
  1.2637     real_of_num (Suc x)"
  1.2638    by (import hollight REAL_OF_NUM_SUC)
  1.2639  
  1.2640 @@ -3983,16 +4396,16 @@
  1.2641    by (import hollight REAL_LT_LADD_IMP)
  1.2642  
  1.2643  lemma REAL_LT_MUL: "ALL (x::hollight.real) y::hollight.real.
  1.2644 -   real_lt (real_of_num (0::nat)) x & real_lt (real_of_num (0::nat)) y -->
  1.2645 -   real_lt (real_of_num (0::nat)) (real_mul x y)"
  1.2646 +   real_lt (real_of_num 0) x & real_lt (real_of_num 0) y -->
  1.2647 +   real_lt (real_of_num 0) (real_mul x y)"
  1.2648    by (import hollight REAL_LT_MUL)
  1.2649  
  1.2650  lemma REAL_EQ_ADD_LCANCEL_0: "ALL (x::hollight.real) y::hollight.real.
  1.2651 -   (real_add x y = x) = (y = real_of_num (0::nat))"
  1.2652 +   (real_add x y = x) = (y = real_of_num 0)"
  1.2653    by (import hollight REAL_EQ_ADD_LCANCEL_0)
  1.2654  
  1.2655  lemma REAL_EQ_ADD_RCANCEL_0: "ALL (x::hollight.real) y::hollight.real.
  1.2656 -   (real_add x y = y) = (x = real_of_num (0::nat))"
  1.2657 +   (real_add x y = y) = (x = real_of_num 0)"
  1.2658    by (import hollight REAL_EQ_ADD_RCANCEL_0)
  1.2659  
  1.2660  lemma REAL_NOT_EQ: "ALL (x::hollight.real) y::hollight.real.
  1.2661 @@ -4009,7 +4422,7 @@
  1.2662  lemma REAL_LT_TOTAL: "ALL (x::hollight.real) y::hollight.real. x = y | real_lt x y | real_lt y x"
  1.2663    by (import hollight REAL_LT_TOTAL)
  1.2664  
  1.2665 -lemma REAL_LE_01: "real_le (real_of_num (0::nat)) (real_of_num (NUMERAL_BIT1 (0::nat)))"
  1.2666 +lemma REAL_LE_01: "real_le (real_of_num 0) (real_of_num (NUMERAL_BIT1 0))"
  1.2667    by (import hollight REAL_LE_01)
  1.2668  
  1.2669  lemma REAL_LE_ADD2: "ALL (w::hollight.real) (x::hollight.real) (y::hollight.real)
  1.2670 @@ -4018,34 +4431,33 @@
  1.2671    by (import hollight REAL_LE_ADD2)
  1.2672  
  1.2673  lemma REAL_LT_LNEG: "ALL (x::hollight.real) xa::hollight.real.
  1.2674 -   real_lt (real_neg x) xa = real_lt (real_of_num (0::nat)) (real_add x xa)"
  1.2675 +   real_lt (real_neg x) xa = real_lt (real_of_num 0) (real_add x xa)"
  1.2676    by (import hollight REAL_LT_LNEG)
  1.2677  
  1.2678  lemma REAL_LT_RNEG: "ALL (x::hollight.real) xa::hollight.real.
  1.2679 -   real_lt x (real_neg xa) = real_lt (real_add x xa) (real_of_num (0::nat))"
  1.2680 +   real_lt x (real_neg xa) = real_lt (real_add x xa) (real_of_num 0)"
  1.2681    by (import hollight REAL_LT_RNEG)
  1.2682  
  1.2683 -lemma REAL_NEG_EQ_0: "ALL x::hollight.real.
  1.2684 -   (real_neg x = real_of_num (0::nat)) = (x = real_of_num (0::nat))"
  1.2685 +lemma REAL_NEG_EQ_0: "ALL x::hollight.real. (real_neg x = real_of_num 0) = (x = real_of_num 0)"
  1.2686    by (import hollight REAL_NEG_EQ_0)
  1.2687  
  1.2688  lemma REAL_ADD_SUB: "ALL (x::hollight.real) y::hollight.real. real_sub (real_add x y) x = y"
  1.2689    by (import hollight REAL_ADD_SUB)
  1.2690  
  1.2691  lemma REAL_LE_ADDR: "ALL (x::hollight.real) y::hollight.real.
  1.2692 -   real_le x (real_add x y) = real_le (real_of_num (0::nat)) y"
  1.2693 +   real_le x (real_add x y) = real_le (real_of_num 0) y"
  1.2694    by (import hollight REAL_LE_ADDR)
  1.2695  
  1.2696  lemma REAL_LE_ADDL: "ALL (x::hollight.real) y::hollight.real.
  1.2697 -   real_le y (real_add x y) = real_le (real_of_num (0::nat)) x"
  1.2698 +   real_le y (real_add x y) = real_le (real_of_num 0) x"
  1.2699    by (import hollight REAL_LE_ADDL)
  1.2700  
  1.2701  lemma REAL_LT_ADDR: "ALL (x::hollight.real) y::hollight.real.
  1.2702 -   real_lt x (real_add x y) = real_lt (real_of_num (0::nat)) y"
  1.2703 +   real_lt x (real_add x y) = real_lt (real_of_num 0) y"
  1.2704    by (import hollight REAL_LT_ADDR)
  1.2705  
  1.2706  lemma REAL_LT_ADDL: "ALL (x::hollight.real) y::hollight.real.
  1.2707 -   real_lt y (real_add x y) = real_lt (real_of_num (0::nat)) x"
  1.2708 +   real_lt y (real_add x y) = real_lt (real_of_num 0) x"
  1.2709    by (import hollight REAL_LT_ADDL)
  1.2710  
  1.2711  lemma REAL_ADD2_SUB2: "ALL (a::hollight.real) (b::hollight.real) (c::hollight.real)
  1.2712 @@ -4086,15 +4498,13 @@
  1.2713     real_lt (real_neg x) (real_neg y) = real_lt y x"
  1.2714    by (import hollight REAL_LT_NEG2)
  1.2715  
  1.2716 -lemma REAL_ABS_ZERO: "ALL x::hollight.real.
  1.2717 -   (real_abs x = real_of_num (0::nat)) = (x = real_of_num (0::nat))"
  1.2718 +lemma REAL_ABS_ZERO: "ALL x::hollight.real. (real_abs x = real_of_num 0) = (x = real_of_num 0)"
  1.2719    by (import hollight REAL_ABS_ZERO)
  1.2720  
  1.2721 -lemma REAL_ABS_0: "real_abs (real_of_num (0::nat)) = real_of_num (0::nat)"
  1.2722 +lemma REAL_ABS_0: "real_abs (real_of_num 0) = real_of_num 0"
  1.2723    by (import hollight REAL_ABS_0)
  1.2724  
  1.2725 -lemma REAL_ABS_1: "real_abs (real_of_num (NUMERAL_BIT1 (0::nat))) =
  1.2726 -real_of_num (NUMERAL_BIT1 (0::nat))"
  1.2727 +lemma REAL_ABS_1: "real_abs (real_of_num (NUMERAL_BIT1 0)) = real_of_num (NUMERAL_BIT1 0)"
  1.2728    by (import hollight REAL_ABS_1)
  1.2729  
  1.2730  lemma REAL_ABS_TRIANGLE: "ALL (x::hollight.real) y::hollight.real.
  1.2731 @@ -4111,7 +4521,7 @@
  1.2732     real_lt (real_abs y) z"
  1.2733    by (import hollight REAL_ABS_TRIANGLE_LT)
  1.2734  
  1.2735 -lemma REAL_ABS_POS: "ALL x::hollight.real. real_le (real_of_num (0::nat)) (real_abs x)"
  1.2736 +lemma REAL_ABS_POS: "ALL x::hollight.real. real_le (real_of_num 0) (real_abs x)"
  1.2737    by (import hollight REAL_ABS_POS)
  1.2738  
  1.2739  lemma REAL_ABS_SUB: "ALL (x::hollight.real) y::hollight.real.
  1.2740 @@ -4119,7 +4529,7 @@
  1.2741    by (import hollight REAL_ABS_SUB)
  1.2742  
  1.2743  lemma REAL_ABS_NZ: "ALL x::hollight.real.
  1.2744 -   (x ~= real_of_num (0::nat)) = real_lt (real_of_num (0::nat)) (real_abs x)"
  1.2745 +   (x ~= real_of_num 0) = real_lt (real_of_num 0) (real_abs x)"
  1.2746    by (import hollight REAL_ABS_NZ)
  1.2747  
  1.2748  lemma REAL_ABS_ABS: "ALL x::hollight.real. real_abs (real_abs x) = real_abs x"
  1.2749 @@ -4128,11 +4538,11 @@
  1.2750  lemma REAL_ABS_LE: "ALL x::hollight.real. real_le x (real_abs x)"
  1.2751    by (import hollight REAL_ABS_LE)
  1.2752  
  1.2753 -lemma REAL_ABS_REFL: "ALL x::hollight.real. (real_abs x = x) = real_le (real_of_num (0::nat)) x"
  1.2754 +lemma REAL_ABS_REFL: "ALL x::hollight.real. (real_abs x = x) = real_le (real_of_num 0) x"
  1.2755    by (import hollight REAL_ABS_REFL)
  1.2756  
  1.2757  lemma REAL_ABS_BETWEEN: "ALL (x::hollight.real) (y::hollight.real) d::hollight.real.
  1.2758 -   (real_lt (real_of_num (0::nat)) d &
  1.2759 +   (real_lt (real_of_num 0) d &
  1.2760      real_lt (real_sub x d) y & real_lt y (real_add x d)) =
  1.2761     real_lt (real_abs (real_sub y x)) d"
  1.2762    by (import hollight REAL_ABS_BETWEEN)
  1.2763 @@ -4142,12 +4552,11 @@
  1.2764    by (import hollight REAL_ABS_BOUND)
  1.2765  
  1.2766  lemma REAL_ABS_STILLNZ: "ALL (x::hollight.real) y::hollight.real.
  1.2767 -   real_lt (real_abs (real_sub x y)) (real_abs y) -->
  1.2768 -   x ~= real_of_num (0::nat)"
  1.2769 +   real_lt (real_abs (real_sub x y)) (real_abs y) --> x ~= real_of_num 0"
  1.2770    by (import hollight REAL_ABS_STILLNZ)
  1.2771  
  1.2772  lemma REAL_ABS_CASES: "ALL x::hollight.real.
  1.2773 -   x = real_of_num (0::nat) | real_lt (real_of_num (0::nat)) (real_abs x)"
  1.2774 +   x = real_of_num 0 | real_lt (real_of_num 0) (real_abs x)"
  1.2775    by (import hollight REAL_ABS_CASES)
  1.2776  
  1.2777  lemma REAL_ABS_BETWEEN1: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.2778 @@ -4156,12 +4565,12 @@
  1.2779    by (import hollight REAL_ABS_BETWEEN1)
  1.2780  
  1.2781  lemma REAL_ABS_SIGN: "ALL (x::hollight.real) y::hollight.real.
  1.2782 -   real_lt (real_abs (real_sub x y)) y --> real_lt (real_of_num (0::nat)) x"
  1.2783 +   real_lt (real_abs (real_sub x y)) y --> real_lt (real_of_num 0) x"
  1.2784    by (import hollight REAL_ABS_SIGN)
  1.2785  
  1.2786  lemma REAL_ABS_SIGN2: "ALL (x::hollight.real) y::hollight.real.
  1.2787     real_lt (real_abs (real_sub x y)) (real_neg y) -->
  1.2788 -   real_lt x (real_of_num (0::nat))"
  1.2789 +   real_lt x (real_of_num 0)"
  1.2790    by (import hollight REAL_ABS_SIGN2)
  1.2791  
  1.2792  lemma REAL_ABS_CIRCLE: "ALL (x::hollight.real) (y::hollight.real) h::hollight.real.
  1.2793 @@ -4178,11 +4587,11 @@
  1.2794     y::hollight.real.
  1.2795     real_lt x0 y0 &
  1.2796     real_lt
  1.2797 -    (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
  1.2798 +    (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))
  1.2799        (real_abs (real_sub x x0)))
  1.2800      (real_sub y0 x0) &
  1.2801     real_lt
  1.2802 -    (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
  1.2803 +    (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))
  1.2804        (real_abs (real_sub y y0)))
  1.2805      (real_sub y0 x0) -->
  1.2806     real_lt x y"
  1.2807 @@ -4271,13 +4680,11 @@
  1.2808    by (import hollight REAL_ABS_MUL)
  1.2809  
  1.2810  lemma REAL_POW_LE: "ALL (x::hollight.real) n::nat.
  1.2811 -   real_le (real_of_num (0::nat)) x -->
  1.2812 -   real_le (real_of_num (0::nat)) (real_pow x n)"
  1.2813 +   real_le (real_of_num 0) x --> real_le (real_of_num 0) (real_pow x n)"
  1.2814    by (import hollight REAL_POW_LE)
  1.2815  
  1.2816  lemma REAL_POW_LT: "ALL (x::hollight.real) n::nat.
  1.2817 -   real_lt (real_of_num (0::nat)) x -->
  1.2818 -   real_lt (real_of_num (0::nat)) (real_pow x n)"
  1.2819 +   real_lt (real_of_num 0) x --> real_lt (real_of_num 0) (real_pow x n)"
  1.2820    by (import hollight REAL_POW_LT)
  1.2821  
  1.2822  lemma REAL_ABS_POW: "ALL (x::hollight.real) n::nat.
  1.2823 @@ -4285,89 +4692,82 @@
  1.2824    by (import hollight REAL_ABS_POW)
  1.2825  
  1.2826  lemma REAL_LE_LMUL: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
  1.2827 -   real_le (real_of_num (0::nat)) x & real_le xa xb -->
  1.2828 +   real_le (real_of_num 0) x & real_le xa xb -->
  1.2829     real_le (real_mul x xa) (real_mul x xb)"
  1.2830    by (import hollight REAL_LE_LMUL)
  1.2831  
  1.2832  lemma REAL_LE_RMUL: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.2833 -   real_le x y & real_le (real_of_num (0::nat)) z -->
  1.2834 +   real_le x y & real_le (real_of_num 0) z -->
  1.2835     real_le (real_mul x z) (real_mul y z)"
  1.2836    by (import hollight REAL_LE_RMUL)
  1.2837  
  1.2838  lemma REAL_LT_LMUL: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
  1.2839 -   real_lt (real_of_num (0::nat)) x & real_lt xa xb -->
  1.2840 +   real_lt (real_of_num 0) x & real_lt xa xb -->
  1.2841     real_lt (real_mul x xa) (real_mul x xb)"
  1.2842    by (import hollight REAL_LT_LMUL)
  1.2843  
  1.2844  lemma REAL_LT_RMUL: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.2845 -   real_lt x y & real_lt (real_of_num (0::nat)) z -->
  1.2846 +   real_lt x y & real_lt (real_of_num 0) z -->
  1.2847     real_lt (real_mul x z) (real_mul y z)"
  1.2848    by (import hollight REAL_LT_RMUL)
  1.2849  
  1.2850  lemma REAL_EQ_MUL_LCANCEL: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.2851 -   (real_mul x y = real_mul x z) = (x = real_of_num (0::nat) | y = z)"
  1.2852 +   (real_mul x y = real_mul x z) = (x = real_of_num 0 | y = z)"
  1.2853    by (import hollight REAL_EQ_MUL_LCANCEL)
  1.2854  
  1.2855  lemma REAL_EQ_MUL_RCANCEL: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
  1.2856 -   (real_mul x xb = real_mul xa xb) = (x = xa | xb = real_of_num (0::nat))"
  1.2857 +   (real_mul x xb = real_mul xa xb) = (x = xa | xb = real_of_num 0)"
  1.2858    by (import hollight REAL_EQ_MUL_RCANCEL)
  1.2859  
  1.2860  lemma REAL_MUL_LINV_UNIQ: "ALL (x::hollight.real) y::hollight.real.
  1.2861 -   real_mul x y = real_of_num (NUMERAL_BIT1 (0::nat)) --> real_inv y = x"
  1.2862 +   real_mul x y = real_of_num (NUMERAL_BIT1 0) --> real_inv y = x"
  1.2863    by (import hollight REAL_MUL_LINV_UNIQ)
  1.2864  
  1.2865  lemma REAL_MUL_RINV_UNIQ: "ALL (x::hollight.real) xa::hollight.real.
  1.2866 -   real_mul x xa = real_of_num (NUMERAL_BIT1 (0::nat)) --> real_inv x = xa"
  1.2867 +   real_mul x xa = real_of_num (NUMERAL_BIT1 0) --> real_inv x = xa"
  1.2868    by (import hollight REAL_MUL_RINV_UNIQ)
  1.2869  
  1.2870  lemma REAL_INV_INV: "ALL x::hollight.real. real_inv (real_inv x) = x"
  1.2871    by (import hollight REAL_INV_INV)
  1.2872  
  1.2873 -lemma REAL_INV_EQ_0: "ALL x::hollight.real.
  1.2874 -   (real_inv x = real_of_num (0::nat)) = (x = real_of_num (0::nat))"
  1.2875 +lemma REAL_INV_EQ_0: "ALL x::hollight.real. (real_inv x = real_of_num 0) = (x = real_of_num 0)"
  1.2876    by (import hollight REAL_INV_EQ_0)
  1.2877  
  1.2878  lemma REAL_LT_INV: "ALL x::hollight.real.
  1.2879 -   real_lt (real_of_num (0::nat)) x -->
  1.2880 -   real_lt (real_of_num (0::nat)) (real_inv x)"
  1.2881 +   real_lt (real_of_num 0) x --> real_lt (real_of_num 0) (real_inv x)"
  1.2882    by (import hollight REAL_LT_INV)
  1.2883  
  1.2884  lemma REAL_LT_INV_EQ: "ALL x::hollight.real.
  1.2885 -   real_lt (real_of_num (0::nat)) (real_inv x) =
  1.2886 -   real_lt (real_of_num (0::nat)) x"
  1.2887 +   real_lt (real_of_num 0) (real_inv x) = real_lt (real_of_num 0) x"
  1.2888    by (import hollight REAL_LT_INV_EQ)
  1.2889  
  1.2890  lemma REAL_INV_NEG: "ALL x::hollight.real. real_inv (real_neg x) = real_neg (real_inv x)"
  1.2891    by (import hollight REAL_INV_NEG)
  1.2892  
  1.2893  lemma REAL_LE_INV_EQ: "ALL x::hollight.real.
  1.2894 -   real_le (real_of_num (0::nat)) (real_inv x) =
  1.2895 -   real_le (real_of_num (0::nat)) x"
  1.2896 +   real_le (real_of_num 0) (real_inv x) = real_le (real_of_num 0) x"
  1.2897    by (import hollight REAL_LE_INV_EQ)
  1.2898  
  1.2899  lemma REAL_LE_INV: "ALL x::hollight.real.
  1.2900 -   real_le (real_of_num (0::nat)) x -->
  1.2901 -   real_le (real_of_num (0::nat)) (real_inv x)"
  1.2902 +   real_le (real_of_num 0) x --> real_le (real_of_num 0) (real_inv x)"
  1.2903    by (import hollight REAL_LE_INV)
  1.2904  
  1.2905 -lemma REAL_INV_1: "real_inv (real_of_num (NUMERAL_BIT1 (0::nat))) =
  1.2906 -real_of_num (NUMERAL_BIT1 (0::nat))"
  1.2907 +lemma REAL_INV_1: "real_inv (real_of_num (NUMERAL_BIT1 0)) = real_of_num (NUMERAL_BIT1 0)"
  1.2908    by (import hollight REAL_INV_1)
  1.2909  
  1.2910 -lemma REAL_DIV_1: "ALL x::hollight.real. real_div x (real_of_num (NUMERAL_BIT1 (0::nat))) = x"
  1.2911 +lemma REAL_DIV_1: "ALL x::hollight.real. real_div x (real_of_num (NUMERAL_BIT1 0)) = x"
  1.2912    by (import hollight REAL_DIV_1)
  1.2913  
  1.2914  lemma REAL_DIV_REFL: "ALL x::hollight.real.
  1.2915 -   x ~= real_of_num (0::nat) -->
  1.2916 -   real_div x x = real_of_num (NUMERAL_BIT1 (0::nat))"
  1.2917 +   x ~= real_of_num 0 --> real_div x x = real_of_num (NUMERAL_BIT1 0)"
  1.2918    by (import hollight REAL_DIV_REFL)
  1.2919  
  1.2920  lemma REAL_DIV_RMUL: "ALL (x::hollight.real) xa::hollight.real.
  1.2921 -   xa ~= real_of_num (0::nat) --> real_mul (real_div x xa) xa = x"
  1.2922 +   xa ~= real_of_num 0 --> real_mul (real_div x xa) xa = x"
  1.2923    by (import hollight REAL_DIV_RMUL)
  1.2924  
  1.2925  lemma REAL_DIV_LMUL: "ALL (x::hollight.real) xa::hollight.real.
  1.2926 -   xa ~= real_of_num (0::nat) --> real_mul xa (real_div x xa) = x"
  1.2927 +   xa ~= real_of_num 0 --> real_mul xa (real_div x xa) = x"
  1.2928    by (import hollight REAL_DIV_LMUL)
  1.2929  
  1.2930  lemma REAL_ABS_INV: "ALL x::hollight.real. real_abs (real_inv x) = real_inv (real_abs x)"
  1.2931 @@ -4402,190 +4802,179 @@
  1.2932    by (import hollight REAL_POW_ADD)
  1.2933  
  1.2934  lemma REAL_POW_NZ: "ALL (x::hollight.real) n::nat.
  1.2935 -   x ~= real_of_num (0::nat) --> real_pow x n ~= real_of_num (0::nat)"
  1.2936 +   x ~= real_of_num 0 --> real_pow x n ~= real_of_num 0"
  1.2937    by (import hollight REAL_POW_NZ)
  1.2938  
  1.2939  lemma REAL_POW_SUB: "ALL (x::hollight.real) (m::nat) n::nat.
  1.2940 -   x ~= real_of_num (0::nat) & <= m n -->
  1.2941 +   x ~= real_of_num 0 & <= m n -->
  1.2942     real_pow x (n - m) = real_div (real_pow x n) (real_pow x m)"
  1.2943    by (import hollight REAL_POW_SUB)
  1.2944  
  1.2945 -lemma REAL_LT_IMP_NZ: "ALL x::hollight.real.
  1.2946 -   real_lt (real_of_num (0::nat)) x --> x ~= real_of_num (0::nat)"
  1.2947 +lemma REAL_LT_IMP_NZ: "ALL x::hollight.real. real_lt (real_of_num 0) x --> x ~= real_of_num 0"
  1.2948    by (import hollight REAL_LT_IMP_NZ)
  1.2949  
  1.2950  lemma REAL_LT_LCANCEL_IMP: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.2951 -   real_lt (real_of_num (0::nat)) x &
  1.2952 -   real_lt (real_mul x y) (real_mul x z) -->
  1.2953 +   real_lt (real_of_num 0) x & real_lt (real_mul x y) (real_mul x z) -->
  1.2954     real_lt y z"
  1.2955    by (import hollight REAL_LT_LCANCEL_IMP)
  1.2956  
  1.2957  lemma REAL_LT_RCANCEL_IMP: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
  1.2958 -   real_lt (real_of_num (0::nat)) xb &
  1.2959 -   real_lt (real_mul x xb) (real_mul xa xb) -->
  1.2960 +   real_lt (real_of_num 0) xb & real_lt (real_mul x xb) (real_mul xa xb) -->
  1.2961     real_lt x xa"
  1.2962    by (import hollight REAL_LT_RCANCEL_IMP)
  1.2963  
  1.2964  lemma REAL_LE_LCANCEL_IMP: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.2965 -   real_lt (real_of_num (0::nat)) x &
  1.2966 -   real_le (real_mul x y) (real_mul x z) -->
  1.2967 +   real_lt (real_of_num 0) x & real_le (real_mul x y) (real_mul x z) -->
  1.2968     real_le y z"
  1.2969    by (import hollight REAL_LE_LCANCEL_IMP)
  1.2970  
  1.2971  lemma REAL_LE_RCANCEL_IMP: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
  1.2972 -   real_lt (real_of_num (0::nat)) xb &
  1.2973 -   real_le (real_mul x xb) (real_mul xa xb) -->
  1.2974 +   real_lt (real_of_num 0) xb & real_le (real_mul x xb) (real_mul xa xb) -->
  1.2975     real_le x xa"
  1.2976    by (import hollight REAL_LE_RCANCEL_IMP)
  1.2977  
  1.2978  lemma REAL_LE_LMUL_EQ: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.2979 -   real_lt (real_of_num (0::nat)) z -->
  1.2980 +   real_lt (real_of_num 0) z -->
  1.2981     real_le (real_mul z x) (real_mul z y) = real_le x y"
  1.2982    by (import hollight REAL_LE_LMUL_EQ)
  1.2983  
  1.2984  lemma REAL_LE_RDIV_EQ: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.2985 -   real_lt (real_of_num (0::nat)) z -->
  1.2986 +   real_lt (real_of_num 0) z -->
  1.2987     real_le x (real_div y z) = real_le (real_mul x z) y"
  1.2988    by (import hollight REAL_LE_RDIV_EQ)
  1.2989  
  1.2990  lemma REAL_LE_LDIV_EQ: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.2991 -   real_lt (real_of_num (0::nat)) z -->
  1.2992 +   real_lt (real_of_num 0) z -->
  1.2993     real_le (real_div x z) y = real_le x (real_mul y z)"
  1.2994    by (import hollight REAL_LE_LDIV_EQ)
  1.2995  
  1.2996  lemma REAL_LT_RDIV_EQ: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
  1.2997 -   real_lt (real_of_num (0::nat)) xb -->
  1.2998 +   real_lt (real_of_num 0) xb -->
  1.2999     real_lt x (real_div xa xb) = real_lt (real_mul x xb) xa"
  1.3000    by (import hollight REAL_LT_RDIV_EQ)
  1.3001  
  1.3002  lemma REAL_LT_LDIV_EQ: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
  1.3003 -   real_lt (real_of_num (0::nat)) xb -->
  1.3004 +   real_lt (real_of_num 0) xb -->
  1.3005     real_lt (real_div x xb) xa = real_lt x (real_mul xa xb)"
  1.3006    by (import hollight REAL_LT_LDIV_EQ)
  1.3007  
  1.3008  lemma REAL_EQ_RDIV_EQ: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
  1.3009 -   real_lt (real_of_num (0::nat)) xb -->
  1.3010 +   real_lt (real_of_num 0) xb -->
  1.3011     (x = real_div xa xb) = (real_mul x xb = xa)"
  1.3012    by (import hollight REAL_EQ_RDIV_EQ)
  1.3013  
  1.3014  lemma REAL_EQ_LDIV_EQ: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
  1.3015 -   real_lt (real_of_num (0::nat)) xb -->
  1.3016 +   real_lt (real_of_num 0) xb -->
  1.3017     (real_div x xb = xa) = (x = real_mul xa xb)"
  1.3018    by (import hollight REAL_EQ_LDIV_EQ)
  1.3019  
  1.3020  lemma REAL_LT_DIV2_EQ: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
  1.3021 -   real_lt (real_of_num (0::nat)) xb -->
  1.3022 +   real_lt (real_of_num 0) xb -->
  1.3023     real_lt (real_div x xb) (real_div xa xb) = real_lt x xa"
  1.3024    by (import hollight REAL_LT_DIV2_EQ)
  1.3025  
  1.3026  lemma REAL_LE_DIV2_EQ: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
  1.3027 -   real_lt (real_of_num (0::nat)) xb -->
  1.3028 +   real_lt (real_of_num 0) xb -->
  1.3029     real_le (real_div x xb) (real_div xa xb) = real_le x xa"
  1.3030    by (import hollight REAL_LE_DIV2_EQ)
  1.3031  
  1.3032  lemma REAL_MUL_2: "ALL x::hollight.real.
  1.3033 -   real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) x =
  1.3034 -   real_add x x"
  1.3035 +   real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) x = real_add x x"
  1.3036    by (import hollight REAL_MUL_2)
  1.3037  
  1.3038  lemma REAL_POW_EQ_0: "ALL (x::hollight.real) n::nat.
  1.3039 -   (real_pow x n = real_of_num (0::nat)) =
  1.3040 -   (x = real_of_num (0::nat) & n ~= (0::nat))"
  1.3041 +   (real_pow x n = real_of_num 0) = (x = real_of_num 0 & n ~= 0)"
  1.3042    by (import hollight REAL_POW_EQ_0)
  1.3043  
  1.3044  lemma REAL_LE_MUL2: "ALL (w::hollight.real) (x::hollight.real) (y::hollight.real)
  1.3045     z::hollight.real.
  1.3046 -   real_le (real_of_num (0::nat)) w &
  1.3047 -   real_le w x & real_le (real_of_num (0::nat)) y & real_le y z -->
  1.3048 +   real_le (real_of_num 0) w &
  1.3049 +   real_le w x & real_le (real_of_num 0) y & real_le y z -->
  1.3050     real_le (real_mul w y) (real_mul x z)"
  1.3051    by (import hollight REAL_LE_MUL2)
  1.3052  
  1.3053  lemma REAL_LT_MUL2: "ALL (w::hollight.real) (x::hollight.real) (y::hollight.real)
  1.3054     z::hollight.real.
  1.3055 -   real_le (real_of_num (0::nat)) w &
  1.3056 -   real_lt w x & real_le (real_of_num (0::nat)) y & real_lt y z -->
  1.3057 +   real_le (real_of_num 0) w &
  1.3058 +   real_lt w x & real_le (real_of_num 0) y & real_lt y z -->
  1.3059     real_lt (real_mul w y) (real_mul x z)"
  1.3060    by (import hollight REAL_LT_MUL2)
  1.3061  
  1.3062  lemma REAL_LT_SQUARE: "ALL x::hollight.real.
  1.3063 -   real_lt (real_of_num (0::nat)) (real_mul x x) =
  1.3064 -   (x ~= real_of_num (0::nat))"
  1.3065 +   real_lt (real_of_num 0) (real_mul x x) = (x ~= real_of_num 0)"
  1.3066    by (import hollight REAL_LT_SQUARE)
  1.3067  
  1.3068  lemma REAL_INV_LE_1: "ALL x::hollight.real.
  1.3069 -   real_le (real_of_num (NUMERAL_BIT1 (0::nat))) x -->
  1.3070 -   real_le (real_inv x) (real_of_num (NUMERAL_BIT1 (0::nat)))"
  1.3071 +   real_le (real_of_num (NUMERAL_BIT1 0)) x -->
  1.3072 +   real_le (real_inv x) (real_of_num (NUMERAL_BIT1 0))"
  1.3073    by (import hollight REAL_INV_LE_1)
  1.3074  
  1.3075  lemma REAL_POW_LE_1: "ALL (n::nat) x::hollight.real.
  1.3076 -   real_le (real_of_num (NUMERAL_BIT1 (0::nat))) x -->
  1.3077 -   real_le (real_of_num (NUMERAL_BIT1 (0::nat))) (real_pow x n)"
  1.3078 +   real_le (real_of_num (NUMERAL_BIT1 0)) x -->
  1.3079 +   real_le (real_of_num (NUMERAL_BIT1 0)) (real_pow x n)"
  1.3080    by (import hollight REAL_POW_LE_1)
  1.3081  
  1.3082  lemma REAL_POW_1_LE: "ALL (n::nat) x::hollight.real.
  1.3083 -   real_le (real_of_num (0::nat)) x &
  1.3084 -   real_le x (real_of_num (NUMERAL_BIT1 (0::nat))) -->
  1.3085 -   real_le (real_pow x n) (real_of_num (NUMERAL_BIT1 (0::nat)))"
  1.3086 +   real_le (real_of_num 0) x & real_le x (real_of_num (NUMERAL_BIT1 0)) -->
  1.3087 +   real_le (real_pow x n) (real_of_num (NUMERAL_BIT1 0))"
  1.3088    by (import hollight REAL_POW_1_LE)
  1.3089  
  1.3090 -lemma REAL_POW_1: "ALL x::hollight.real. real_pow x (NUMERAL_BIT1 (0::nat)) = x"
  1.3091 +lemma REAL_POW_1: "ALL x::hollight.real. real_pow x (NUMERAL_BIT1 0) = x"
  1.3092    by (import hollight REAL_POW_1)
  1.3093  
  1.3094  lemma REAL_POW_ONE: "ALL n::nat.
  1.3095 -   real_pow (real_of_num (NUMERAL_BIT1 (0::nat))) n =
  1.3096 -   real_of_num (NUMERAL_BIT1 (0::nat))"
  1.3097 +   real_pow (real_of_num (NUMERAL_BIT1 0)) n = real_of_num (NUMERAL_BIT1 0)"
  1.3098    by (import hollight REAL_POW_ONE)
  1.3099  
  1.3100  lemma REAL_LT_INV2: "ALL (x::hollight.real) y::hollight.real.
  1.3101 -   real_lt (real_of_num (0::nat)) x & real_lt x y -->
  1.3102 +   real_lt (real_of_num 0) x & real_lt x y -->
  1.3103     real_lt (real_inv y) (real_inv x)"
  1.3104    by (import hollight REAL_LT_INV2)
  1.3105  
  1.3106  lemma REAL_LE_INV2: "ALL (x::hollight.real) y::hollight.real.
  1.3107 -   real_lt (real_of_num (0::nat)) x & real_le x y -->
  1.3108 +   real_lt (real_of_num 0) x & real_le x y -->
  1.3109     real_le (real_inv y) (real_inv x)"
  1.3110    by (import hollight REAL_LE_INV2)
  1.3111  
  1.3112  lemma REAL_INV_1_LE: "ALL x::hollight.real.
  1.3113 -   real_lt (real_of_num (0::nat)) x &
  1.3114 -   real_le x (real_of_num (NUMERAL_BIT1 (0::nat))) -->
  1.3115 -   real_le (real_of_num (NUMERAL_BIT1 (0::nat))) (real_inv x)"
  1.3116 +   real_lt (real_of_num 0) x & real_le x (real_of_num (NUMERAL_BIT1 0)) -->
  1.3117 +   real_le (real_of_num (NUMERAL_BIT1 0)) (real_inv x)"
  1.3118    by (import hollight REAL_INV_1_LE)
  1.3119  
  1.3120  lemma REAL_SUB_INV: "ALL (x::hollight.real) xa::hollight.real.
  1.3121 -   x ~= real_of_num (0::nat) & xa ~= real_of_num (0::nat) -->
  1.3122 +   x ~= real_of_num 0 & xa ~= real_of_num 0 -->
  1.3123     real_sub (real_inv x) (real_inv xa) =
  1.3124     real_div (real_sub xa x) (real_mul x xa)"
  1.3125    by (import hollight REAL_SUB_INV)
  1.3126  
  1.3127  lemma REAL_DOWN: "ALL d::hollight.real.
  1.3128 -   real_lt (real_of_num (0::nat)) d -->
  1.3129 -   (EX x::hollight.real. real_lt (real_of_num (0::nat)) x & real_lt x d)"
  1.3130 +   real_lt (real_of_num 0) d -->
  1.3131 +   (EX x::hollight.real. real_lt (real_of_num 0) x & real_lt x d)"
  1.3132    by (import hollight REAL_DOWN)
  1.3133  
  1.3134  lemma REAL_DOWN2: "ALL (d1::hollight.real) d2::hollight.real.
  1.3135 -   real_lt (real_of_num (0::nat)) d1 & real_lt (real_of_num (0::nat)) d2 -->
  1.3136 +   real_lt (real_of_num 0) d1 & real_lt (real_of_num 0) d2 -->
  1.3137     (EX e::hollight.real.
  1.3138 -       real_lt (real_of_num (0::nat)) e & real_lt e d1 & real_lt e d2)"
  1.3139 +       real_lt (real_of_num 0) e & real_lt e d1 & real_lt e d2)"
  1.3140    by (import hollight REAL_DOWN2)
  1.3141  
  1.3142  lemma REAL_POW_LE2: "ALL (n::nat) (x::hollight.real) y::hollight.real.
  1.3143 -   real_le (real_of_num (0::nat)) x & real_le x y -->
  1.3144 +   real_le (real_of_num 0) x & real_le x y -->
  1.3145     real_le (real_pow x n) (real_pow y n)"
  1.3146    by (import hollight REAL_POW_LE2)
  1.3147  
  1.3148  lemma REAL_POW_MONO: "ALL (m::nat) (n::nat) x::hollight.real.
  1.3149 -   real_le (real_of_num (NUMERAL_BIT1 (0::nat))) x & <= m n -->
  1.3150 +   real_le (real_of_num (NUMERAL_BIT1 0)) x & <= m n -->
  1.3151     real_le (real_pow x m) (real_pow x n)"
  1.3152    by (import hollight REAL_POW_MONO)
  1.3153  
  1.3154  lemma REAL_POW_LT2: "ALL (n::nat) (x::hollight.real) y::hollight.real.
  1.3155 -   n ~= (0::nat) & real_le (real_of_num (0::nat)) x & real_lt x y -->
  1.3156 +   n ~= 0 & real_le (real_of_num 0) x & real_lt x y -->
  1.3157     real_lt (real_pow x n) (real_pow y n)"
  1.3158    by (import hollight REAL_POW_LT2)
  1.3159  
  1.3160  lemma REAL_POW_MONO_LT: "ALL (m::nat) (n::nat) x::hollight.real.
  1.3161 -   real_lt (real_of_num (NUMERAL_BIT1 (0::nat))) x & < m n -->
  1.3162 +   real_lt (real_of_num (NUMERAL_BIT1 0)) x & < m n -->
  1.3163     real_lt (real_pow x m) (real_pow x n)"
  1.3164    by (import hollight REAL_POW_MONO_LT)
  1.3165  
  1.3166 @@ -4594,54 +4983,54 @@
  1.3167    by (import hollight REAL_POW_POW)
  1.3168  
  1.3169  lemma REAL_EQ_RCANCEL_IMP: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.3170 -   z ~= real_of_num (0::nat) & real_mul x z = real_mul y z --> x = y"
  1.3171 +   z ~= real_of_num 0 & real_mul x z = real_mul y z --> x = y"
  1.3172    by (import hollight REAL_EQ_RCANCEL_IMP)
  1.3173  
  1.3174  lemma REAL_EQ_LCANCEL_IMP: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
  1.3175 -   xb ~= real_of_num (0::nat) & real_mul xb x = real_mul xb xa --> x = xa"
  1.3176 +   xb ~= real_of_num 0 & real_mul xb x = real_mul xb xa --> x = xa"
  1.3177    by (import hollight REAL_EQ_LCANCEL_IMP)
  1.3178  
  1.3179  lemma REAL_LT_DIV: "ALL (x::hollight.real) xa::hollight.real.
  1.3180 -   real_lt (real_of_num (0::nat)) x & real_lt (real_of_num (0::nat)) xa -->
  1.3181 -   real_lt (real_of_num (0::nat)) (real_div x xa)"
  1.3182 +   real_lt (real_of_num 0) x & real_lt (real_of_num 0) xa -->
  1.3183 +   real_lt (real_of_num 0) (real_div x xa)"
  1.3184    by (import hollight REAL_LT_DIV)
  1.3185  
  1.3186  lemma REAL_LE_DIV: "ALL (x::hollight.real) xa::hollight.real.
  1.3187 -   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) xa -->
  1.3188 -   real_le (real_of_num (0::nat)) (real_div x xa)"
  1.3189 +   real_le (real_of_num 0) x & real_le (real_of_num 0) xa -->
  1.3190 +   real_le (real_of_num 0) (real_div x xa)"
  1.3191    by (import hollight REAL_LE_DIV)
  1.3192  
  1.3193  lemma REAL_DIV_POW2: "ALL (x::hollight.real) (m::nat) n::nat.
  1.3194 -   x ~= real_of_num (0::nat) -->
  1.3195 +   x ~= real_of_num 0 -->
  1.3196     real_div (real_pow x m) (real_pow x n) =
  1.3197     COND (<= n m) (real_pow x (m - n)) (real_inv (real_pow x (n - m)))"
  1.3198    by (import hollight REAL_DIV_POW2)
  1.3199  
  1.3200  lemma REAL_DIV_POW2_ALT: "ALL (x::hollight.real) (m::nat) n::nat.
  1.3201 -   x ~= real_of_num (0::nat) -->
  1.3202 +   x ~= real_of_num 0 -->
  1.3203     real_div (real_pow x m) (real_pow x n) =
  1.3204     COND (< n m) (real_pow x (m - n)) (real_inv (real_pow x (n - m)))"
  1.3205    by (import hollight REAL_DIV_POW2_ALT)
  1.3206  
  1.3207  lemma REAL_LT_POW2: "ALL x::nat.
  1.3208 -   real_lt (real_of_num (0::nat))
  1.3209 -    (real_pow (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) x)"
  1.3210 +   real_lt (real_of_num 0)
  1.3211 +    (real_pow (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) x)"
  1.3212    by (import hollight REAL_LT_POW2)
  1.3213  
  1.3214  lemma REAL_LE_POW2: "ALL n::nat.
  1.3215 -   real_le (real_of_num (NUMERAL_BIT1 (0::nat)))
  1.3216 -    (real_pow (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) n)"
  1.3217 +   real_le (real_of_num (NUMERAL_BIT1 0))
  1.3218 +    (real_pow (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) n)"
  1.3219    by (import hollight REAL_LE_POW2)
  1.3220  
  1.3221  lemma REAL_POW2_ABS: "ALL x::hollight.real.
  1.3222 -   real_pow (real_abs x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) =
  1.3223 -   real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))"
  1.3224 +   real_pow (real_abs x) (NUMERAL_BIT0 (NUMERAL_BIT1 0)) =
  1.3225 +   real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 0))"
  1.3226    by (import hollight REAL_POW2_ABS)
  1.3227  
  1.3228  lemma REAL_LE_SQUARE_ABS: "ALL (x::hollight.real) y::hollight.real.
  1.3229     real_le (real_abs x) (real_abs y) =
  1.3230 -   real_le (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
  1.3231 -    (real_pow y (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))"
  1.3232 +   real_le (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 0)))
  1.3233 +    (real_pow y (NUMERAL_BIT0 (NUMERAL_BIT1 0)))"
  1.3234    by (import hollight REAL_LE_SQUARE_ABS)
  1.3235  
  1.3236  lemma REAL_WLOG_LE: "(ALL (x::hollight.real) y::hollight.real.
  1.3237 @@ -4674,39 +5063,39 @@
  1.3238  lemma DEF_DECIMAL: "DECIMAL = (%(u::nat) ua::nat. real_div (real_of_num u) (real_of_num ua))"
  1.3239    by (import hollight DEF_DECIMAL)
  1.3240  
  1.3241 -lemma RAT_LEMMA1: "(y1::hollight.real) ~= real_of_num (0::nat) &
  1.3242 -(y2::hollight.real) ~= real_of_num (0::nat) -->
  1.3243 +lemma RAT_LEMMA1: "(y1::hollight.real) ~= real_of_num 0 &
  1.3244 +(y2::hollight.real) ~= real_of_num 0 -->
  1.3245  real_add (real_div (x1::hollight.real) y1)
  1.3246   (real_div (x2::hollight.real) y2) =
  1.3247  real_mul (real_add (real_mul x1 y2) (real_mul x2 y1))
  1.3248   (real_mul (real_inv y1) (real_inv y2))"
  1.3249    by (import hollight RAT_LEMMA1)
  1.3250  
  1.3251 -lemma RAT_LEMMA2: "real_lt (real_of_num (0::nat)) (y1::hollight.real) &
  1.3252 -real_lt (real_of_num (0::nat)) (y2::hollight.real) -->
  1.3253 +lemma RAT_LEMMA2: "real_lt (real_of_num 0) (y1::hollight.real) &
  1.3254 +real_lt (real_of_num 0) (y2::hollight.real) -->
  1.3255  real_add (real_div (x1::hollight.real) y1)
  1.3256   (real_div (x2::hollight.real) y2) =
  1.3257  real_mul (real_add (real_mul x1 y2) (real_mul x2 y1))
  1.3258   (real_mul (real_inv y1) (real_inv y2))"
  1.3259    by (import hollight RAT_LEMMA2)
  1.3260  
  1.3261 -lemma RAT_LEMMA3: "real_lt (real_of_num (0::nat)) (y1::hollight.real) &
  1.3262 -real_lt (real_of_num (0::nat)) (y2::hollight.real) -->
  1.3263 +lemma RAT_LEMMA3: "real_lt (real_of_num 0) (y1::hollight.real) &
  1.3264 +real_lt (real_of_num 0) (y2::hollight.real) -->
  1.3265  real_sub (real_div (x1::hollight.real) y1)
  1.3266   (real_div (x2::hollight.real) y2) =
  1.3267  real_mul (real_sub (real_mul x1 y2) (real_mul x2 y1))
  1.3268   (real_mul (real_inv y1) (real_inv y2))"
  1.3269    by (import hollight RAT_LEMMA3)
  1.3270  
  1.3271 -lemma RAT_LEMMA4: "real_lt (real_of_num (0::nat)) (y1::hollight.real) &
  1.3272 -real_lt (real_of_num (0::nat)) (y2::hollight.real) -->
  1.3273 +lemma RAT_LEMMA4: "real_lt (real_of_num 0) (y1::hollight.real) &
  1.3274 +real_lt (real_of_num 0) (y2::hollight.real) -->
  1.3275  real_le (real_div (x1::hollight.real) y1)
  1.3276   (real_div (x2::hollight.real) y2) =
  1.3277  real_le (real_mul x1 y2) (real_mul x2 y1)"
  1.3278    by (import hollight RAT_LEMMA4)
  1.3279  
  1.3280 -lemma RAT_LEMMA5: "real_lt (real_of_num (0::nat)) (y1::hollight.real) &
  1.3281 -real_lt (real_of_num (0::nat)) (y2::hollight.real) -->
  1.3282 +lemma RAT_LEMMA5: "real_lt (real_of_num 0) (y1::hollight.real) &
  1.3283 +real_lt (real_of_num 0) (y2::hollight.real) -->
  1.3284  (real_div (x1::hollight.real) y1 = real_div (x2::hollight.real) y2) =
  1.3285  (real_mul x1 y2 = real_mul x2 y1)"
  1.3286    by (import hollight RAT_LEMMA5)
  1.3287 @@ -4723,7 +5112,7 @@
  1.3288    by (import hollight DEF_is_int)
  1.3289  
  1.3290  typedef (open) int = "Collect is_int"  morphisms "dest_int" "mk_int"
  1.3291 -  apply (rule light_ex_imp_nonempty[where t="real_of_num (NUMERAL (0::nat))"])
  1.3292 +  apply (rule light_ex_imp_nonempty[where t="real_of_num (NUMERAL 0)"])
  1.3293    by (import hollight TYDEF_int)
  1.3294  
  1.3295  syntax
  1.3296 @@ -4902,29 +5291,29 @@
  1.3297    by (import hollight INT_IMAGE)
  1.3298  
  1.3299  lemma INT_LT_DISCRETE: "ALL (x::hollight.int) y::hollight.int.
  1.3300 -   int_lt x y = int_le (int_add x (int_of_num (NUMERAL_BIT1 (0::nat)))) y"
  1.3301 +   int_lt x y = int_le (int_add x (int_of_num (NUMERAL_BIT1 0))) y"
  1.3302    by (import hollight INT_LT_DISCRETE)
  1.3303  
  1.3304  lemma INT_GT_DISCRETE: "ALL (x::hollight.int) xa::hollight.int.
  1.3305 -   int_gt x xa = int_ge x (int_add xa (int_of_num (NUMERAL_BIT1 (0::nat))))"
  1.3306 +   int_gt x xa = int_ge x (int_add xa (int_of_num (NUMERAL_BIT1 0)))"
  1.3307    by (import hollight INT_GT_DISCRETE)
  1.3308  
  1.3309  lemma INT_FORALL_POS: "(ALL n::nat. (P::hollight.int => bool) (int_of_num n)) =
  1.3310 -(ALL i::hollight.int. int_le (int_of_num (0::nat)) i --> P i)"
  1.3311 +(ALL i::hollight.int. int_le (int_of_num 0) i --> P i)"
  1.3312    by (import hollight INT_FORALL_POS)
  1.3313  
  1.3314  lemma INT_ABS_MUL_1: "ALL (x::hollight.int) y::hollight.int.
  1.3315 -   (int_abs (int_mul x y) = int_of_num (NUMERAL_BIT1 (0::nat))) =
  1.3316 -   (int_abs x = int_of_num (NUMERAL_BIT1 (0::nat)) &
  1.3317 -    int_abs y = int_of_num (NUMERAL_BIT1 (0::nat)))"
  1.3318 +   (int_abs (int_mul x y) = int_of_num (NUMERAL_BIT1 0)) =
  1.3319 +   (int_abs x = int_of_num (NUMERAL_BIT1 0) &
  1.3320 +    int_abs y = int_of_num (NUMERAL_BIT1 0))"
  1.3321    by (import hollight INT_ABS_MUL_1)
  1.3322  
  1.3323 -lemma INT_POW: "int_pow (x::hollight.int) (0::nat) = int_of_num (NUMERAL_BIT1 (0::nat)) &
  1.3324 +lemma INT_POW: "int_pow (x::hollight.int) 0 = int_of_num (NUMERAL_BIT1 0) &
  1.3325  (ALL xa::nat. int_pow x (Suc xa) = int_mul x (int_pow x xa))"
  1.3326    by (import hollight INT_POW)
  1.3327  
  1.3328  lemma INT_ABS: "ALL x::hollight.int.
  1.3329 -   int_abs x = COND (int_le (int_of_num (0::nat)) x) x (int_neg x)"
  1.3330 +   int_abs x = COND (int_le (int_of_num 0) x) x (int_neg x)"
  1.3331    by (import hollight INT_ABS)
  1.3332  
  1.3333  lemma INT_GE: "ALL (x::hollight.int) xa::hollight.int. int_ge x xa = int_le xa x"
  1.3334 @@ -4937,7 +5326,7 @@
  1.3335    by (import hollight INT_LT)
  1.3336  
  1.3337  lemma INT_ARCH: "ALL (x::hollight.int) d::hollight.int.
  1.3338 -   d ~= int_of_num (0::nat) --> (EX c::hollight.int. int_lt x (int_mul c d))"
  1.3339 +   d ~= int_of_num 0 --> (EX c::hollight.int. int_lt x (int_mul c d))"
  1.3340    by (import hollight INT_ARCH)
  1.3341  
  1.3342  constdefs
  1.3343 @@ -4952,7 +5341,7 @@
  1.3344    by (import hollight DEF_mod_int)
  1.3345  
  1.3346  constdefs
  1.3347 -  IN :: "'A::type => ('A::type => bool) => bool" 
  1.3348 +  IN :: "'A => ('A => bool) => bool" 
  1.3349    "IN == %(u::'A::type) ua::'A::type => bool. ua u"
  1.3350  
  1.3351  lemma DEF_IN: "IN = (%(u::'A::type) ua::'A::type => bool. ua u)"
  1.3352 @@ -4963,14 +5352,14 @@
  1.3353    by (import hollight EXTENSION)
  1.3354  
  1.3355  constdefs
  1.3356 -  GSPEC :: "('A::type => bool) => 'A::type => bool" 
  1.3357 +  GSPEC :: "('A => bool) => 'A => bool" 
  1.3358    "GSPEC == %u::'A::type => bool. u"
  1.3359  
  1.3360  lemma DEF_GSPEC: "GSPEC = (%u::'A::type => bool. u)"
  1.3361    by (import hollight DEF_GSPEC)
  1.3362  
  1.3363  constdefs
  1.3364 -  SETSPEC :: "'q_36941::type => bool => 'q_36941::type => bool" 
  1.3365 +  SETSPEC :: "'q_36941 => bool => 'q_36941 => bool" 
  1.3366    "SETSPEC == %(u::'q_36941::type) (ua::bool) ub::'q_36941::type. ua & u = ub"
  1.3367  
  1.3368  lemma DEF_SETSPEC: "SETSPEC = (%(u::'q_36941::type) (ua::bool) ub::'q_36941::type. ua & u = ub)"
  1.3369 @@ -4993,14 +5382,14 @@
  1.3370    by (import hollight IN_ELIM_THM)
  1.3371  
  1.3372  constdefs
  1.3373 -  EMPTY :: "'A::type => bool" 
  1.3374 +  EMPTY :: "'A => bool" 
  1.3375    "EMPTY == %x::'A::type. False"
  1.3376  
  1.3377  lemma DEF_EMPTY: "EMPTY = (%x::'A::type. False)"
  1.3378    by (import hollight DEF_EMPTY)
  1.3379  
  1.3380  constdefs
  1.3381 -  INSERT :: "'A::type => ('A::type => bool) => 'A::type => bool" 
  1.3382 +  INSERT :: "'A => ('A => bool) => 'A => bool" 
  1.3383    "INSERT == %(u::'A::type) (ua::'A::type => bool) y::'A::type. IN y ua | y = u"
  1.3384  
  1.3385  lemma DEF_INSERT: "INSERT =
  1.3386 @@ -5008,7 +5397,7 @@
  1.3387    by (import hollight DEF_INSERT)
  1.3388  
  1.3389  consts
  1.3390 -  UNIV :: "'A::type => bool" 
  1.3391 +  UNIV :: "'A => bool" 
  1.3392  
  1.3393  defs
  1.3394    UNIV_def: "hollight.UNIV == %x::'A::type. True"
  1.3395 @@ -5017,7 +5406,7 @@
  1.3396    by (import hollight DEF_UNIV)
  1.3397  
  1.3398  consts
  1.3399 -  UNION :: "('A::type => bool) => ('A::type => bool) => 'A::type => bool" 
  1.3400 +  UNION :: "('A => bool) => ('A => bool) => 'A => bool" 
  1.3401  
  1.3402  defs
  1.3403    UNION_def: "hollight.UNION ==
  1.3404 @@ -5030,7 +5419,7 @@
  1.3405    by (import hollight DEF_UNION)
  1.3406  
  1.3407  constdefs
  1.3408 -  UNIONS :: "(('A::type => bool) => bool) => 'A::type => bool" 
  1.3409 +  UNIONS :: "(('A => bool) => bool) => 'A => bool" 
  1.3410    "UNIONS ==
  1.3411  %u::('A::type => bool) => bool.
  1.3412     GSPEC
  1.3413 @@ -5047,7 +5436,7 @@
  1.3414    by (import hollight DEF_UNIONS)
  1.3415  
  1.3416  consts
  1.3417 -  INTER :: "('A::type => bool) => ('A::type => bool) => 'A::type => bool" 
  1.3418 +  INTER :: "('A => bool) => ('A => bool) => 'A => bool" 
  1.3419  
  1.3420  defs
  1.3421    INTER_def: "hollight.INTER ==
  1.3422 @@ -5060,7 +5449,7 @@
  1.3423    by (import hollight DEF_INTER)
  1.3424  
  1.3425  constdefs
  1.3426 -  INTERS :: "(('A::type => bool) => bool) => 'A::type => bool" 
  1.3427 +  INTERS :: "(('A => bool) => bool) => 'A => bool" 
  1.3428    "INTERS ==
  1.3429  %u::('A::type => bool) => bool.
  1.3430     GSPEC
  1.3431 @@ -5077,7 +5466,7 @@
  1.3432    by (import hollight DEF_INTERS)
  1.3433  
  1.3434  constdefs
  1.3435 -  DIFF :: "('A::type => bool) => ('A::type => bool) => 'A::type => bool" 
  1.3436 +  DIFF :: "('A => bool) => ('A => bool) => 'A => bool" 
  1.3437    "DIFF ==
  1.3438  %(u::'A::type => bool) ua::'A::type => bool.
  1.3439     GSPEC (%ub::'A::type. EX x::'A::type. SETSPEC ub (IN x u & ~ IN x ua) x)"
  1.3440 @@ -5093,7 +5482,7 @@
  1.3441    by (import hollight INSERT)
  1.3442  
  1.3443  constdefs
  1.3444 -  DELETE :: "('A::type => bool) => 'A::type => 'A::type => bool" 
  1.3445 +  DELETE :: "('A => bool) => 'A => 'A => bool" 
  1.3446    "DELETE ==
  1.3447  %(u::'A::type => bool) ua::'A::type.
  1.3448     GSPEC (%ub::'A::type. EX y::'A::type. SETSPEC ub (IN y u & y ~= ua) y)"
  1.3449 @@ -5104,7 +5493,7 @@
  1.3450    by (import hollight DEF_DELETE)
  1.3451  
  1.3452  constdefs
  1.3453 -  SUBSET :: "('A::type => bool) => ('A::type => bool) => bool" 
  1.3454 +  SUBSET :: "('A => bool) => ('A => bool) => bool" 
  1.3455    "SUBSET ==
  1.3456  %(u::'A::type => bool) ua::'A::type => bool.
  1.3457     ALL x::'A::type. IN x u --> IN x ua"
  1.3458 @@ -5115,7 +5504,7 @@
  1.3459    by (import hollight DEF_SUBSET)
  1.3460  
  1.3461  constdefs
  1.3462 -  PSUBSET :: "('A::type => bool) => ('A::type => bool) => bool" 
  1.3463 +  PSUBSET :: "('A => bool) => ('A => bool) => bool" 
  1.3464    "PSUBSET ==
  1.3465  %(u::'A::type => bool) ua::'A::type => bool. SUBSET u ua & u ~= ua"
  1.3466  
  1.3467 @@ -5124,7 +5513,7 @@
  1.3468    by (import hollight DEF_PSUBSET)
  1.3469  
  1.3470  constdefs
  1.3471 -  DISJOINT :: "('A::type => bool) => ('A::type => bool) => bool" 
  1.3472 +  DISJOINT :: "('A => bool) => ('A => bool) => bool" 
  1.3473    "DISJOINT ==
  1.3474  %(u::'A::type => bool) ua::'A::type => bool. hollight.INTER u ua = EMPTY"
  1.3475  
  1.3476 @@ -5133,14 +5522,14 @@
  1.3477    by (import hollight DEF_DISJOINT)
  1.3478  
  1.3479  constdefs
  1.3480 -  SING :: "('A::type => bool) => bool" 
  1.3481 +  SING :: "('A => bool) => bool" 
  1.3482    "SING == %u::'A::type => bool. EX x::'A::type. u = INSERT x EMPTY"
  1.3483  
  1.3484  lemma DEF_SING: "SING = (%u::'A::type => bool. EX x::'A::type. u = INSERT x EMPTY)"
  1.3485    by (import hollight DEF_SING)
  1.3486  
  1.3487  constdefs
  1.3488 -  FINITE :: "('A::type => bool) => bool" 
  1.3489 +  FINITE :: "('A => bool) => bool" 
  1.3490    "FINITE ==
  1.3491  %a::'A::type => bool.
  1.3492     ALL FINITE'::('A::type => bool) => bool.
  1.3493 @@ -5163,14 +5552,14 @@
  1.3494    by (import hollight DEF_FINITE)
  1.3495  
  1.3496  constdefs
  1.3497 -  INFINITE :: "('A::type => bool) => bool" 
  1.3498 +  INFINITE :: "('A => bool) => bool" 
  1.3499    "INFINITE == %u::'A::type => bool. ~ FINITE u"
  1.3500  
  1.3501  lemma DEF_INFINITE: "INFINITE = (%u::'A::type => bool. ~ FINITE u)"
  1.3502    by (import hollight DEF_INFINITE)
  1.3503  
  1.3504  constdefs
  1.3505 -  IMAGE :: "('A::type => 'B::type) => ('A::type => bool) => 'B::type => bool" 
  1.3506 +  IMAGE :: "('A => 'B) => ('A => bool) => 'B => bool" 
  1.3507    "IMAGE ==
  1.3508  %(u::'A::type => 'B::type) ua::'A::type => bool.
  1.3509     GSPEC
  1.3510 @@ -5185,7 +5574,7 @@
  1.3511    by (import hollight DEF_IMAGE)
  1.3512  
  1.3513  constdefs
  1.3514 -  INJ :: "('A::type => 'B::type) => ('A::type => bool) => ('B::type => bool) => bool" 
  1.3515 +  INJ :: "('A => 'B) => ('A => bool) => ('B => bool) => bool" 
  1.3516    "INJ ==
  1.3517  %(u::'A::type => 'B::type) (ua::'A::type => bool) ub::'B::type => bool.
  1.3518     (ALL x::'A::type. IN x ua --> IN (u x) ub) &
  1.3519 @@ -5199,7 +5588,7 @@
  1.3520    by (import hollight DEF_INJ)
  1.3521  
  1.3522  constdefs
  1.3523 -  SURJ :: "('A::type => 'B::type) => ('A::type => bool) => ('B::type => bool) => bool" 
  1.3524 +  SURJ :: "('A => 'B) => ('A => bool) => ('B => bool) => bool" 
  1.3525    "SURJ ==
  1.3526  %(u::'A::type => 'B::type) (ua::'A::type => bool) ub::'B::type => bool.
  1.3527     (ALL x::'A::type. IN x ua --> IN (u x) ub) &
  1.3528 @@ -5212,7 +5601,7 @@
  1.3529    by (import hollight DEF_SURJ)
  1.3530  
  1.3531  constdefs
  1.3532 -  BIJ :: "('A::type => 'B::type) => ('A::type => bool) => ('B::type => bool) => bool" 
  1.3533 +  BIJ :: "('A => 'B) => ('A => bool) => ('B => bool) => bool" 
  1.3534    "BIJ ==
  1.3535  %(u::'A::type => 'B::type) (ua::'A::type => bool) ub::'B::type => bool.
  1.3536     INJ u ua ub & SURJ u ua ub"
  1.3537 @@ -5223,21 +5612,21 @@
  1.3538    by (import hollight DEF_BIJ)
  1.3539  
  1.3540  constdefs
  1.3541 -  CHOICE :: "('A::type => bool) => 'A::type" 
  1.3542 +  CHOICE :: "('A => bool) => 'A" 
  1.3543    "CHOICE == %u::'A::type => bool. SOME x::'A::type. IN x u"
  1.3544  
  1.3545  lemma DEF_CHOICE: "CHOICE = (%u::'A::type => bool. SOME x::'A::type. IN x u)"
  1.3546    by (import hollight DEF_CHOICE)
  1.3547  
  1.3548  constdefs
  1.3549 -  REST :: "('A::type => bool) => 'A::type => bool" 
  1.3550 +  REST :: "('A => bool) => 'A => bool" 
  1.3551    "REST == %u::'A::type => bool. DELETE u (CHOICE u)"
  1.3552  
  1.3553  lemma DEF_REST: "REST = (%u::'A::type => bool. DELETE u (CHOICE u))"
  1.3554    by (import hollight DEF_REST)
  1.3555  
  1.3556  constdefs
  1.3557 -  CARD_GE :: "('q_37578::type => bool) => ('q_37575::type => bool) => bool" 
  1.3558 +  CARD_GE :: "('q_37578 => bool) => ('q_37575 => bool) => bool" 
  1.3559    "CARD_GE ==
  1.3560  %(u::'q_37578::type => bool) ua::'q_37575::type => bool.
  1.3561     EX f::'q_37578::type => 'q_37575::type.
  1.3562 @@ -5252,7 +5641,7 @@
  1.3563    by (import hollight DEF_CARD_GE)
  1.3564  
  1.3565  constdefs
  1.3566 -  CARD_LE :: "('q_37587::type => bool) => ('q_37586::type => bool) => bool" 
  1.3567 +  CARD_LE :: "('q_37587 => bool) => ('q_37586 => bool) => bool" 
  1.3568    "CARD_LE ==
  1.3569  %(u::'q_37587::type => bool) ua::'q_37586::type => bool. CARD_GE ua u"
  1.3570  
  1.3571 @@ -5261,7 +5650,7 @@
  1.3572    by (import hollight DEF_CARD_LE)
  1.3573  
  1.3574  constdefs
  1.3575 -  CARD_EQ :: "('q_37597::type => bool) => ('q_37598::type => bool) => bool" 
  1.3576 +  CARD_EQ :: "('q_37597 => bool) => ('q_37598 => bool) => bool" 
  1.3577    "CARD_EQ ==
  1.3578  %(u::'q_37597::type => bool) ua::'q_37598::type => bool.
  1.3579     CARD_LE u ua & CARD_LE ua u"
  1.3580 @@ -5272,7 +5661,7 @@
  1.3581    by (import hollight DEF_CARD_EQ)
  1.3582  
  1.3583  constdefs
  1.3584 -  CARD_GT :: "('q_37612::type => bool) => ('q_37613::type => bool) => bool" 
  1.3585 +  CARD_GT :: "('q_37612 => bool) => ('q_37613 => bool) => bool" 
  1.3586    "CARD_GT ==
  1.3587  %(u::'q_37612::type => bool) ua::'q_37613::type => bool.
  1.3588     CARD_GE u ua & ~ CARD_GE ua u"
  1.3589 @@ -5283,7 +5672,7 @@
  1.3590    by (import hollight DEF_CARD_GT)
  1.3591  
  1.3592  constdefs
  1.3593 -  CARD_LT :: "('q_37628::type => bool) => ('q_37629::type => bool) => bool" 
  1.3594 +  CARD_LT :: "('q_37628 => bool) => ('q_37629 => bool) => bool" 
  1.3595    "CARD_LT ==
  1.3596  %(u::'q_37628::type => bool) ua::'q_37629::type => bool.
  1.3597     CARD_LE u ua & ~ CARD_LE ua u"
  1.3598 @@ -5294,7 +5683,7 @@
  1.3599    by (import hollight DEF_CARD_LT)
  1.3600  
  1.3601  constdefs
  1.3602 -  COUNTABLE :: "('q_37642::type => bool) => bool" 
  1.3603 +  COUNTABLE :: "('q_37642 => bool) => bool" 
  1.3604    "(op ==::(('q_37642::type => bool) => bool)
  1.3605          => (('q_37642::type => bool) => bool) => prop)
  1.3606   (COUNTABLE::('q_37642::type => bool) => bool)
  1.3607 @@ -5884,9 +6273,8 @@
  1.3608    by (import hollight FINITE_DIFF)
  1.3609  
  1.3610  constdefs
  1.3611 -  FINREC :: "('q_41615::type => 'q_41614::type => 'q_41614::type)
  1.3612 -=> 'q_41614::type
  1.3613 -   => ('q_41615::type => bool) => 'q_41614::type => nat => bool" 
  1.3614 +  FINREC :: "('q_41615 => 'q_41614 => 'q_41614)
  1.3615 +=> 'q_41614 => ('q_41615 => bool) => 'q_41614 => nat => bool" 
  1.3616    "FINREC ==
  1.3617  SOME FINREC::('q_41615::type => 'q_41614::type => 'q_41614::type)
  1.3618               => 'q_41614::type
  1.3619 @@ -5894,7 +6282,7 @@
  1.3620                     => 'q_41614::type => nat => bool.
  1.3621     (ALL (f::'q_41615::type => 'q_41614::type => 'q_41614::type)
  1.3622         (s::'q_41615::type => bool) (a::'q_41614::type) b::'q_41614::type.
  1.3623 -       FINREC f b s a (0::nat) = (s = EMPTY & a = b)) &
  1.3624 +       FINREC f b s a 0 = (s = EMPTY & a = b)) &
  1.3625     (ALL (b::'q_41614::type) (s::'q_41615::type => bool) (n::nat)
  1.3626         (a::'q_41614::type)
  1.3627         f::'q_41615::type => 'q_41614::type => 'q_41614::type.
  1.3628 @@ -5909,7 +6297,7 @@
  1.3629                      => 'q_41614::type => nat => bool.
  1.3630      (ALL (f::'q_41615::type => 'q_41614::type => 'q_41614::type)
  1.3631          (s::'q_41615::type => bool) (a::'q_41614::type) b::'q_41614::type.
  1.3632 -        FINREC f b s a (0::nat) = (s = EMPTY & a = b)) &
  1.3633 +        FINREC f b s a 0 = (s = EMPTY & a = b)) &
  1.3634      (ALL (b::'q_41614::type) (s::'q_41615::type => bool) (n::nat)
  1.3635          (a::'q_41614::type)
  1.3636          f::'q_41615::type => 'q_41614::type => 'q_41614::type.
  1.3637 @@ -5920,7 +6308,7 @@
  1.3638  
  1.3639  lemma FINREC_1_LEMMA: "ALL (x::'q_41660::type => 'q_41659::type => 'q_41659::type)
  1.3640     (xa::'q_41659::type) (xb::'q_41660::type => bool) xc::'q_41659::type.
  1.3641 -   FINREC x xa xb xc (Suc (0::nat)) =
  1.3642 +   FINREC x xa xb xc (Suc 0) =
  1.3643     (EX xd::'q_41660::type. xb = INSERT xd EMPTY & xc = x xd xa)"
  1.3644    by (import hollight FINREC_1_LEMMA)
  1.3645  
  1.3646 @@ -5973,8 +6361,8 @@
  1.3647    by (import hollight SET_RECURSION_LEMMA)
  1.3648  
  1.3649  constdefs
  1.3650 -  ITSET :: "('q_42316::type => 'q_42315::type => 'q_42315::type)
  1.3651 -=> ('q_42316::type => bool) => 'q_42315::type => 'q_42315::type" 
  1.3652 +  ITSET :: "('q_42316 => 'q_42315 => 'q_42315)
  1.3653 +=> ('q_42316 => bool) => 'q_42315 => 'q_42315" 
  1.3654    "ITSET ==
  1.3655  %(u::'q_42316::type => 'q_42315::type => 'q_42315::type)
  1.3656     (ua::'q_42316::type => bool) ub::'q_42315::type.
  1.3657 @@ -6045,12 +6433,10 @@
  1.3658    by (import hollight FINITE_RESTRICT)
  1.3659  
  1.3660  constdefs
  1.3661 -  CARD :: "('q_42709::type => bool) => nat" 
  1.3662 -  "CARD ==
  1.3663 -%u::'q_42709::type => bool. ITSET (%x::'q_42709::type. Suc) u (0::nat)"
  1.3664 -
  1.3665 -lemma DEF_CARD: "CARD =
  1.3666 -(%u::'q_42709::type => bool. ITSET (%x::'q_42709::type. Suc) u (0::nat))"
  1.3667 +  CARD :: "('q_42709 => bool) => nat" 
  1.3668 +  "CARD == %u::'q_42709::type => bool. ITSET (%x::'q_42709::type. Suc) u 0"
  1.3669 +
  1.3670 +lemma DEF_CARD: "CARD = (%u::'q_42709::type => bool. ITSET (%x::'q_42709::type. Suc) u 0)"
  1.3671    by (import hollight DEF_CARD)
  1.3672  
  1.3673  lemma CARD_CLAUSES: "(op &::bool => bool => bool)
  1.3674 @@ -6081,8 +6467,7 @@
  1.3675  
  1.3676  lemma CARD_DELETE: "ALL (x::'A::type) s::'A::type => bool.
  1.3677     FINITE s -->
  1.3678 -   CARD (DELETE s x) =
  1.3679 -   COND (IN x s) (CARD s - NUMERAL_BIT1 (0::nat)) (CARD s)"
  1.3680 +   CARD (DELETE s x) = COND (IN x s) (CARD s - NUMERAL_BIT1 0) (CARD s)"
  1.3681    by (import hollight CARD_DELETE)
  1.3682  
  1.3683  lemma CARD_UNION_EQ: "ALL (s::'q_42954::type => bool) (t::'q_42954::type => bool)
  1.3684 @@ -6092,7 +6477,7 @@
  1.3685    by (import hollight CARD_UNION_EQ)
  1.3686  
  1.3687  constdefs
  1.3688 -  HAS_SIZE :: "('q_42990::type => bool) => nat => bool" 
  1.3689 +  HAS_SIZE :: "('q_42990 => bool) => nat => bool" 
  1.3690    "HAS_SIZE == %(u::'q_42990::type => bool) ua::nat. FINITE u & CARD u = ua"
  1.3691  
  1.3692  lemma DEF_HAS_SIZE: "HAS_SIZE = (%(u::'q_42990::type => bool) ua::nat. FINITE u & CARD u = ua)"
  1.3693 @@ -6101,8 +6486,7 @@
  1.3694  lemma HAS_SIZE_CARD: "ALL (x::'q_43009::type => bool) xa::nat. HAS_SIZE x xa --> CARD x = xa"
  1.3695    by (import hollight HAS_SIZE_CARD)
  1.3696  
  1.3697 -lemma HAS_SIZE_0: "ALL (s::'A::type => bool) n::'q_43025::type.
  1.3698 -   HAS_SIZE s (0::nat) = (s = EMPTY)"
  1.3699 +lemma HAS_SIZE_0: "ALL (s::'A::type => bool) n::'q_43025::type. HAS_SIZE s 0 = (s = EMPTY)"
  1.3700    by (import hollight HAS_SIZE_0)
  1.3701  
  1.3702  lemma HAS_SIZE_SUC: "ALL (s::'A::type => bool) n::nat.
  1.3703 @@ -6130,7 +6514,7 @@
  1.3704      (xb * xc)"
  1.3705    by (import hollight HAS_SIZE_UNIONS)
  1.3706  
  1.3707 -lemma HAS_SIZE_CLAUSES: "HAS_SIZE (s::'q_43395::type => bool) (0::nat) = (s = EMPTY) &
  1.3708 +lemma HAS_SIZE_CLAUSES: "HAS_SIZE (s::'q_43395::type => bool) 0 = (s = EMPTY) &
  1.3709  HAS_SIZE s (Suc (n::nat)) =
  1.3710  (EX (a::'q_43395::type) t::'q_43395::type => bool.
  1.3711      HAS_SIZE t n & ~ IN a t & s = INSERT a t)"
  1.3712 @@ -6148,8 +6532,7 @@
  1.3713     FINITE b & SUBSET a b & <= (CARD b) (CARD a) --> a = b"
  1.3714    by (import hollight CARD_SUBSET_LE)
  1.3715  
  1.3716 -lemma CARD_EQ_0: "ALL s::'q_43711::type => bool.
  1.3717 -   FINITE s --> (CARD s = (0::nat)) = (s = EMPTY)"
  1.3718 +lemma CARD_EQ_0: "ALL s::'q_43711::type => bool. FINITE s --> (CARD s = 0) = (s = EMPTY)"
  1.3719    by (import hollight CARD_EQ_0)
  1.3720  
  1.3721  lemma CARD_PSUBSET: "ALL (a::'A::type => bool) b::'A::type => bool.
  1.3722 @@ -6293,7 +6676,7 @@
  1.3723      (GSPEC
  1.3724        (%u::'A::type => bool.
  1.3725            EX t::'A::type => bool. SETSPEC u (SUBSET t s) t))
  1.3726 -    (EXP (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) n)"
  1.3727 +    (EXP (NUMERAL_BIT0 (NUMERAL_BIT1 0)) n)"
  1.3728    by (import hollight HAS_SIZE_POWERSET)
  1.3729  
  1.3730  lemma CARD_POWERSET: "ALL s::'A::type => bool.
  1.3731 @@ -6302,7 +6685,7 @@
  1.3732      (GSPEC
  1.3733        (%u::'A::type => bool.
  1.3734            EX t::'A::type => bool. SETSPEC u (SUBSET t s) t)) =
  1.3735 -   EXP (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) (CARD s)"
  1.3736 +   EXP (NUMERAL_BIT0 (NUMERAL_BIT1 0)) (CARD s)"
  1.3737    by (import hollight CARD_POWERSET)
  1.3738  
  1.3739  lemma FINITE_POWERSET: "ALL s::'A::type => bool.
  1.3740 @@ -6336,7 +6719,7 @@
  1.3741  
  1.3742  lemma HAS_SIZE_NUMSEG_LE: "ALL x::nat.
  1.3743     HAS_SIZE (GSPEC (%xa::nat. EX xb::nat. SETSPEC xa (<= xb x) xb))
  1.3744 -    (x + NUMERAL_BIT1 (0::nat))"
  1.3745 +    (x + NUMERAL_BIT1 0)"
  1.3746    by (import hollight HAS_SIZE_NUMSEG_LE)
  1.3747  
  1.3748  lemma FINITE_NUMSEG_LE: "ALL x::nat. FINITE (GSPEC (%u::nat. EX m::nat. SETSPEC u (<= m x) m))"
  1.3749 @@ -6344,7 +6727,7 @@
  1.3750  
  1.3751  lemma CARD_NUMSEG_LE: "ALL x::nat.
  1.3752     CARD (GSPEC (%u::nat. EX m::nat. SETSPEC u (<= m x) m)) =
  1.3753 -   x + NUMERAL_BIT1 (0::nat)"
  1.3754 +   x + NUMERAL_BIT1 0"
  1.3755    by (import hollight CARD_NUMSEG_LE)
  1.3756  
  1.3757  lemma num_FINITE: "ALL s::nat => bool. FINITE s = (EX a::nat. ALL x::nat. IN x s --> <= x a)"
  1.3758 @@ -6364,7 +6747,7 @@
  1.3759    by (import hollight HAS_SIZE_INDEX)
  1.3760  
  1.3761  constdefs
  1.3762 -  set_of_list :: "'q_45759::type hollight.list => 'q_45759::type => bool" 
  1.3763 +  set_of_list :: "'q_45759 hollight.list => 'q_45759 => bool" 
  1.3764    "set_of_list ==
  1.3765  SOME set_of_list::'q_45759::type hollight.list => 'q_45759::type => bool.
  1.3766     set_of_list NIL = EMPTY &
  1.3767 @@ -6379,7 +6762,7 @@
  1.3768    by (import hollight DEF_set_of_list)
  1.3769  
  1.3770  constdefs
  1.3771 -  list_of_set :: "('q_45777::type => bool) => 'q_45777::type hollight.list" 
  1.3772 +  list_of_set :: "('q_45777 => bool) => 'q_45777 hollight.list" 
  1.3773    "list_of_set ==
  1.3774  %u::'q_45777::type => bool.
  1.3775     SOME l::'q_45777::type hollight.list.
  1.3776 @@ -6419,8 +6802,7 @@
  1.3777    by (import hollight SET_OF_LIST_APPEND)
  1.3778  
  1.3779  constdefs
  1.3780 -  pairwise :: "('q_45989::type => 'q_45989::type => bool)
  1.3781 -=> ('q_45989::type => bool) => bool" 
  1.3782 +  pairwise :: "('q_45989 => 'q_45989 => bool) => ('q_45989 => bool) => bool" 
  1.3783    "pairwise ==
  1.3784  %(u::'q_45989::type => 'q_45989::type => bool) ua::'q_45989::type => bool.
  1.3785     ALL (x::'q_45989::type) y::'q_45989::type.
  1.3786 @@ -6433,8 +6815,7 @@
  1.3787    by (import hollight DEF_pairwise)
  1.3788  
  1.3789  constdefs
  1.3790 -  PAIRWISE :: "('q_46011::type => 'q_46011::type => bool)
  1.3791 -=> 'q_46011::type hollight.list => bool" 
  1.3792 +  PAIRWISE :: "('q_46011 => 'q_46011 => bool) => 'q_46011 hollight.list => bool" 
  1.3793    "PAIRWISE ==
  1.3794  SOME PAIRWISE::('q_46011::type => 'q_46011::type => bool)
  1.3795                 => 'q_46011::type hollight.list => bool.
  1.3796 @@ -6477,7 +6858,7 @@
  1.3797    mk_finite_image :: _ 
  1.3798  
  1.3799  lemmas "TYDEF_finite_image_@intern" = typedef_hol2hollight 
  1.3800 -  [where a="a :: 'A::type finite_image" and r=r ,
  1.3801 +  [where a="a :: 'A finite_image" and r=r ,
  1.3802     OF type_definition_finite_image]
  1.3803  
  1.3804  lemma FINITE_IMAGE_IMAGE: "(op =::('A::type finite_image => bool)
  1.3805 @@ -6497,7 +6878,7 @@
  1.3806    by (import hollight FINITE_IMAGE_IMAGE)
  1.3807  
  1.3808  constdefs
  1.3809 -  dimindex :: "('A::type => bool) => nat" 
  1.3810 +  dimindex :: "('A => bool) => nat" 
  1.3811    "(op ==::(('A::type => bool) => nat) => (('A::type => bool) => nat) => prop)
  1.3812   (dimindex::('A::type => bool) => nat)
  1.3813   (%u::'A::type => bool.
  1.3814 @@ -6536,10 +6917,10 @@
  1.3815   (hollight.UNIV::'A::type finite_image => bool)"
  1.3816    by (import hollight FINITE_FINITE_IMAGE)
  1.3817  
  1.3818 -lemma DIMINDEX_NONZERO: "ALL s::'A::type => bool. dimindex s ~= (0::nat)"
  1.3819 +lemma DIMINDEX_NONZERO: "ALL s::'A::type => bool. dimindex s ~= 0"
  1.3820    by (import hollight DIMINDEX_NONZERO)
  1.3821  
  1.3822 -lemma DIMINDEX_GE_1: "ALL x::'A::type => bool. <= (NUMERAL_BIT1 (0::nat)) (dimindex x)"
  1.3823 +lemma DIMINDEX_GE_1: "ALL x::'A::type => bool. <= (NUMERAL_BIT1 0) (dimindex x)"
  1.3824    by (import hollight DIMINDEX_GE_1)
  1.3825  
  1.3826  lemma DIMINDEX_FINITE_IMAGE: "ALL (s::'A::type finite_image => bool) t::'A::type => bool.
  1.3827 @@ -6547,7 +6928,7 @@
  1.3828    by (import hollight DIMINDEX_FINITE_IMAGE)
  1.3829  
  1.3830  constdefs
  1.3831 -  finite_index :: "nat => 'A::type" 
  1.3832 +  finite_index :: "nat => 'A" 
  1.3833    "(op ==::(nat => 'A::type) => (nat => 'A::type) => prop)
  1.3834   (finite_index::nat => 'A::type)
  1.3835   ((Eps::((nat => 'A::type) => bool) => nat => 'A::type)
  1.3836 @@ -6669,11 +7050,11 @@
  1.3837    mk_cart :: _ 
  1.3838  
  1.3839  lemmas "TYDEF_cart_@intern" = typedef_hol2hollight 
  1.3840 -  [where a="a :: ('A::type, 'B::type) cart" and r=r ,
  1.3841 +  [where a="a :: ('A, 'B) cart" and r=r ,
  1.3842     OF type_definition_cart]
  1.3843  
  1.3844  consts
  1.3845 -  "$" :: "('q_46418::type, 'q_46425::type) cart => nat => 'q_46418::type" ("$")
  1.3846 +  "$" :: "('q_46418, 'q_46425) cart => nat => 'q_46418" ("$")
  1.3847  
  1.3848  defs
  1.3849    "$_def": "$ ==
  1.3850 @@ -6709,7 +7090,7 @@
  1.3851    by (import hollight CART_EQ)
  1.3852  
  1.3853  constdefs
  1.3854 -  lambda :: "(nat => 'A::type) => ('A::type, 'B::type) cart" 
  1.3855 +  lambda :: "(nat => 'A) => ('A, 'B) cart" 
  1.3856    "(op ==::((nat => 'A::type) => ('A::type, 'B::type) cart)
  1.3857          => ((nat => 'A::type) => ('A::type, 'B::type) cart) => prop)
  1.3858   (lambda::(nat => 'A::type) => ('A::type, 'B::type) cart)
  1.3859 @@ -6806,13 +7187,11 @@
  1.3860    mk_finite_sum :: _ 
  1.3861  
  1.3862  lemmas "TYDEF_finite_sum_@intern" = typedef_hol2hollight 
  1.3863 -  [where a="a :: ('A::type, 'B::type) finite_sum" and r=r ,
  1.3864 +  [where a="a :: ('A, 'B) finite_sum" and r=r ,
  1.3865     OF type_definition_finite_sum]
  1.3866  
  1.3867  constdefs
  1.3868 -  pastecart :: "('A::type, 'M::type) cart
  1.3869 -=> ('A::type, 'N::type) cart
  1.3870 -   => ('A::type, ('M::type, 'N::type) finite_sum) cart" 
  1.3871 +  pastecart :: "('A, 'M) cart => ('A, 'N) cart => ('A, ('M, 'N) finite_sum) cart" 
  1.3872    "(op ==::(('A::type, 'M::type) cart
  1.3873           => ('A::type, 'N::type) cart
  1.3874              => ('A::type, ('M::type, 'N::type) finite_sum) cart)
  1.3875 @@ -6863,8 +7242,7 @@
  1.3876    by (import hollight DEF_pastecart)
  1.3877  
  1.3878  constdefs
  1.3879 -  fstcart :: "('A::type, ('M::type, 'N::type) finite_sum) cart
  1.3880 -=> ('A::type, 'M::type) cart" 
  1.3881 +  fstcart :: "('A, ('M, 'N) finite_sum) cart => ('A, 'M) cart" 
  1.3882    "fstcart ==
  1.3883  %u::('A::type, ('M::type, 'N::type) finite_sum) cart. lambda ($ u)"
  1.3884  
  1.3885 @@ -6873,8 +7251,7 @@
  1.3886    by (import hollight DEF_fstcart)
  1.3887  
  1.3888  constdefs
  1.3889 -  sndcart :: "('A::type, ('M::type, 'N::type) finite_sum) cart
  1.3890 -=> ('A::type, 'N::type) cart" 
  1.3891 +  sndcart :: "('A, ('M, 'N) finite_sum) cart => ('A, 'N) cart" 
  1.3892    "(op ==::(('A::type, ('M::type, 'N::type) finite_sum) cart
  1.3893           => ('A::type, 'N::type) cart)
  1.3894          => (('A::type, ('M::type, 'N::type) finite_sum) cart
  1.3895 @@ -7057,24 +7434,20 @@
  1.3896  
  1.3897  lemma NUMSEG_COMBINE_R: "ALL (x::'q_47957::type) (p::nat) m::nat.
  1.3898     <= m p & <= p (n::nat) -->
  1.3899 -   hollight.UNION (dotdot m p) (dotdot (p + NUMERAL_BIT1 (0::nat)) n) =
  1.3900 -   dotdot m n"
  1.3901 +   hollight.UNION (dotdot m p) (dotdot (p + NUMERAL_BIT1 0) n) = dotdot m n"
  1.3902    by (import hollight NUMSEG_COMBINE_R)
  1.3903  
  1.3904  lemma NUMSEG_COMBINE_L: "ALL (x::'q_47995::type) (p::nat) m::nat.
  1.3905     <= m p & <= p (n::nat) -->
  1.3906 -   hollight.UNION (dotdot m (p - NUMERAL_BIT1 (0::nat))) (dotdot p n) =
  1.3907 -   dotdot m n"
  1.3908 +   hollight.UNION (dotdot m (p - NUMERAL_BIT1 0)) (dotdot p n) = dotdot m n"
  1.3909    by (import hollight NUMSEG_COMBINE_L)
  1.3910  
  1.3911  lemma NUMSEG_LREC: "ALL (x::nat) xa::nat.
  1.3912 -   <= x xa -->
  1.3913 -   INSERT x (dotdot (x + NUMERAL_BIT1 (0::nat)) xa) = dotdot x xa"
  1.3914 +   <= x xa --> INSERT x (dotdot (x + NUMERAL_BIT1 0) xa) = dotdot x xa"
  1.3915    by (import hollight NUMSEG_LREC)
  1.3916  
  1.3917  lemma NUMSEG_RREC: "ALL (x::nat) xa::nat.
  1.3918 -   <= x xa -->
  1.3919 -   INSERT xa (dotdot x (xa - NUMERAL_BIT1 (0::nat))) = dotdot x xa"
  1.3920 +   <= x xa --> INSERT xa (dotdot x (xa - NUMERAL_BIT1 0)) = dotdot x xa"
  1.3921    by (import hollight NUMSEG_RREC)
  1.3922  
  1.3923  lemma NUMSEG_REC: "ALL (x::nat) xa::nat.
  1.3924 @@ -7090,24 +7463,22 @@
  1.3925  lemma NUMSEG_EMPTY: "ALL (x::nat) xa::nat. (dotdot x xa = EMPTY) = < xa x"
  1.3926    by (import hollight NUMSEG_EMPTY)
  1.3927  
  1.3928 -lemma CARD_NUMSEG_LEMMA: "ALL (m::nat) d::nat. CARD (dotdot m (m + d)) = d + NUMERAL_BIT1 (0::nat)"
  1.3929 +lemma CARD_NUMSEG_LEMMA: "ALL (m::nat) d::nat. CARD (dotdot m (m + d)) = d + NUMERAL_BIT1 0"
  1.3930    by (import hollight CARD_NUMSEG_LEMMA)
  1.3931  
  1.3932 -lemma CARD_NUMSEG: "ALL (m::nat) n::nat. CARD (dotdot m n) = n + NUMERAL_BIT1 (0::nat) - m"
  1.3933 +lemma CARD_NUMSEG: "ALL (m::nat) n::nat. CARD (dotdot m n) = n + NUMERAL_BIT1 0 - m"
  1.3934    by (import hollight CARD_NUMSEG)
  1.3935  
  1.3936 -lemma HAS_SIZE_NUMSEG: "ALL (x::nat) xa::nat.
  1.3937 -   HAS_SIZE (dotdot x xa) (xa + NUMERAL_BIT1 (0::nat) - x)"
  1.3938 +lemma HAS_SIZE_NUMSEG: "ALL (x::nat) xa::nat. HAS_SIZE (dotdot x xa) (xa + NUMERAL_BIT1 0 - x)"
  1.3939    by (import hollight HAS_SIZE_NUMSEG)
  1.3940  
  1.3941 -lemma CARD_NUMSEG_1: "ALL x::nat. CARD (dotdot (NUMERAL_BIT1 (0::nat)) x) = x"
  1.3942 +lemma CARD_NUMSEG_1: "ALL x::nat. CARD (dotdot (NUMERAL_BIT1 0) x) = x"
  1.3943    by (import hollight CARD_NUMSEG_1)
  1.3944  
  1.3945 -lemma HAS_SIZE_NUMSEG_1: "ALL x::nat. HAS_SIZE (dotdot (NUMERAL_BIT1 (0::nat)) x) x"
  1.3946 +lemma HAS_SIZE_NUMSEG_1: "ALL x::nat. HAS_SIZE (dotdot (NUMERAL_BIT1 0) x) x"
  1.3947    by (import hollight HAS_SIZE_NUMSEG_1)
  1.3948  
  1.3949 -lemma NUMSEG_CLAUSES: "(ALL m::nat.
  1.3950 -    dotdot m (0::nat) = COND (m = (0::nat)) (INSERT (0::nat) EMPTY) EMPTY) &
  1.3951 +lemma NUMSEG_CLAUSES: "(ALL m::nat. dotdot m 0 = COND (m = 0) (INSERT 0 EMPTY) EMPTY) &
  1.3952  (ALL (m::nat) n::nat.
  1.3953      dotdot m (Suc n) =
  1.3954      COND (<= m (Suc n)) (INSERT (Suc n) (dotdot m n)) (dotdot m n))"
  1.3955 @@ -7117,10 +7488,10 @@
  1.3956     FINITE s =
  1.3957     (EX f::nat => 'A::type.
  1.3958         (ALL (i::nat) j::nat.
  1.3959 -           IN i (dotdot (NUMERAL_BIT1 (0::nat)) (CARD s)) &
  1.3960 -           IN j (dotdot (NUMERAL_BIT1 (0::nat)) (CARD s)) & f i = f j -->
  1.3961 +           IN i (dotdot (NUMERAL_BIT1 0) (CARD s)) &
  1.3962 +           IN j (dotdot (NUMERAL_BIT1 0) (CARD s)) & f i = f j -->
  1.3963             i = j) &
  1.3964 -       s = IMAGE f (dotdot (NUMERAL_BIT1 (0::nat)) (CARD s)))"
  1.3965 +       s = IMAGE f (dotdot (NUMERAL_BIT1 0) (CARD s)))"
  1.3966    by (import hollight FINITE_INDEX_NUMSEG)
  1.3967  
  1.3968  lemma FINITE_INDEX_NUMBERS: "ALL s::'A::type => bool.
  1.3969 @@ -7136,10 +7507,9 @@
  1.3970    by (import hollight DISJOINT_NUMSEG)
  1.3971  
  1.3972  lemma NUMSEG_ADD_SPLIT: "ALL (x::nat) (xa::nat) xb::nat.
  1.3973 -   <= x (xa + NUMERAL_BIT1 (0::nat)) -->
  1.3974 +   <= x (xa + NUMERAL_BIT1 0) -->
  1.3975     dotdot x (xa + xb) =
  1.3976 -   hollight.UNION (dotdot x xa)
  1.3977 -    (dotdot (xa + NUMERAL_BIT1 (0::nat)) (xa + xb))"
  1.3978 +   hollight.UNION (dotdot x xa) (dotdot (xa + NUMERAL_BIT1 0) (xa + xb))"
  1.3979    by (import hollight NUMSEG_ADD_SPLIT)
  1.3980  
  1.3981  lemma NUMSEG_OFFSET_IMAGE: "ALL (x::nat) (xa::nat) xb::nat.
  1.3982 @@ -7151,7 +7521,7 @@
  1.3983    by (import hollight SUBSET_NUMSEG)
  1.3984  
  1.3985  constdefs
  1.3986 -  neutral :: "('q_48776::type => 'q_48776::type => 'q_48776::type) => 'q_48776::type" 
  1.3987 +  neutral :: "('q_48776 => 'q_48776 => 'q_48776) => 'q_48776" 
  1.3988    "neutral ==
  1.3989  %u::'q_48776::type => 'q_48776::type => 'q_48776::type.
  1.3990     SOME x::'q_48776::type. ALL y::'q_48776::type. u x y = y & u y x = y"
  1.3991 @@ -7162,7 +7532,7 @@
  1.3992    by (import hollight DEF_neutral)
  1.3993  
  1.3994  constdefs
  1.3995 -  monoidal :: "('A::type => 'A::type => 'A::type) => bool" 
  1.3996 +  monoidal :: "('A => 'A => 'A) => bool" 
  1.3997    "monoidal ==
  1.3998  %u::'A::type => 'A::type => 'A::type.
  1.3999     (ALL (x::'A::type) y::'A::type. u x y = u y x) &
  1.4000 @@ -7179,8 +7549,7 @@
  1.4001    by (import hollight DEF_monoidal)
  1.4002  
  1.4003  constdefs
  1.4004 -  support :: "('B::type => 'B::type => 'B::type)
  1.4005 -=> ('A::type => 'B::type) => ('A::type => bool) => 'A::type => bool" 
  1.4006 +  support :: "('B => 'B => 'B) => ('A => 'B) => ('A => bool) => 'A => bool" 
  1.4007    "support ==
  1.4008  %(u::'B::type => 'B::type => 'B::type) (ua::'A::type => 'B::type)
  1.4009     ub::'A::type => bool.
  1.4010 @@ -7197,8 +7566,8 @@
  1.4011    by (import hollight DEF_support)
  1.4012  
  1.4013  constdefs
  1.4014 -  iterate :: "('q_48881::type => 'q_48881::type => 'q_48881::type)
  1.4015 -=> ('A::type => bool) => ('A::type => 'q_48881::type) => 'q_48881::type" 
  1.4016 +  iterate :: "('q_48881 => 'q_48881 => 'q_48881)
  1.4017 +=> ('A => bool) => ('A => 'q_48881) => 'q_48881" 
  1.4018    "iterate ==
  1.4019  %(u::'q_48881::type => 'q_48881::type => 'q_48881::type)
  1.4020     (ua::'A::type => bool) ub::'A::type => 'q_48881::type.
  1.4021 @@ -7406,7 +7775,7 @@
  1.4022    by (import hollight ITERATE_IMAGE)
  1.4023  
  1.4024  constdefs
  1.4025 -  nsum :: "('q_50348::type => bool) => ('q_50348::type => nat) => nat" 
  1.4026 +  nsum :: "('q_50348 => bool) => ('q_50348 => nat) => nat" 
  1.4027    "(op ==::(('q_50348::type => bool) => ('q_50348::type => nat) => nat)
  1.4028          => (('q_50348::type => bool) => ('q_50348::type => nat) => nat)
  1.4029             => prop)
  1.4030 @@ -7424,10 +7793,11 @@
  1.4031     (op +::nat => nat => nat))"
  1.4032    by (import hollight DEF_nsum)
  1.4033  
  1.4034 -lemma NEUTRAL_ADD: "neutral op + = (0::nat)"
  1.4035 +lemma NEUTRAL_ADD: "(op =::nat => nat => bool)
  1.4036 + ((neutral::(nat => nat => nat) => nat) (op +::nat => nat => nat)) (0::nat)"
  1.4037    by (import hollight NEUTRAL_ADD)
  1.4038  
  1.4039 -lemma NEUTRAL_MUL: "neutral op * = NUMERAL_BIT1 (0::nat)"
  1.4040 +lemma NEUTRAL_MUL: "neutral op * = NUMERAL_BIT1 0"
  1.4041    by (import hollight NEUTRAL_MUL)
  1.4042  
  1.4043  lemma MONOIDAL_ADD: "(monoidal::(nat => nat => nat) => bool) (op +::nat => nat => nat)"
  1.4044 @@ -7436,7 +7806,7 @@
  1.4045  lemma MONOIDAL_MUL: "(monoidal::(nat => nat => nat) => bool) (op *::nat => nat => nat)"
  1.4046    by (import hollight MONOIDAL_MUL)
  1.4047  
  1.4048 -lemma NSUM_CLAUSES: "(ALL x::'q_50386::type => nat. nsum EMPTY x = (0::nat)) &
  1.4049 +lemma NSUM_CLAUSES: "(ALL x::'q_50386::type => nat. nsum EMPTY x = 0) &
  1.4050  (ALL (x::'q_50425::type) (xa::'q_50425::type => nat)
  1.4051      xb::'q_50425::type => bool.
  1.4052      FINITE xb -->
  1.4053 @@ -7498,28 +7868,27 @@
  1.4054    by (import hollight NSUM_CONST)
  1.4055  
  1.4056  lemma NSUM_EQ_0: "ALL (x::'A::type => nat) xa::'A::type => bool.
  1.4057 -   (ALL xb::'A::type. IN xb xa --> x xb = (0::nat)) --> nsum xa x = (0::nat)"
  1.4058 +   (ALL xb::'A::type. IN xb xa --> x xb = 0) --> nsum xa x = 0"
  1.4059    by (import hollight NSUM_EQ_0)
  1.4060  
  1.4061 -lemma NSUM_0: "ALL x::'A::type => bool. nsum x (%n::'A::type. 0::nat) = (0::nat)"
  1.4062 +lemma NSUM_0: "ALL x::'A::type => bool. nsum x (%n::'A::type. 0) = 0"
  1.4063    by (import hollight NSUM_0)
  1.4064  
  1.4065  lemma NSUM_POS_LE: "ALL (x::'q_50941::type => nat) xa::'q_50941::type => bool.
  1.4066 -   FINITE xa & (ALL xb::'q_50941::type. IN xb xa --> <= (0::nat) (x xb)) -->
  1.4067 -   <= (0::nat) (nsum xa x)"
  1.4068 +   FINITE xa & (ALL xb::'q_50941::type. IN xb xa --> <= 0 (x xb)) -->
  1.4069 +   <= 0 (nsum xa x)"
  1.4070    by (import hollight NSUM_POS_LE)
  1.4071  
  1.4072  lemma NSUM_POS_BOUND: "ALL (f::'A::type => nat) (b::nat) x::'A::type => bool.
  1.4073     FINITE x &
  1.4074 -   (ALL xa::'A::type. IN xa x --> <= (0::nat) (f xa)) & <= (nsum x f) b -->
  1.4075 +   (ALL xa::'A::type. IN xa x --> <= 0 (f xa)) & <= (nsum x f) b -->
  1.4076     (ALL xa::'A::type. IN xa x --> <= (f xa) b)"
  1.4077    by (import hollight NSUM_POS_BOUND)
  1.4078  
  1.4079  lemma NSUM_POS_EQ_0: "ALL (x::'q_51076::type => nat) xa::'q_51076::type => bool.
  1.4080     FINITE xa &
  1.4081 -   (ALL xb::'q_51076::type. IN xb xa --> <= (0::nat) (x xb)) &
  1.4082 -   nsum xa x = (0::nat) -->
  1.4083 -   (ALL xb::'q_51076::type. IN xb xa --> x xb = (0::nat))"
  1.4084 +   (ALL xb::'q_51076::type. IN xb xa --> <= 0 (x xb)) & nsum xa x = 0 -->
  1.4085 +   (ALL xb::'q_51076::type. IN xb xa --> x xb = 0)"
  1.4086    by (import hollight NSUM_POS_EQ_0)
  1.4087  
  1.4088  lemma NSUM_SING: "ALL (x::'q_51096::type => nat) xa::'q_51096::type.
  1.4089 @@ -7527,8 +7896,7 @@
  1.4090    by (import hollight NSUM_SING)
  1.4091  
  1.4092  lemma NSUM_DELTA: "ALL (x::'A::type => bool) xa::'A::type.
  1.4093 -   nsum x (%x::'A::type. COND (x = xa) (b::nat) (0::nat)) =
  1.4094 -   COND (IN xa x) b (0::nat)"
  1.4095 +   nsum x (%x::'A::type. COND (x = xa) (b::nat) 0) = COND (IN xa x) b 0"
  1.4096    by (import hollight NSUM_DELTA)
  1.4097  
  1.4098  lemma NSUM_SWAP: "ALL (f::'A::type => 'B::type => nat) (x::'A::type => bool)
  1.4099 @@ -7548,23 +7916,23 @@
  1.4100  
  1.4101  lemma NSUM_SUPERSET: "ALL (f::'A::type => nat) (u::'A::type => bool) v::'A::type => bool.
  1.4102     FINITE u &
  1.4103 -   SUBSET u v & (ALL x::'A::type. IN x v & ~ IN x u --> f x = (0::nat)) -->
  1.4104 +   SUBSET u v & (ALL x::'A::type. IN x v & ~ IN x u --> f x = 0) -->
  1.4105     nsum v f = nsum u f"
  1.4106    by (import hollight NSUM_SUPERSET)
  1.4107  
  1.4108  lemma NSUM_UNION_RZERO: "ALL (f::'A::type => nat) (u::'A::type => bool) v::'A::type => bool.
  1.4109 -   FINITE u & (ALL x::'A::type. IN x v & ~ IN x u --> f x = (0::nat)) -->
  1.4110 +   FINITE u & (ALL x::'A::type. IN x v & ~ IN x u --> f x = 0) -->
  1.4111     nsum (hollight.UNION u v) f = nsum u f"
  1.4112    by (import hollight NSUM_UNION_RZERO)
  1.4113  
  1.4114  lemma NSUM_UNION_LZERO: "ALL (f::'A::type => nat) (u::'A::type => bool) v::'A::type => bool.
  1.4115 -   FINITE v & (ALL x::'A::type. IN x u & ~ IN x v --> f x = (0::nat)) -->
  1.4116 +   FINITE v & (ALL x::'A::type. IN x u & ~ IN x v --> f x = 0) -->
  1.4117     nsum (hollight.UNION u v) f = nsum v f"
  1.4118    by (import hollight NSUM_UNION_LZERO)
  1.4119  
  1.4120  lemma NSUM_RESTRICT: "ALL (f::'q_51457::type => nat) s::'q_51457::type => bool.
  1.4121     FINITE s -->
  1.4122 -   nsum s (%x::'q_51457::type. COND (IN x s) (f x) (0::nat)) = nsum s f"
  1.4123 +   nsum s (%x::'q_51457::type. COND (IN x s) (f x) 0) = nsum s f"
  1.4124    by (import hollight NSUM_RESTRICT)
  1.4125  
  1.4126  lemma NSUM_BOUND: "ALL (x::'A::type => bool) (xa::'A::type => nat) xb::nat.
  1.4127 @@ -7610,7 +7978,7 @@
  1.4128     FINITE t &
  1.4129     SUBSET t s &
  1.4130     (ALL x::'A::type. IN x t --> f x = (g::'A::type => nat) x) &
  1.4131 -   (ALL x::'A::type. IN x s & ~ IN x t --> f x = (0::nat)) -->
  1.4132 +   (ALL x::'A::type. IN x s & ~ IN x t --> f x = 0) -->
  1.4133     nsum s f = nsum t g"
  1.4134    by (import hollight NSUM_EQ_SUPERSET)
  1.4135  
  1.4136 @@ -7621,7 +7989,7 @@
  1.4137        (%u::'A::type.
  1.4138            EX x::'A::type. SETSPEC u (IN x s & (P::'A::type => bool) x) x))
  1.4139      f =
  1.4140 -   nsum s (%x::'A::type. COND (P x) (f x) (0::nat))"
  1.4141 +   nsum s (%x::'A::type. COND (P x) (f x) 0)"
  1.4142    by (import hollight NSUM_RESTRICT_SET)
  1.4143  
  1.4144  lemma NSUM_NSUM_RESTRICT: "ALL (R::'q_52016::type => 'q_52015::type => bool)
  1.4145 @@ -7645,7 +8013,7 @@
  1.4146    by (import hollight NSUM_NSUM_RESTRICT)
  1.4147  
  1.4148  lemma CARD_EQ_NSUM: "ALL x::'q_52035::type => bool.
  1.4149 -   FINITE x --> CARD x = nsum x (%x::'q_52035::type. NUMERAL_BIT1 (0::nat))"
  1.4150 +   FINITE x --> CARD x = nsum x (%x::'q_52035::type. NUMERAL_BIT1 0)"
  1.4151    by (import hollight CARD_EQ_NSUM)
  1.4152  
  1.4153  lemma NSUM_MULTICOUNT_GEN: "ALL (R::'A::type => 'B::type => bool) (s::'A::type => bool)
  1.4154 @@ -7696,8 +8064,7 @@
  1.4155    by (import hollight NSUM_IMAGE_GEN)
  1.4156  
  1.4157  lemma NSUM_SUBSET: "ALL (u::'A::type => bool) (v::'A::type => bool) f::'A::type => nat.
  1.4158 -   FINITE u &
  1.4159 -   FINITE v & (ALL x::'A::type. IN x (DIFF u v) --> f x = (0::nat)) -->
  1.4160 +   FINITE u & FINITE v & (ALL x::'A::type. IN x (DIFF u v) --> f x = 0) -->
  1.4161     <= (nsum u f) (nsum v f)"
  1.4162    by (import hollight NSUM_SUBSET)
  1.4163  
  1.4164 @@ -7726,35 +8093,32 @@
  1.4165    by (import hollight NSUM_EQ_NUMSEG)
  1.4166  
  1.4167  lemma NSUM_CONST_NUMSEG: "ALL (x::nat) (xa::nat) xb::nat.
  1.4168 -   nsum (dotdot xa xb) (%n::nat. x) = (xb + NUMERAL_BIT1 (0::nat) - xa) * x"
  1.4169 +   nsum (dotdot xa xb) (%n::nat. x) = (xb + NUMERAL_BIT1 0 - xa) * x"
  1.4170    by (import hollight NSUM_CONST_NUMSEG)
  1.4171  
  1.4172  lemma NSUM_EQ_0_NUMSEG: "ALL (x::nat => nat) xa::'q_52734::type.
  1.4173 -   (ALL i::nat. <= (m::nat) i & <= i (n::nat) --> x i = (0::nat)) -->
  1.4174 -   nsum (dotdot m n) x = (0::nat)"
  1.4175 +   (ALL i::nat. <= (m::nat) i & <= i (n::nat) --> x i = 0) -->
  1.4176 +   nsum (dotdot m n) x = 0"
  1.4177    by (import hollight NSUM_EQ_0_NUMSEG)
  1.4178  
  1.4179 -lemma NSUM_TRIV_NUMSEG: "ALL (f::nat => nat) (m::nat) n::nat.
  1.4180 -   < n m --> nsum (dotdot m n) f = (0::nat)"
  1.4181 +lemma NSUM_TRIV_NUMSEG: "ALL (f::nat => nat) (m::nat) n::nat. < n m --> nsum (dotdot m n) f = 0"
  1.4182    by (import hollight NSUM_TRIV_NUMSEG)
  1.4183  
  1.4184  lemma NSUM_POS_LE_NUMSEG: "ALL (x::nat) (xa::nat) xb::nat => nat.
  1.4185 -   (ALL p::nat. <= x p & <= p xa --> <= (0::nat) (xb p)) -->
  1.4186 -   <= (0::nat) (nsum (dotdot x xa) xb)"
  1.4187 +   (ALL p::nat. <= x p & <= p xa --> <= 0 (xb p)) -->
  1.4188 +   <= 0 (nsum (dotdot x xa) xb)"
  1.4189    by (import hollight NSUM_POS_LE_NUMSEG)
  1.4190  
  1.4191  lemma NSUM_POS_EQ_0_NUMSEG: "ALL (f::nat => nat) (m::nat) n::nat.
  1.4192 -   (ALL p::nat. <= m p & <= p n --> <= (0::nat) (f p)) &
  1.4193 -   nsum (dotdot m n) f = (0::nat) -->
  1.4194 -   (ALL p::nat. <= m p & <= p n --> f p = (0::nat))"
  1.4195 +   (ALL p::nat. <= m p & <= p n --> <= 0 (f p)) &
  1.4196 +   nsum (dotdot m n) f = 0 -->
  1.4197 +   (ALL p::nat. <= m p & <= p n --> f p = 0)"
  1.4198    by (import hollight NSUM_POS_EQ_0_NUMSEG)
  1.4199  
  1.4200  lemma NSUM_SING_NUMSEG: "ALL (x::nat => nat) xa::nat. nsum (dotdot xa xa) x = x xa"
  1.4201    by (import hollight NSUM_SING_NUMSEG)
  1.4202  
  1.4203 -lemma NSUM_CLAUSES_NUMSEG: "(ALL x::nat.
  1.4204 -    nsum (dotdot x (0::nat)) (f::nat => nat) =
  1.4205 -    COND (x = (0::nat)) (f (0::nat)) (0::nat)) &
  1.4206 +lemma NSUM_CLAUSES_NUMSEG: "(ALL x::nat. nsum (dotdot x 0) (f::nat => nat) = COND (x = 0) (f 0) 0) &
  1.4207  (ALL (x::nat) xa::nat.
  1.4208      nsum (dotdot x (Suc xa)) f =
  1.4209      COND (<= x (Suc xa)) (nsum (dotdot x xa) f + f (Suc xa))
  1.4210 @@ -7767,10 +8131,9 @@
  1.4211    by (import hollight NSUM_SWAP_NUMSEG)
  1.4212  
  1.4213  lemma NSUM_ADD_SPLIT: "ALL (x::nat => nat) (xa::nat) (xb::nat) xc::nat.
  1.4214 -   <= xa (xb + NUMERAL_BIT1 (0::nat)) -->
  1.4215 +   <= xa (xb + NUMERAL_BIT1 0) -->
  1.4216     nsum (dotdot xa (xb + xc)) x =
  1.4217 -   nsum (dotdot xa xb) x +
  1.4218 -   nsum (dotdot (xb + NUMERAL_BIT1 (0::nat)) (xb + xc)) x"
  1.4219 +   nsum (dotdot xa xb) x + nsum (dotdot (xb + NUMERAL_BIT1 0) (xb + xc)) x"
  1.4220    by (import hollight NSUM_ADD_SPLIT)
  1.4221  
  1.4222  lemma NSUM_OFFSET: "ALL (x::nat => nat) (xa::nat) xb::nat.
  1.4223 @@ -7780,24 +8143,21 @@
  1.4224  
  1.4225  lemma NSUM_OFFSET_0: "ALL (x::nat => nat) (xa::nat) xb::nat.
  1.4226     <= xa xb -->
  1.4227 -   nsum (dotdot xa xb) x =
  1.4228 -   nsum (dotdot (0::nat) (xb - xa)) (%i::nat. x (i + xa))"
  1.4229 +   nsum (dotdot xa xb) x = nsum (dotdot 0 (xb - xa)) (%i::nat. x (i + xa))"
  1.4230    by (import hollight NSUM_OFFSET_0)
  1.4231  
  1.4232  lemma NSUM_CLAUSES_LEFT: "ALL (x::nat => nat) (xa::nat) xb::nat.
  1.4233     <= xa xb -->
  1.4234 -   nsum (dotdot xa xb) x =
  1.4235 -   x xa + nsum (dotdot (xa + NUMERAL_BIT1 (0::nat)) xb) x"
  1.4236 +   nsum (dotdot xa xb) x = x xa + nsum (dotdot (xa + NUMERAL_BIT1 0) xb) x"
  1.4237    by (import hollight NSUM_CLAUSES_LEFT)
  1.4238  
  1.4239  lemma NSUM_CLAUSES_RIGHT: "ALL (f::nat => nat) (m::nat) n::nat.
  1.4240 -   < (0::nat) n & <= m n -->
  1.4241 -   nsum (dotdot m n) f = nsum (dotdot m (n - NUMERAL_BIT1 (0::nat))) f + f n"
  1.4242 +   < 0 n & <= m n -->
  1.4243 +   nsum (dotdot m n) f = nsum (dotdot m (n - NUMERAL_BIT1 0)) f + f n"
  1.4244    by (import hollight NSUM_CLAUSES_RIGHT)
  1.4245  
  1.4246  consts
  1.4247 -  sum :: "('q_53311::type => bool)
  1.4248 -=> ('q_53311::type => hollight.real) => hollight.real" 
  1.4249 +  sum :: "('q_53311 => bool) => ('q_53311 => hollight.real) => hollight.real" 
  1.4250  
  1.4251  defs
  1.4252    sum_def: "(op ==::(('q_53311::type => bool)
  1.4253 @@ -7825,10 +8185,10 @@
  1.4254     (real_add::hollight.real => hollight.real => hollight.real))"
  1.4255    by (import hollight DEF_sum)
  1.4256  
  1.4257 -lemma NEUTRAL_REAL_ADD: "neutral real_add = real_of_num (0::nat)"
  1.4258 +lemma NEUTRAL_REAL_ADD: "neutral real_add = real_of_num 0"
  1.4259    by (import hollight NEUTRAL_REAL_ADD)
  1.4260  
  1.4261 -lemma NEUTRAL_REAL_MUL: "neutral real_mul = real_of_num (NUMERAL_BIT1 (0::nat))"
  1.4262 +lemma NEUTRAL_REAL_MUL: "neutral real_mul = real_of_num (NUMERAL_BIT1 0)"
  1.4263    by (import hollight NEUTRAL_REAL_MUL)
  1.4264  
  1.4265  lemma MONOIDAL_REAL_ADD: "monoidal real_add"
  1.4266 @@ -7838,7 +8198,7 @@
  1.4267    by (import hollight MONOIDAL_REAL_MUL)
  1.4268  
  1.4269  lemma SUM_CLAUSES: "(ALL x::'q_53353::type => hollight.real.
  1.4270 -    hollight.sum EMPTY x = real_of_num (0::nat)) &
  1.4271 +    hollight.sum EMPTY x = real_of_num 0) &
  1.4272  (ALL (x::'q_53394::type) (xa::'q_53394::type => hollight.real)
  1.4273      xb::'q_53394::type => bool.
  1.4274      FINITE xb -->
  1.4275 @@ -7876,24 +8236,22 @@
  1.4276  
  1.4277  lemma SUM_POS_LE: "ALL (x::'q_54040::type => hollight.real) xa::'q_54040::type => bool.
  1.4278     FINITE xa &
  1.4279 -   (ALL xb::'q_54040::type.
  1.4280 -       IN xb xa --> real_le (real_of_num (0::nat)) (x xb)) -->
  1.4281 -   real_le (real_of_num (0::nat)) (hollight.sum xa x)"
  1.4282 +   (ALL xb::'q_54040::type. IN xb xa --> real_le (real_of_num 0) (x xb)) -->
  1.4283 +   real_le (real_of_num 0) (hollight.sum xa x)"
  1.4284    by (import hollight SUM_POS_LE)
  1.4285  
  1.4286  lemma SUM_POS_BOUND: "ALL (f::'A::type => hollight.real) (b::hollight.real) x::'A::type => bool.
  1.4287     FINITE x &
  1.4288 -   (ALL xa::'A::type. IN xa x --> real_le (real_of_num (0::nat)) (f xa)) &
  1.4289 +   (ALL xa::'A::type. IN xa x --> real_le (real_of_num 0) (f xa)) &
  1.4290     real_le (hollight.sum x f) b -->
  1.4291     (ALL xa::'A::type. IN xa x --> real_le (f xa) b)"
  1.4292    by (import hollight SUM_POS_BOUND)
  1.4293  
  1.4294  lemma SUM_POS_EQ_0: "ALL (x::'q_54187::type => hollight.real) xa::'q_54187::type => bool.
  1.4295     FINITE xa &
  1.4296 -   (ALL xb::'q_54187::type.
  1.4297 -       IN xb xa --> real_le (real_of_num (0::nat)) (x xb)) &
  1.4298 -   hollight.sum xa x = real_of_num (0::nat) -->
  1.4299 -   (ALL xb::'q_54187::type. IN xb xa --> x xb = real_of_num (0::nat))"
  1.4300 +   (ALL xb::'q_54187::type. IN xb xa --> real_le (real_of_num 0) (x xb)) &
  1.4301 +   hollight.sum xa x = real_of_num 0 -->
  1.4302 +   (ALL xb::'q_54187::type. IN xb xa --> x xb = real_of_num 0)"
  1.4303    by (import hollight SUM_POS_EQ_0)
  1.4304  
  1.4305  lemma SUM_SING: "ALL (x::'q_54209::type => hollight.real) xa::'q_54209::type.
  1.4306 @@ -7902,9 +8260,8 @@
  1.4307  
  1.4308  lemma SUM_DELTA: "ALL (x::'A::type => bool) xa::'A::type.
  1.4309     hollight.sum x
  1.4310 -    (%x::'A::type.
  1.4311 -        COND (x = xa) (b::hollight.real) (real_of_num (0::nat))) =
  1.4312 -   COND (IN xa x) b (real_of_num (0::nat))"
  1.4313 +    (%x::'A::type. COND (x = xa) (b::hollight.real) (real_of_num 0)) =
  1.4314 +   COND (IN xa x) b (real_of_num 0)"
  1.4315    by (import hollight SUM_DELTA)
  1.4316  
  1.4317  lemma SUM_IMAGE: "ALL (x::'q_54353::type => 'q_54329::type)
  1.4318 @@ -7919,28 +8276,28 @@
  1.4319     v::'A::type => bool.
  1.4320     FINITE u &
  1.4321     SUBSET u v &
  1.4322 -   (ALL x::'A::type. IN x v & ~ IN x u --> f x = real_of_num (0::nat)) -->
  1.4323 +   (ALL x::'A::type. IN x v & ~ IN x u --> f x = real_of_num 0) -->
  1.4324     hollight.sum v f = hollight.sum u f"
  1.4325    by (import hollight SUM_SUPERSET)
  1.4326  
  1.4327  lemma SUM_UNION_RZERO: "ALL (f::'A::type => hollight.real) (u::'A::type => bool)
  1.4328     v::'A::type => bool.
  1.4329     FINITE u &
  1.4330 -   (ALL x::'A::type. IN x v & ~ IN x u --> f x = real_of_num (0::nat)) -->
  1.4331 +   (ALL x::'A::type. IN x v & ~ IN x u --> f x = real_of_num 0) -->
  1.4332     hollight.sum (hollight.UNION u v) f = hollight.sum u f"
  1.4333    by (import hollight SUM_UNION_RZERO)
  1.4334  
  1.4335  lemma SUM_UNION_LZERO: "ALL (f::'A::type => hollight.real) (u::'A::type => bool)
  1.4336     v::'A::type => bool.
  1.4337     FINITE v &
  1.4338 -   (ALL x::'A::type. IN x u & ~ IN x v --> f x = real_of_num (0::nat)) -->
  1.4339 +   (ALL x::'A::type. IN x u & ~ IN x v --> f x = real_of_num 0) -->
  1.4340     hollight.sum (hollight.UNION u v) f = hollight.sum v f"
  1.4341    by (import hollight SUM_UNION_LZERO)
  1.4342  
  1.4343  lemma SUM_RESTRICT: "ALL (f::'q_54580::type => hollight.real) s::'q_54580::type => bool.
  1.4344     FINITE s -->
  1.4345     hollight.sum s
  1.4346 -    (%x::'q_54580::type. COND (IN x s) (f x) (real_of_num (0::nat))) =
  1.4347 +    (%x::'q_54580::type. COND (IN x s) (f x) (real_of_num 0)) =
  1.4348     hollight.sum s f"
  1.4349    by (import hollight SUM_RESTRICT)
  1.4350  
  1.4351 @@ -7996,7 +8353,7 @@
  1.4352     FINITE t &
  1.4353     SUBSET t s &
  1.4354     (ALL x::'A::type. IN x t --> f x = (g::'A::type => hollight.real) x) &
  1.4355 -   (ALL x::'A::type. IN x s & ~ IN x t --> f x = real_of_num (0::nat)) -->
  1.4356 +   (ALL x::'A::type. IN x s & ~ IN x t --> f x = real_of_num 0) -->
  1.4357     hollight.sum s f = hollight.sum t g"
  1.4358    by (import hollight SUM_EQ_SUPERSET)
  1.4359  
  1.4360 @@ -8007,7 +8364,7 @@
  1.4361        (%u::'A::type.
  1.4362            EX x::'A::type. SETSPEC u (IN x s & (P::'A::type => bool) x) x))
  1.4363      f =
  1.4364 -   hollight.sum s (%x::'A::type. COND (P x) (f x) (real_of_num (0::nat)))"
  1.4365 +   hollight.sum s (%x::'A::type. COND (P x) (f x) (real_of_num 0))"
  1.4366    by (import hollight SUM_RESTRICT_SET)
  1.4367  
  1.4368  lemma SUM_SUM_RESTRICT: "ALL (R::'q_55171::type => 'q_55170::type => bool)
  1.4369 @@ -8033,7 +8390,7 @@
  1.4370  lemma CARD_EQ_SUM: "ALL x::'q_55192::type => bool.
  1.4371     FINITE x -->
  1.4372     real_of_num (CARD x) =
  1.4373 -   hollight.sum x (%x::'q_55192::type. real_of_num (NUMERAL_BIT1 (0::nat)))"
  1.4374 +   hollight.sum x (%x::'q_55192::type. real_of_num (NUMERAL_BIT1 0))"
  1.4375    by (import hollight CARD_EQ_SUM)
  1.4376  
  1.4377  lemma SUM_MULTICOUNT_GEN: "ALL (R::'A::type => 'B::type => bool) (s::'A::type => bool)
  1.4378 @@ -8098,10 +8455,8 @@
  1.4379     f::'A::type => hollight.real.
  1.4380     FINITE u &
  1.4381     FINITE v &
  1.4382 -   (ALL x::'A::type.
  1.4383 -       IN x (DIFF u v) --> real_le (f x) (real_of_num (0::nat))) &
  1.4384 -   (ALL x::'A::type.
  1.4385 -       IN x (DIFF v u) --> real_le (real_of_num (0::nat)) (f x)) -->
  1.4386 +   (ALL x::'A::type. IN x (DIFF u v) --> real_le (f x) (real_of_num 0)) &
  1.4387 +   (ALL x::'A::type. IN x (DIFF v u) --> real_le (real_of_num 0) (f x)) -->
  1.4388     real_le (hollight.sum u f) (hollight.sum v f)"
  1.4389    by (import hollight SUM_SUBSET)
  1.4390  
  1.4391 @@ -8109,8 +8464,7 @@
  1.4392     f::'A::type => hollight.real.
  1.4393     FINITE v &
  1.4394     SUBSET u v &
  1.4395 -   (ALL x::'A::type.
  1.4396 -       IN x (DIFF v u) --> real_le (real_of_num (0::nat)) (f x)) -->
  1.4397 +   (ALL x::'A::type. IN x (DIFF v u) --> real_le (real_of_num 0) (f x)) -->
  1.4398     real_le (hollight.sum u f) (hollight.sum v f)"
  1.4399    by (import hollight SUM_SUBSET_SIMPLE)
  1.4400  
  1.4401 @@ -8151,37 +8505,35 @@
  1.4402  
  1.4403  lemma SUM_CONST_NUMSEG: "ALL (x::hollight.real) (xa::nat) xb::nat.
  1.4404     hollight.sum (dotdot xa xb) (%n::nat. x) =
  1.4405 -   real_mul (real_of_num (xb + NUMERAL_BIT1 (0::nat) - xa)) x"
  1.4406 +   real_mul (real_of_num (xb + NUMERAL_BIT1 0 - xa)) x"
  1.4407    by (import hollight SUM_CONST_NUMSEG)
  1.4408  
  1.4409  lemma SUM_EQ_0_NUMSEG: "ALL (x::nat => hollight.real) xa::'q_56115::type.
  1.4410 -   (ALL i::nat.
  1.4411 -       <= (m::nat) i & <= i (n::nat) --> x i = real_of_num (0::nat)) -->
  1.4412 -   hollight.sum (dotdot m n) x = real_of_num (0::nat)"
  1.4413 +   (ALL i::nat. <= (m::nat) i & <= i (n::nat) --> x i = real_of_num 0) -->
  1.4414 +   hollight.sum (dotdot m n) x = real_of_num 0"
  1.4415    by (import hollight SUM_EQ_0_NUMSEG)
  1.4416  
  1.4417  lemma SUM_TRIV_NUMSEG: "ALL (f::nat => hollight.real) (m::nat) n::nat.
  1.4418 -   < n m --> hollight.sum (dotdot m n) f = real_of_num (0::nat)"
  1.4419 +   < n m --> hollight.sum (dotdot m n) f = real_of_num 0"
  1.4420    by (import hollight SUM_TRIV_NUMSEG)
  1.4421  
  1.4422  lemma SUM_POS_LE_NUMSEG: "ALL (x::nat) (xa::nat) xb::nat => hollight.real.
  1.4423 -   (ALL p::nat.
  1.4424 -       <= x p & <= p xa --> real_le (real_of_num (0::nat)) (xb p)) -->
  1.4425 -   real_le (real_of_num (0::nat)) (hollight.sum (dotdot x xa) xb)"
  1.4426 +   (ALL p::nat. <= x p & <= p xa --> real_le (real_of_num 0) (xb p)) -->
  1.4427 +   real_le (real_of_num 0) (hollight.sum (dotdot x xa) xb)"
  1.4428    by (import hollight SUM_POS_LE_NUMSEG)
  1.4429  
  1.4430  lemma SUM_POS_EQ_0_NUMSEG: "ALL (f::nat => hollight.real) (m::nat) n::nat.
  1.4431 -   (ALL p::nat. <= m p & <= p n --> real_le (real_of_num (0::nat)) (f p)) &
  1.4432 -   hollight.sum (dotdot m n) f = real_of_num (0::nat) -->
  1.4433 -   (ALL p::nat. <= m p & <= p n --> f p = real_of_num (0::nat))"
  1.4434 +   (ALL p::nat. <= m p & <= p n --> real_le (real_of_num 0) (f p)) &
  1.4435 +   hollight.sum (dotdot m n) f = real_of_num 0 -->
  1.4436 +   (ALL p::nat. <= m p & <= p n --> f p = real_of_num 0)"
  1.4437    by (import hollight SUM_POS_EQ_0_NUMSEG)
  1.4438  
  1.4439  lemma SUM_SING_NUMSEG: "ALL (x::nat => hollight.real) xa::nat. hollight.sum (dotdot xa xa) x = x xa"
  1.4440    by (import hollight SUM_SING_NUMSEG)
  1.4441  
  1.4442  lemma SUM_CLAUSES_NUMSEG: "(ALL x::nat.
  1.4443 -    hollight.sum (dotdot x (0::nat)) (f::nat => hollight.real) =
  1.4444 -    COND (x = (0::nat)) (f (0::nat)) (real_of_num (0::nat))) &
  1.4445 +    hollight.sum (dotdot x 0) (f::nat => hollight.real) =
  1.4446 +    COND (x = 0) (f 0) (real_of_num 0)) &
  1.4447  (ALL (x::nat) xa::nat.
  1.4448      hollight.sum (dotdot x (Suc xa)) f =
  1.4449      COND (<= x (Suc xa))
  1.4450 @@ -8196,28 +8548,28 @@
  1.4451    by (import hollight SUM_SWAP_NUMSEG)
  1.4452  
  1.4453  lemma SUM_ADD_SPLIT: "ALL (x::nat => hollight.real) (xa::nat) (xb::nat) xc::nat.
  1.4454 -   <= xa (xb + NUMERAL_BIT1 (0::nat)) -->
  1.4455 +   <= xa (xb + NUMERAL_BIT1 0) -->
  1.4456     hollight.sum (dotdot xa (xb + xc)) x =
  1.4457     real_add (hollight.sum (dotdot xa xb) x)
  1.4458 -    (hollight.sum (dotdot (xb + NUMERAL_BIT1 (0::nat)) (xb + xc)) x)"
  1.4459 +    (hollight.sum (dotdot (xb + NUMERAL_BIT1 0) (xb + xc)) x)"
  1.4460    by (import hollight SUM_ADD_SPLIT)
  1.4461  
  1.4462  lemma SUM_OFFSET_0: "ALL (x::nat => hollight.real) (xa::nat) xb::nat.
  1.4463     <= xa xb -->
  1.4464     hollight.sum (dotdot xa xb) x =
  1.4465 -   hollight.sum (dotdot (0::nat) (xb - xa)) (%i::nat. x (i + xa))"
  1.4466 +   hollight.sum (dotdot 0 (xb - xa)) (%i::nat. x (i + xa))"
  1.4467    by (import hollight SUM_OFFSET_0)
  1.4468  
  1.4469  lemma SUM_CLAUSES_LEFT: "ALL (x::nat => hollight.real) (xa::nat) xb::nat.
  1.4470     <= xa xb -->
  1.4471     hollight.sum (dotdot xa xb) x =
  1.4472 -   real_add (x xa) (hollight.sum (dotdot (xa + NUMERAL_BIT1 (0::nat)) xb) x)"
  1.4473 +   real_add (x xa) (hollight.sum (dotdot (xa + NUMERAL_BIT1 0) xb) x)"
  1.4474    by (import hollight SUM_CLAUSES_LEFT)
  1.4475  
  1.4476  lemma SUM_CLAUSES_RIGHT: "ALL (f::nat => hollight.real) (m::nat) n::nat.
  1.4477 -   < (0::nat) n & <= m n -->
  1.4478 +   < 0 n & <= m n -->
  1.4479     hollight.sum (dotdot m n) f =
  1.4480 -   real_add (hollight.sum (dotdot m (n - NUMERAL_BIT1 (0::nat))) f) (f n)"
  1.4481 +   real_add (hollight.sum (dotdot m (n - NUMERAL_BIT1 0)) f) (f n)"
  1.4482    by (import hollight SUM_CLAUSES_RIGHT)
  1.4483  
  1.4484  lemma REAL_OF_NUM_SUM_NUMSEG: "ALL (x::nat => nat) (xa::nat) xb::nat.
  1.4485 @@ -8226,9 +8578,8 @@
  1.4486    by (import hollight REAL_OF_NUM_SUM_NUMSEG)
  1.4487  
  1.4488  constdefs
  1.4489 -  CASEWISE :: "(('q_56787::type => 'q_56791::type) *
  1.4490 - ('q_56792::type => 'q_56787::type => 'q_56751::type)) hollight.list
  1.4491 -=> 'q_56792::type => 'q_56791::type => 'q_56751::type" 
  1.4492 +  CASEWISE :: "(('q_56787 => 'q_56791) * ('q_56792 => 'q_56787 => 'q_56751)) hollight.list
  1.4493 +=> 'q_56792 => 'q_56791 => 'q_56751" 
  1.4494    "CASEWISE ==
  1.4495  SOME CASEWISE::(('q_56787::type => 'q_56791::type) *
  1.4496                  ('q_56792::type
  1.4497 @@ -8346,12 +8697,10 @@
  1.4498    by (import hollight CASEWISE_WORKS)
  1.4499  
  1.4500  constdefs
  1.4501 -  admissible :: "('q_57089::type => 'q_57082::type => bool)
  1.4502 -=> (('q_57089::type => 'q_57085::type) => 'q_57095::type => bool)
  1.4503 -   => ('q_57095::type => 'q_57082::type)
  1.4504 -      => (('q_57089::type => 'q_57085::type)
  1.4505 -          => 'q_57095::type => 'q_57090::type)
  1.4506 -         => bool" 
  1.4507 +  admissible :: "('q_57089 => 'q_57082 => bool)
  1.4508 +=> (('q_57089 => 'q_57085) => 'q_57095 => bool)
  1.4509 +   => ('q_57095 => 'q_57082)
  1.4510 +      => (('q_57089 => 'q_57085) => 'q_57095 => 'q_57090) => bool" 
  1.4511    "admissible ==
  1.4512  %(u::'q_57089::type => 'q_57082::type => bool)
  1.4513     (ua::('q_57089::type => 'q_57085::type) => 'q_57095::type => bool)
  1.4514 @@ -8378,10 +8727,9 @@
  1.4515    by (import hollight DEF_admissible)
  1.4516  
  1.4517  constdefs
  1.4518 -  tailadmissible :: "('A::type => 'A::type => bool)
  1.4519 -=> (('A::type => 'B::type) => 'P::type => bool)
  1.4520 -   => ('P::type => 'A::type)
  1.4521 -      => (('A::type => 'B::type) => 'P::type => 'B::type) => bool" 
  1.4522 +  tailadmissible :: "('A => 'A => bool)
  1.4523 +=> (('A => 'B) => 'P => bool)
  1.4524 +   => ('P => 'A) => (('A => 'B) => 'P => 'B) => bool" 
  1.4525    "tailadmissible ==
  1.4526  %(u::'A::type => 'A::type => bool)
  1.4527     (ua::('A::type => 'B::type) => 'P::type => bool)
  1.4528 @@ -8416,12 +8764,10 @@
  1.4529    by (import hollight DEF_tailadmissible)
  1.4530  
  1.4531  constdefs
  1.4532 -  superadmissible :: "('q_57239::type => 'q_57239::type => bool)
  1.4533 -=> (('q_57239::type => 'q_57241::type) => 'q_57247::type => bool)
  1.4534 -   => ('q_57247::type => 'q_57239::type)
  1.4535 -      => (('q_57239::type => 'q_57241::type)
  1.4536 -          => 'q_57247::type => 'q_57241::type)
  1.4537 -         => bool" 
  1.4538 +  superadmissible :: "('q_57239 => 'q_57239 => bool)
  1.4539 +=> (('q_57239 => 'q_57241) => 'q_57247 => bool)
  1.4540 +   => ('q_57247 => 'q_57239)
  1.4541 +      => (('q_57239 => 'q_57241) => 'q_57247 => 'q_57241) => bool" 
  1.4542    "superadmissible ==
  1.4543  %(u::'q_57239::type => 'q_57239::type => bool)
  1.4544     (ua::('q_57239::type => 'q_57241::type) => 'q_57247::type => bool)
  1.4545 @@ -8695,19 +9041,19 @@
  1.4546  lemma SUB_SUB: "ALL (x::nat) xa::nat. <= xa x --> (ALL a::nat. a - (x - xa) = a + xa - x)"
  1.4547    by (import hollight SUB_SUB)
  1.4548  
  1.4549 -lemma SUB_OLD: "(ALL m::nat. (0::nat) - m = (0::nat)) &
  1.4550 -(ALL (m::nat) n::nat. Suc m - n = COND (< m n) (0::nat) (Suc (m - n)))"
  1.4551 +lemma SUB_OLD: "(ALL m::nat. 0 - m = 0) &
  1.4552 +(ALL (m::nat) n::nat. Suc m - n = COND (< m n) 0 (Suc (m - n)))"
  1.4553    by (import hollight SUB_OLD)
  1.4554  
  1.4555  lemma real_le: "ALL (x::hollight.real) xa::hollight.real. real_le x xa = (~ real_lt xa x)"
  1.4556    by (import hollight real_le)
  1.4557  
  1.4558 -lemma REAL_MUL_RID: "ALL x::hollight.real. real_mul x (real_of_num (NUMERAL_BIT1 (0::nat))) = x"
  1.4559 +lemma REAL_MUL_RID: "ALL x::hollight.real. real_mul x (real_of_num (NUMERAL_BIT1 0)) = x"
  1.4560    by (import hollight REAL_MUL_RID)
  1.4561  
  1.4562  lemma REAL_MUL_RINV: "ALL x::hollight.real.
  1.4563 -   x ~= real_of_num (0::nat) -->
  1.4564 -   real_mul x (real_inv x) = real_of_num (NUMERAL_BIT1 (0::nat))"
  1.4565 +   x ~= real_of_num 0 -->
  1.4566 +   real_mul x (real_inv x) = real_of_num (NUMERAL_BIT1 0)"
  1.4567    by (import hollight REAL_MUL_RINV)
  1.4568  
  1.4569  lemma REAL_RDISTRIB: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.4570 @@ -8723,31 +9069,29 @@
  1.4571    by (import hollight REAL_EQ_RADD)
  1.4572  
  1.4573  lemma REAL_ADD_LID_UNIQ: "ALL (x::hollight.real) y::hollight.real.
  1.4574 -   (real_add x y = y) = (x = real_of_num (0::nat))"
  1.4575 +   (real_add x y = y) = (x = real_of_num 0)"
  1.4576    by (import hollight REAL_ADD_LID_UNIQ)
  1.4577  
  1.4578  lemma REAL_ADD_RID_UNIQ: "ALL (x::hollight.real) y::hollight.real.
  1.4579 -   (real_add x y = x) = (y = real_of_num (0::nat))"
  1.4580 +   (real_add x y = x) = (y = real_of_num 0)"
  1.4581    by (import hollight REAL_ADD_RID_UNIQ)
  1.4582  
  1.4583  lemma REAL_LNEG_UNIQ: "ALL (x::hollight.real) y::hollight.real.
  1.4584 -   (real_add x y = real_of_num (0::nat)) = (x = real_neg y)"
  1.4585 +   (real_add x y = real_of_num 0) = (x = real_neg y)"
  1.4586    by (import hollight REAL_LNEG_UNIQ)
  1.4587  
  1.4588  lemma REAL_RNEG_UNIQ: "ALL (x::hollight.real) y::hollight.real.
  1.4589 -   (real_add x y = real_of_num (0::nat)) = (y = real_neg x)"
  1.4590 +   (real_add x y = real_of_num 0) = (y = real_neg x)"
  1.4591    by (import hollight REAL_RNEG_UNIQ)
  1.4592  
  1.4593  lemma REAL_NEG_ADD: "ALL (x::hollight.real) y::hollight.real.
  1.4594     real_neg (real_add x y) = real_add (real_neg x) (real_neg y)"
  1.4595    by (import hollight REAL_NEG_ADD)
  1.4596  
  1.4597 -lemma REAL_MUL_LZERO: "ALL x::hollight.real.
  1.4598 -   real_mul (real_of_num (0::nat)) x = real_of_num (0::nat)"
  1.4599 +lemma REAL_MUL_LZERO: "ALL x::hollight.real. real_mul (real_of_num 0) x = real_of_num 0"
  1.4600    by (import hollight REAL_MUL_LZERO)
  1.4601  
  1.4602 -lemma REAL_MUL_RZERO: "ALL x::hollight.real.
  1.4603 -   real_mul x (real_of_num (0::nat)) = real_of_num (0::nat)"
  1.4604 +lemma REAL_MUL_RZERO: "ALL x::hollight.real. real_mul x (real_of_num 0) = real_of_num 0"
  1.4605    by (import hollight REAL_MUL_RZERO)
  1.4606  
  1.4607  lemma REAL_NEG_LMUL: "ALL (x::hollight.real) y::hollight.real.
  1.4608 @@ -8807,45 +9151,39 @@
  1.4609    by (import hollight REAL_LE_TRANS)
  1.4610  
  1.4611  lemma REAL_NEG_LT0: "ALL x::hollight.real.
  1.4612 -   real_lt (real_neg x) (real_of_num (0::nat)) =
  1.4613 -   real_lt (real_of_num (0::nat)) x"
  1.4614 +   real_lt (real_neg x) (real_of_num 0) = real_lt (real_of_num 0) x"
  1.4615    by (import hollight REAL_NEG_LT0)
  1.4616  
  1.4617  lemma REAL_NEG_GT0: "ALL x::hollight.real.
  1.4618 -   real_lt (real_of_num (0::nat)) (real_neg x) =
  1.4619 -   real_lt x (real_of_num (0::nat))"
  1.4620 +   real_lt (real_of_num 0) (real_neg x) = real_lt x (real_of_num 0)"
  1.4621    by (import hollight REAL_NEG_GT0)
  1.4622  
  1.4623  lemma REAL_NEG_LE0: "ALL x::hollight.real.
  1.4624 -   real_le (real_neg x) (real_of_num (0::nat)) =
  1.4625 -   real_le (real_of_num (0::nat)) x"
  1.4626 +   real_le (real_neg x) (real_of_num 0) = real_le (real_of_num 0) x"
  1.4627    by (import hollight REAL_NEG_LE0)
  1.4628  
  1.4629  lemma REAL_NEG_GE0: "ALL x::hollight.real.
  1.4630 -   real_le (real_of_num (0::nat)) (real_neg x) =
  1.4631 -   real_le x (real_of_num (0::nat))"
  1.4632 +   real_le (real_of_num 0) (real_neg x) = real_le x (real_of_num 0)"
  1.4633    by (import hollight REAL_NEG_GE0)
  1.4634  
  1.4635  lemma REAL_LT_NEGTOTAL: "ALL x::hollight.real.
  1.4636 -   x = real_of_num (0::nat) |
  1.4637 -   real_lt (real_of_num (0::nat)) x |
  1.4638 -   real_lt (real_of_num (0::nat)) (real_neg x)"
  1.4639 +   x = real_of_num 0 |
  1.4640 +   real_lt (real_of_num 0) x | real_lt (real_of_num 0) (real_neg x)"
  1.4641    by (import hollight REAL_LT_NEGTOTAL)
  1.4642  
  1.4643  lemma REAL_LE_NEGTOTAL: "ALL x::hollight.real.
  1.4644 -   real_le (real_of_num (0::nat)) x |
  1.4645 -   real_le (real_of_num (0::nat)) (real_neg x)"
  1.4646 +   real_le (real_of_num 0) x | real_le (real_of_num 0) (real_neg x)"
  1.4647    by (import hollight REAL_LE_NEGTOTAL)
  1.4648  
  1.4649  lemma REAL_LE_MUL: "ALL (x::hollight.real) y::hollight.real.
  1.4650 -   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) y -->
  1.4651 -   real_le (real_of_num (0::nat)) (real_mul x y)"
  1.4652 +   real_le (real_of_num 0) x & real_le (real_of_num 0) y -->
  1.4653 +   real_le (real_of_num 0) (real_mul x y)"
  1.4654    by (import hollight REAL_LE_MUL)
  1.4655  
  1.4656 -lemma REAL_LE_SQUARE: "ALL x::hollight.real. real_le (real_of_num (0::nat)) (real_mul x x)"
  1.4657 +lemma REAL_LE_SQUARE: "ALL x::hollight.real. real_le (real_of_num 0) (real_mul x x)"
  1.4658    by (import hollight REAL_LE_SQUARE)
  1.4659  
  1.4660 -lemma REAL_LT_01: "real_lt (real_of_num (0::nat)) (real_of_num (NUMERAL_BIT1 (0::nat)))"
  1.4661 +lemma REAL_LT_01: "real_lt (real_of_num 0) (real_of_num (NUMERAL_BIT1 0))"
  1.4662    by (import hollight REAL_LT_01)
  1.4663  
  1.4664  lemma REAL_LE_LADD: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.4665 @@ -8862,8 +9200,8 @@
  1.4666    by (import hollight REAL_LT_ADD2)
  1.4667  
  1.4668  lemma REAL_LT_ADD: "ALL (x::hollight.real) y::hollight.real.
  1.4669 -   real_lt (real_of_num (0::nat)) x & real_lt (real_of_num (0::nat)) y -->
  1.4670 -   real_lt (real_of_num (0::nat)) (real_add x y)"
  1.4671 +   real_lt (real_of_num 0) x & real_lt (real_of_num 0) y -->
  1.4672 +   real_lt (real_of_num 0) (real_add x y)"
  1.4673    by (import hollight REAL_LT_ADD)
  1.4674  
  1.4675  lemma REAL_LT_ADDNEG: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.4676 @@ -8875,8 +9213,7 @@
  1.4677    by (import hollight REAL_LT_ADDNEG2)
  1.4678  
  1.4679  lemma REAL_LT_ADD1: "ALL (x::hollight.real) y::hollight.real.
  1.4680 -   real_le x y -->
  1.4681 -   real_lt x (real_add y (real_of_num (NUMERAL_BIT1 (0::nat))))"
  1.4682 +   real_le x y --> real_lt x (real_add y (real_of_num (NUMERAL_BIT1 0)))"
  1.4683    by (import hollight REAL_LT_ADD1)
  1.4684  
  1.4685  lemma REAL_SUB_ADD: "ALL (x::hollight.real) y::hollight.real. real_add (real_sub x y) y = x"
  1.4686 @@ -8885,31 +9222,27 @@
  1.4687  lemma REAL_SUB_ADD2: "ALL (x::hollight.real) y::hollight.real. real_add y (real_sub x y) = x"
  1.4688    by (import hollight REAL_SUB_ADD2)
  1.4689  
  1.4690 -lemma REAL_SUB_REFL: "ALL x::hollight.real. real_sub x x = real_of_num (0::nat)"
  1.4691 +lemma REAL_SUB_REFL: "ALL x::hollight.real. real_sub x x = real_of_num 0"
  1.4692    by (import hollight REAL_SUB_REFL)
  1.4693  
  1.4694  lemma REAL_SUB_0: "ALL (x::hollight.real) y::hollight.real.
  1.4695 -   (real_sub x y = real_of_num (0::nat)) = (x = y)"
  1.4696 +   (real_sub x y = real_of_num 0) = (x = y)"
  1.4697    by (import hollight REAL_SUB_0)
  1.4698  
  1.4699  lemma REAL_LE_DOUBLE: "ALL x::hollight.real.
  1.4700 -   real_le (real_of_num (0::nat)) (real_add x x) =
  1.4701 -   real_le (real_of_num (0::nat)) x"
  1.4702 +   real_le (real_of_num 0) (real_add x x) = real_le (real_of_num 0) x"
  1.4703    by (import hollight REAL_LE_DOUBLE)
  1.4704  
  1.4705 -lemma REAL_LE_NEGL: "ALL x::hollight.real.
  1.4706 -   real_le (real_neg x) x = real_le (real_of_num (0::nat)) x"
  1.4707 +lemma REAL_LE_NEGL: "ALL x::hollight.real. real_le (real_neg x) x = real_le (real_of_num 0) x"
  1.4708    by (import hollight REAL_LE_NEGL)
  1.4709  
  1.4710 -lemma REAL_LE_NEGR: "ALL x::hollight.real.
  1.4711 -   real_le x (real_neg x) = real_le x (real_of_num (0::nat))"
  1.4712 +lemma REAL_LE_NEGR: "ALL x::hollight.real. real_le x (real_neg x) = real_le x (real_of_num 0)"
  1.4713    by (import hollight REAL_LE_NEGR)
  1.4714  
  1.4715 -lemma REAL_NEG_EQ0: "ALL x::hollight.real.
  1.4716 -   (real_neg x = real_of_num (0::nat)) = (x = real_of_num (0::nat))"
  1.4717 +lemma REAL_NEG_EQ0: "ALL x::hollight.real. (real_neg x = real_of_num 0) = (x = real_of_num 0)"
  1.4718    by (import hollight REAL_NEG_EQ0)
  1.4719  
  1.4720 -lemma REAL_NEG_0: "real_neg (real_of_num (0::nat)) = real_of_num (0::nat)"
  1.4721 +lemma REAL_NEG_0: "real_neg (real_of_num 0) = real_of_num 0"
  1.4722    by (import hollight REAL_NEG_0)
  1.4723  
  1.4724  lemma REAL_NEG_SUB: "ALL (x::hollight.real) y::hollight.real.
  1.4725 @@ -8917,19 +9250,19 @@
  1.4726    by (import hollight REAL_NEG_SUB)
  1.4727  
  1.4728  lemma REAL_SUB_LT: "ALL (x::hollight.real) y::hollight.real.
  1.4729 -   real_lt (real_of_num (0::nat)) (real_sub x y) = real_lt y x"
  1.4730 +   real_lt (real_of_num 0) (real_sub x y) = real_lt y x"
  1.4731    by (import hollight REAL_SUB_LT)
  1.4732  
  1.4733  lemma REAL_SUB_LE: "ALL (x::hollight.real) y::hollight.real.
  1.4734 -   real_le (real_of_num (0::nat)) (real_sub x y) = real_le y x"
  1.4735 +   real_le (real_of_num 0) (real_sub x y) = real_le y x"
  1.4736    by (import hollight REAL_SUB_LE)
  1.4737  
  1.4738  lemma REAL_EQ_LMUL: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.4739 -   (real_mul x y = real_mul x z) = (x = real_of_num (0::nat) | y = z)"
  1.4740 +   (real_mul x y = real_mul x z) = (x = real_of_num 0 | y = z)"
  1.4741    by (import hollight REAL_EQ_LMUL)
  1.4742  
  1.4743  lemma REAL_EQ_RMUL: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.4744 -   (real_mul x z = real_mul y z) = (z = real_of_num (0::nat) | x = y)"
  1.4745 +   (real_mul x z = real_mul y z) = (z = real_of_num 0 | x = y)"
  1.4746    by (import hollight REAL_EQ_RMUL)
  1.4747  
  1.4748  lemma REAL_SUB_LDISTRIB: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.4749 @@ -8944,80 +9277,73 @@
  1.4750    by (import hollight REAL_NEG_EQ)
  1.4751  
  1.4752  lemma REAL_NEG_MINUS1: "ALL x::hollight.real.
  1.4753 -   real_neg x = real_mul (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) x"
  1.4754 +   real_neg x = real_mul (real_neg (real_of_num (NUMERAL_BIT1 0))) x"
  1.4755    by (import hollight REAL_NEG_MINUS1)
  1.4756  
  1.4757 -lemma REAL_INV_NZ: "ALL x::hollight.real.
  1.4758 -   x ~= real_of_num (0::nat) --> real_inv x ~= real_of_num (0::nat)"
  1.4759 +lemma REAL_INV_NZ: "ALL x::hollight.real. x ~= real_of_num 0 --> real_inv x ~= real_of_num 0"
  1.4760    by (import hollight REAL_INV_NZ)
  1.4761  
  1.4762 -lemma REAL_INVINV: "ALL x::hollight.real.
  1.4763 -   x ~= real_of_num (0::nat) --> real_inv (real_inv x) = x"
  1.4764 +lemma REAL_INVINV: "ALL x::hollight.real. x ~= real_of_num 0 --> real_inv (real_inv x) = x"
  1.4765    by (import hollight REAL_INVINV)
  1.4766  
  1.4767  lemma REAL_LT_IMP_NE: "ALL (x::hollight.real) y::hollight.real. real_lt x y --> x ~= y"
  1.4768    by (import hollight REAL_LT_IMP_NE)
  1.4769  
  1.4770  lemma REAL_INV_POS: "ALL x::hollight.real.
  1.4771 -   real_lt (real_of_num (0::nat)) x -->
  1.4772 -   real_lt (real_of_num (0::nat)) (real_inv x)"
  1.4773 +   real_lt (real_of_num 0) x --> real_lt (real_of_num 0) (real_inv x)"
  1.4774    by (import hollight REAL_INV_POS)
  1.4775  
  1.4776  lemma REAL_LT_LMUL_0: "ALL (x::hollight.real) y::hollight.real.
  1.4777 -   real_lt (real_of_num (0::nat)) x -->
  1.4778 -   real_lt (real_of_num (0::nat)) (real_mul x y) =
  1.4779 -   real_lt (real_of_num (0::nat)) y"
  1.4780 +   real_lt (real_of_num 0) x -->
  1.4781 +   real_lt (real_of_num 0) (real_mul x y) = real_lt (real_of_num 0) y"
  1.4782    by (import hollight REAL_LT_LMUL_0)
  1.4783  
  1.4784  lemma REAL_LT_RMUL_0: "ALL (x::hollight.real) y::hollight.real.
  1.4785 -   real_lt (real_of_num (0::nat)) y -->
  1.4786 -   real_lt (real_of_num (0::nat)) (real_mul x y) =
  1.4787 -   real_lt (real_of_num (0::nat)) x"
  1.4788 +   real_lt (real_of_num 0) y -->
  1.4789 +   real_lt (real_of_num 0) (real_mul x y) = real_lt (real_of_num 0) x"
  1.4790    by (import hollight REAL_LT_RMUL_0)
  1.4791  
  1.4792  lemma REAL_LT_LMUL_EQ: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.4793 -   real_lt (real_of_num (0::nat)) x -->
  1.4794 +   real_lt (real_of_num 0) x -->
  1.4795     real_lt (real_mul x y) (real_mul x z) = real_lt y z"
  1.4796    by (import hollight REAL_LT_LMUL_EQ)
  1.4797  
  1.4798  lemma REAL_LT_RMUL_EQ: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.4799 -   real_lt (real_of_num (0::nat)) z -->
  1.4800 +   real_lt (real_of_num 0) z -->
  1.4801     real_lt (real_mul x z) (real_mul y z) = real_lt x y"
  1.4802    by (import hollight REAL_LT_RMUL_EQ)
  1.4803  
  1.4804  lemma REAL_LT_RMUL_IMP: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.4805 -   real_lt x y & real_lt (real_of_num (0::nat)) z -->
  1.4806 +   real_lt x y & real_lt (real_of_num 0) z -->
  1.4807     real_lt (real_mul x z) (real_mul y z)"
  1.4808    by (import hollight REAL_LT_RMUL_IMP)
  1.4809  
  1.4810  lemma REAL_LT_LMUL_IMP: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.4811 -   real_lt y z & real_lt (real_of_num (0::nat)) x -->
  1.4812 +   real_lt y z & real_lt (real_of_num 0) x -->
  1.4813     real_lt (real_mul x y) (real_mul x z)"
  1.4814    by (import hollight REAL_LT_LMUL_IMP)
  1.4815  
  1.4816  lemma REAL_LINV_UNIQ: "ALL (x::hollight.real) y::hollight.real.
  1.4817 -   real_mul x y = real_of_num (NUMERAL_BIT1 (0::nat)) --> x = real_inv y"
  1.4818 +   real_mul x y = real_of_num (NUMERAL_BIT1 0) --> x = real_inv y"
  1.4819    by (import hollight REAL_LINV_UNIQ)
  1.4820  
  1.4821  lemma REAL_RINV_UNIQ: "ALL (x::hollight.real) y::hollight.real.
  1.4822 -   real_mul x y = real_of_num (NUMERAL_BIT1 (0::nat)) --> y = real_inv x"
  1.4823 +   real_mul x y = real_of_num (NUMERAL_BIT1 0) --> y = real_inv x"
  1.4824    by (import hollight REAL_RINV_UNIQ)
  1.4825  
  1.4826  lemma REAL_NEG_INV: "ALL x::hollight.real.
  1.4827 -   x ~= real_of_num (0::nat) -->
  1.4828 -   real_neg (real_inv x) = real_inv (real_neg x)"
  1.4829 +   x ~= real_of_num 0 --> real_neg (real_inv x) = real_inv (real_neg x)"
  1.4830    by (import hollight REAL_NEG_INV)
  1.4831  
  1.4832 -lemma REAL_INV_1OVER: "ALL x::hollight.real.
  1.4833 -   real_inv x = real_div (real_of_num (NUMERAL_BIT1 (0::nat))) x"
  1.4834 +lemma REAL_INV_1OVER: "ALL x::hollight.real. real_inv x = real_div (real_of_num (NUMERAL_BIT1 0)) x"
  1.4835    by (import hollight REAL_INV_1OVER)
  1.4836  
  1.4837  lemma REAL: "ALL x::nat.
  1.4838     real_of_num (Suc x) =
  1.4839 -   real_add (real_of_num x) (real_of_num (NUMERAL_BIT1 (0::nat)))"
  1.4840 +   real_add (real_of_num x) (real_of_num (NUMERAL_BIT1 0))"
  1.4841    by (import hollight REAL)
  1.4842  
  1.4843 -lemma REAL_POS: "ALL n::nat. real_le (real_of_num (0::nat)) (real_of_num n)"
  1.4844 +lemma REAL_POS: "ALL n::nat. real_le (real_of_num 0) (real_of_num n)"
  1.4845    by (import hollight REAL_POS)
  1.4846  
  1.4847  lemma REAL_LE: "ALL (m::nat) n::nat. real_le (real_of_num m) (real_of_num n) = <= m n"
  1.4848 @@ -9040,71 +9366,64 @@
  1.4849     real_mul (real_of_num m) (real_of_num n) = real_of_num (m * n)"
  1.4850    by (import hollight REAL_MUL)
  1.4851  
  1.4852 -lemma REAL_INV1: "real_inv (real_of_num (NUMERAL_BIT1 (0::nat))) =
  1.4853 -real_of_num (NUMERAL_BIT1 (0::nat))"
  1.4854 +lemma REAL_INV1: "real_inv (real_of_num (NUMERAL_BIT1 0)) = real_of_num (NUMERAL_BIT1 0)"
  1.4855    by (import hollight REAL_INV1)
  1.4856  
  1.4857 -lemma REAL_DIV_LZERO: "ALL x::hollight.real.
  1.4858 -   real_div (real_of_num (0::nat)) x = real_of_num (0::nat)"
  1.4859 +lemma REAL_DIV_LZERO: "ALL x::hollight.real. real_div (real_of_num 0) x = real_of_num 0"
  1.4860    by (import hollight REAL_DIV_LZERO)
  1.4861  
  1.4862  lemma REAL_LT_NZ: "ALL n::nat.
  1.4863 -   (real_of_num n ~= real_of_num (0::nat)) =
  1.4864 -   real_lt (real_of_num (0::nat)) (real_of_num n)"
  1.4865 +   (real_of_num n ~= real_of_num 0) =
  1.4866 +   real_lt (real_of_num 0) (real_of_num n)"
  1.4867    by (import hollight REAL_LT_NZ)
  1.4868  
  1.4869 -lemma REAL_NZ_IMP_LT: "ALL n::nat. n ~= (0::nat) --> real_lt (real_of_num (0::nat)) (real_of_num n)"
  1.4870 +lemma REAL_NZ_IMP_LT: "ALL n::nat. n ~= 0 --> real_lt (real_of_num 0) (real_of_num n)"
  1.4871    by (import hollight REAL_NZ_IMP_LT)
  1.4872  
  1.4873  lemma REAL_LT_RDIV_0: "ALL (y::hollight.real) z::hollight.real.
  1.4874 -   real_lt (real_of_num (0::nat)) z -->
  1.4875 -   real_lt (real_of_num (0::nat)) (real_div y z) =
  1.4876 -   real_lt (real_of_num (0::nat)) y"
  1.4877 +   real_lt (real_of_num 0) z -->
  1.4878 +   real_lt (real_of_num 0) (real_div y z) = real_lt (real_of_num 0) y"
  1.4879    by (import hollight REAL_LT_RDIV_0)
  1.4880  
  1.4881  lemma REAL_LT_RDIV: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.4882 -   real_lt (real_of_num (0::nat)) z -->
  1.4883 +   real_lt (real_of_num 0) z -->
  1.4884     real_lt (real_div x z) (real_div y z) = real_lt x y"
  1.4885    by (import hollight REAL_LT_RDIV)
  1.4886  
  1.4887  lemma REAL_LT_FRACTION_0: "ALL (n::nat) d::hollight.real.
  1.4888 -   n ~= (0::nat) -->
  1.4889 -   real_lt (real_of_num (0::nat)) (real_div d (real_of_num n)) =
  1.4890 -   real_lt (real_of_num (0::nat)) d"
  1.4891 +   n ~= 0 -->
  1.4892 +   real_lt (real_of_num 0) (real_div d (real_of_num n)) =
  1.4893 +   real_lt (real_of_num 0) d"
  1.4894    by (import hollight REAL_LT_FRACTION_0)
  1.4895  
  1.4896  lemma REAL_LT_MULTIPLE: "ALL (x::nat) xa::hollight.real.
  1.4897 -   < (NUMERAL_BIT1 (0::nat)) x -->
  1.4898 -   real_lt xa (real_mul (real_of_num x) xa) =
  1.4899 -   real_lt (real_of_num (0::nat)) xa"
  1.4900 +   < (NUMERAL_BIT1 0) x -->
  1.4901 +   real_lt xa (real_mul (real_of_num x) xa) = real_lt (real_of_num 0) xa"
  1.4902    by (import hollight REAL_LT_MULTIPLE)
  1.4903  
  1.4904  lemma REAL_LT_FRACTION: "ALL (n::nat) d::hollight.real.
  1.4905 -   < (NUMERAL_BIT1 (0::nat)) n -->
  1.4906 -   real_lt (real_div d (real_of_num n)) d = real_lt (real_of_num (0::nat)) d"
  1.4907 +   < (NUMERAL_BIT1 0) n -->
  1.4908 +   real_lt (real_div d (real_of_num n)) d = real_lt (real_of_num 0) d"
  1.4909    by (import hollight REAL_LT_FRACTION)
  1.4910  
  1.4911  lemma REAL_LT_HALF1: "ALL d::hollight.real.
  1.4912 -   real_lt (real_of_num (0::nat))
  1.4913 -    (real_div d (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) =
  1.4914 -   real_lt (real_of_num (0::nat)) d"
  1.4915 +   real_lt (real_of_num 0)
  1.4916 +    (real_div d (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))) =
  1.4917 +   real_lt (real_of_num 0) d"
  1.4918    by (import hollight REAL_LT_HALF1)
  1.4919  
  1.4920  lemma REAL_LT_HALF2: "ALL d::hollight.real.
  1.4921 -   real_lt (real_div d (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.4922 -    d =
  1.4923 -   real_lt (real_of_num (0::nat)) d"
  1.4924 +   real_lt (real_div d (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))) d =
  1.4925 +   real_lt (real_of_num 0) d"
  1.4926    by (import hollight REAL_LT_HALF2)
  1.4927  
  1.4928  lemma REAL_DOUBLE: "ALL x::hollight.real.
  1.4929 -   real_add x x =
  1.4930 -   real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) x"
  1.4931 +   real_add x x = real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) x"
  1.4932    by (import hollight REAL_DOUBLE)
  1.4933  
  1.4934  lemma REAL_HALF_DOUBLE: "ALL x::hollight.real.
  1.4935 -   real_add
  1.4936 -    (real_div x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.4937 -    (real_div x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) =
  1.4938 +   real_add (real_div x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))))
  1.4939 +    (real_div x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))) =
  1.4940     x"
  1.4941    by (import hollight REAL_HALF_DOUBLE)
  1.4942  
  1.4943 @@ -9140,10 +9459,10 @@
  1.4944     real_le (real_neg x) (real_neg y) = real_le y x"
  1.4945    by (import hollight REAL_LE_NEG)
  1.4946  
  1.4947 -lemma REAL_SUB_LZERO: "ALL x::hollight.real. real_sub (real_of_num (0::nat)) x = real_neg x"
  1.4948 +lemma REAL_SUB_LZERO: "ALL x::hollight.real. real_sub (real_of_num 0) x = real_neg x"
  1.4949    by (import hollight REAL_SUB_LZERO)
  1.4950  
  1.4951 -lemma REAL_SUB_RZERO: "ALL x::hollight.real. real_sub x (real_of_num (0::nat)) = x"
  1.4952 +lemma REAL_SUB_RZERO: "ALL x::hollight.real. real_sub x (real_of_num 0) = x"
  1.4953    by (import hollight REAL_SUB_RZERO)
  1.4954  
  1.4955  lemma REAL_LTE_ADD2: "ALL (w::hollight.real) (x::hollight.real) (y::hollight.real)
  1.4956 @@ -9152,14 +9471,14 @@
  1.4957    by (import hollight REAL_LTE_ADD2)
  1.4958  
  1.4959  lemma REAL_LTE_ADD: "ALL (x::hollight.real) y::hollight.real.
  1.4960 -   real_lt (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) y -->
  1.4961 -   real_lt (real_of_num (0::nat)) (real_add x y)"
  1.4962 +   real_lt (real_of_num 0) x & real_le (real_of_num 0) y -->
  1.4963 +   real_lt (real_of_num 0) (real_add x y)"
  1.4964    by (import hollight REAL_LTE_ADD)
  1.4965  
  1.4966  lemma REAL_LT_MUL2_ALT: "ALL (x1::hollight.real) (x2::hollight.real) (y1::hollight.real)
  1.4967     y2::hollight.real.
  1.4968 -   real_le (real_of_num (0::nat)) x1 &
  1.4969 -   real_le (real_of_num (0::nat)) y1 & real_lt x1 x2 & real_lt y1 y2 -->
  1.4970 +   real_le (real_of_num 0) x1 &
  1.4971 +   real_le (real_of_num 0) y1 & real_lt x1 x2 & real_lt y1 y2 -->
  1.4972     real_lt (real_mul x1 y1) (real_mul x2 y2)"
  1.4973    by (import hollight REAL_LT_MUL2_ALT)
  1.4974  
  1.4975 @@ -9180,22 +9499,22 @@
  1.4976    by (import hollight REAL_SUB_TRIANGLE)
  1.4977  
  1.4978  lemma REAL_INV_MUL_WEAK: "ALL (x::hollight.real) xa::hollight.real.
  1.4979 -   x ~= real_of_num (0::nat) & xa ~= real_of_num (0::nat) -->
  1.4980 +   x ~= real_of_num 0 & xa ~= real_of_num 0 -->
  1.4981     real_inv (real_mul x xa) = real_mul (real_inv x) (real_inv xa)"
  1.4982    by (import hollight REAL_INV_MUL_WEAK)
  1.4983  
  1.4984  lemma REAL_LE_LMUL_LOCAL: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.4985 -   real_lt (real_of_num (0::nat)) x -->
  1.4986 +   real_lt (real_of_num 0) x -->
  1.4987     real_le (real_mul x y) (real_mul x z) = real_le y z"
  1.4988    by (import hollight REAL_LE_LMUL_LOCAL)
  1.4989  
  1.4990  lemma REAL_LE_RMUL_EQ: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.4991 -   real_lt (real_of_num (0::nat)) z -->
  1.4992 +   real_lt (real_of_num 0) z -->
  1.4993     real_le (real_mul x z) (real_mul y z) = real_le x y"
  1.4994    by (import hollight REAL_LE_RMUL_EQ)
  1.4995  
  1.4996  lemma REAL_SUB_INV2: "ALL (x::hollight.real) y::hollight.real.
  1.4997 -   x ~= real_of_num (0::nat) & y ~= real_of_num (0::nat) -->
  1.4998 +   x ~= real_of_num 0 & y ~= real_of_num 0 -->
  1.4999     real_sub (real_inv x) (real_inv y) =
  1.5000     real_div (real_sub y x) (real_mul x y)"
  1.5001    by (import hollight REAL_SUB_INV2)
  1.5002 @@ -9208,77 +9527,74 @@
  1.5003    by (import hollight REAL_MEAN)
  1.5004  
  1.5005  lemma REAL_EQ_LMUL2: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.5006 -   x ~= real_of_num (0::nat) --> (y = z) = (real_mul x y = real_mul x z)"
  1.5007 +   x ~= real_of_num 0 --> (y = z) = (real_mul x y = real_mul x z)"
  1.5008    by (import hollight REAL_EQ_LMUL2)
  1.5009  
  1.5010  lemma REAL_LE_MUL2V: "ALL (x1::hollight.real) (x2::hollight.real) (y1::hollight.real)
  1.5011     y2::hollight.real.
  1.5012 -   real_le (real_of_num (0::nat)) x1 &
  1.5013 -   real_le (real_of_num (0::nat)) y1 & real_le x1 x2 & real_le y1 y2 -->
  1.5014 +   real_le (real_of_num 0) x1 &
  1.5015 +   real_le (real_of_num 0) y1 & real_le x1 x2 & real_le y1 y2 -->
  1.5016     real_le (real_mul x1 y1) (real_mul x2 y2)"
  1.5017    by (import hollight REAL_LE_MUL2V)
  1.5018  
  1.5019  lemma REAL_LE_LDIV: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.5020 -   real_lt (real_of_num (0::nat)) x & real_le y (real_mul z x) -->
  1.5021 +   real_lt (real_of_num 0) x & real_le y (real_mul z x) -->
  1.5022     real_le (real_div y x) z"
  1.5023    by (import hollight REAL_LE_LDIV)
  1.5024  
  1.5025  lemma REAL_LE_RDIV: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.5026 -   real_lt (real_of_num (0::nat)) x & real_le (real_mul y x) z -->
  1.5027 +   real_lt (real_of_num 0) x & real_le (real_mul y x) z -->
  1.5028     real_le y (real_div z x)"
  1.5029    by (import hollight REAL_LE_RDIV)
  1.5030  
  1.5031  lemma REAL_LT_1: "ALL (x::hollight.real) y::hollight.real.
  1.5032 -   real_le (real_of_num (0::nat)) x & real_lt x y -->
  1.5033 -   real_lt (real_div x y) (real_of_num (NUMERAL_BIT1 (0::nat)))"
  1.5034 +   real_le (real_of_num 0) x & real_lt x y -->
  1.5035 +   real_lt (real_div x y) (real_of_num (NUMERAL_BIT1 0))"
  1.5036    by (import hollight REAL_LT_1)
  1.5037  
  1.5038  lemma REAL_LE_LMUL_IMP: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.5039 -   real_le (real_of_num (0::nat)) x & real_le y z -->
  1.5040 +   real_le (real_of_num 0) x & real_le y z -->
  1.5041     real_le (real_mul x y) (real_mul x z)"
  1.5042    by (import hollight REAL_LE_LMUL_IMP)
  1.5043  
  1.5044  lemma REAL_LE_RMUL_IMP: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
  1.5045 -   real_le (real_of_num (0::nat)) x & real_le xa xb -->
  1.5046 +   real_le (real_of_num 0) x & real_le xa xb -->
  1.5047     real_le (real_mul xa x) (real_mul xb x)"
  1.5048    by (import hollight REAL_LE_RMUL_IMP)
  1.5049  
  1.5050  lemma REAL_INV_LT1: "ALL x::hollight.real.
  1.5051 -   real_lt (real_of_num (0::nat)) x &
  1.5052 -   real_lt x (real_of_num (NUMERAL_BIT1 (0::nat))) -->
  1.5053 -   real_lt (real_of_num (NUMERAL_BIT1 (0::nat))) (real_inv x)"
  1.5054 +   real_lt (real_of_num 0) x & real_lt x (real_of_num (NUMERAL_BIT1 0)) -->
  1.5055 +   real_lt (real_of_num (NUMERAL_BIT1 0)) (real_inv x)"
  1.5056    by (import hollight REAL_INV_LT1)
  1.5057  
  1.5058 -lemma REAL_POS_NZ: "ALL x::hollight.real.
  1.5059 -   real_lt (real_of_num (0::nat)) x --> x ~= real_of_num (0::nat)"
  1.5060 +lemma REAL_POS_NZ: "ALL x::hollight.real. real_lt (real_of_num 0) x --> x ~= real_of_num 0"
  1.5061    by (import hollight REAL_POS_NZ)
  1.5062  
  1.5063  lemma REAL_EQ_RMUL_IMP: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.5064 -   z ~= real_of_num (0::nat) & real_mul x z = real_mul y z --> x = y"
  1.5065 +   z ~= real_of_num 0 & real_mul x z = real_mul y z --> x = y"
  1.5066    by (import hollight REAL_EQ_RMUL_IMP)
  1.5067  
  1.5068  lemma REAL_EQ_LMUL_IMP: "ALL (x::hollight.real) (xa::hollight.real) xb::hollight.real.
  1.5069 -   x ~= real_of_num (0::nat) & real_mul x xa = real_mul x xb --> xa = xb"
  1.5070 +   x ~= real_of_num 0 & real_mul x xa = real_mul x xb --> xa = xb"
  1.5071    by (import hollight REAL_EQ_LMUL_IMP)
  1.5072  
  1.5073 -lemma REAL_FACT_NZ: "ALL n::nat. real_of_num (FACT n) ~= real_of_num (0::nat)"
  1.5074 +lemma REAL_FACT_NZ: "ALL n::nat. real_of_num (FACT n) ~= real_of_num 0"
  1.5075    by (import hollight REAL_FACT_NZ)
  1.5076  
  1.5077  lemma REAL_POSSQ: "ALL x::hollight.real.
  1.5078 -   real_lt (real_of_num (0::nat)) (real_mul x x) =
  1.5079 -   (x ~= real_of_num (0::nat))"
  1.5080 +   real_lt (real_of_num 0) (real_mul x x) = (x ~= real_of_num 0)"
  1.5081    by (import hollight REAL_POSSQ)
  1.5082  
  1.5083  lemma REAL_SUMSQ: "ALL (x::hollight.real) y::hollight.real.
  1.5084 -   (real_add (real_mul x x) (real_mul y y) = real_of_num (0::nat)) =
  1.5085 -   (x = real_of_num (0::nat) & y = real_of_num (0::nat))"
  1.5086 +   (real_add (real_mul x x) (real_mul y y) = real_of_num 0) =
  1.5087 +   (x = real_of_num 0 & y = real_of_num 0)"
  1.5088    by (import hollight REAL_SUMSQ)
  1.5089  
  1.5090  lemma REAL_EQ_NEG: "ALL (x::hollight.real) y::hollight.real. (real_neg x = real_neg y) = (x = y)"
  1.5091    by (import hollight REAL_EQ_NEG)
  1.5092  
  1.5093  lemma REAL_DIV_MUL2: "ALL (x::hollight.real) z::hollight.real.
  1.5094 -   x ~= real_of_num (0::nat) & z ~= real_of_num (0::nat) -->
  1.5095 +   x ~= real_of_num 0 & z ~= real_of_num 0 -->
  1.5096     (ALL y::hollight.real.
  1.5097         real_div y z = real_div (real_mul x y) (real_mul x z))"
  1.5098    by (import hollight REAL_DIV_MUL2)
  1.5099 @@ -9286,27 +9602,23 @@
  1.5100  lemma REAL_MIDDLE1: "ALL (a::hollight.real) b::hollight.real.
  1.5101     real_le a b -->
  1.5102     real_le a
  1.5103 -    (real_div (real_add a b)
  1.5104 -      (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))"
  1.5105 +    (real_div (real_add a b) (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))))"
  1.5106    by (import hollight REAL_MIDDLE1)
  1.5107  
  1.5108  lemma REAL_MIDDLE2: "ALL (a::hollight.real) b::hollight.real.
  1.5109     real_le a b -->
  1.5110     real_le
  1.5111 -    (real_div (real_add a b)
  1.5112 -      (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.5113 +    (real_div (real_add a b) (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))))
  1.5114      b"
  1.5115    by (import hollight REAL_MIDDLE2)
  1.5116  
  1.5117 -lemma ABS_ZERO: "ALL x::hollight.real.
  1.5118 -   (real_abs x = real_of_num (0::nat)) = (x = real_of_num (0::nat))"
  1.5119 +lemma ABS_ZERO: "ALL x::hollight.real. (real_abs x = real_of_num 0) = (x = real_of_num 0)"
  1.5120    by (import hollight ABS_ZERO)
  1.5121  
  1.5122 -lemma ABS_0: "real_abs (real_of_num (0::nat)) = real_of_num (0::nat)"
  1.5123 +lemma ABS_0: "real_abs (real_of_num 0) = real_of_num 0"
  1.5124    by (import hollight ABS_0)
  1.5125  
  1.5126 -lemma ABS_1: "real_abs (real_of_num (NUMERAL_BIT1 (0::nat))) =
  1.5127 -real_of_num (NUMERAL_BIT1 (0::nat))"
  1.5128 +lemma ABS_1: "real_abs (real_of_num (NUMERAL_BIT1 0)) = real_of_num (NUMERAL_BIT1 0)"
  1.5129    by (import hollight ABS_1)
  1.5130  
  1.5131  lemma ABS_NEG: "ALL x::hollight.real. real_abs (real_neg x) = real_abs x"
  1.5132 @@ -9316,7 +9628,7 @@
  1.5133     real_le (real_abs (real_add x y)) (real_add (real_abs x) (real_abs y))"
  1.5134    by (import hollight ABS_TRIANGLE)
  1.5135  
  1.5136 -lemma ABS_POS: "ALL x::hollight.real. real_le (real_of_num (0::nat)) (real_abs x)"
  1.5137 +lemma ABS_POS: "ALL x::hollight.real. real_le (real_of_num 0) (real_abs x)"
  1.5138    by (import hollight ABS_POS)
  1.5139  
  1.5140  lemma ABS_MUL: "ALL (x::hollight.real) y::hollight.real.
  1.5141 @@ -9334,12 +9646,11 @@
  1.5142    by (import hollight ABS_SUB)
  1.5143  
  1.5144  lemma ABS_NZ: "ALL x::hollight.real.
  1.5145 -   (x ~= real_of_num (0::nat)) = real_lt (real_of_num (0::nat)) (real_abs x)"
  1.5146 +   (x ~= real_of_num 0) = real_lt (real_of_num 0) (real_abs x)"
  1.5147    by (import hollight ABS_NZ)
  1.5148  
  1.5149  lemma ABS_INV: "ALL x::hollight.real.
  1.5150 -   x ~= real_of_num (0::nat) -->
  1.5151 -   real_abs (real_inv x) = real_inv (real_abs x)"
  1.5152 +   x ~= real_of_num 0 --> real_abs (real_inv x) = real_inv (real_abs x)"
  1.5153    by (import hollight ABS_INV)
  1.5154  
  1.5155  lemma ABS_ABS: "ALL x::hollight.real. real_abs (real_abs x) = real_abs x"
  1.5156 @@ -9348,14 +9659,14 @@
  1.5157  lemma ABS_LE: "ALL x::hollight.real. real_le x (real_abs x)"
  1.5158    by (import hollight ABS_LE)
  1.5159  
  1.5160 -lemma ABS_REFL: "ALL x::hollight.real. (real_abs x = x) = real_le (real_of_num (0::nat)) x"
  1.5161 +lemma ABS_REFL: "ALL x::hollight.real. (real_abs x = x) = real_le (real_of_num 0) x"
  1.5162    by (import hollight ABS_REFL)
  1.5163  
  1.5164  lemma ABS_N: "ALL n::nat. real_abs (real_of_num n) = real_of_num n"
  1.5165    by (import hollight ABS_N)
  1.5166  
  1.5167  lemma ABS_BETWEEN: "ALL (x::hollight.real) (y::hollight.real) d::hollight.real.
  1.5168 -   (real_lt (real_of_num (0::nat)) d &
  1.5169 +   (real_lt (real_of_num 0) d &
  1.5170      real_lt (real_sub x d) y & real_lt y (real_add x d)) =
  1.5171     real_lt (real_abs (real_sub y x)) d"
  1.5172    by (import hollight ABS_BETWEEN)
  1.5173 @@ -9365,12 +9676,11 @@
  1.5174    by (import hollight ABS_BOUND)
  1.5175  
  1.5176  lemma ABS_STILLNZ: "ALL (x::hollight.real) y::hollight.real.
  1.5177 -   real_lt (real_abs (real_sub x y)) (real_abs y) -->
  1.5178 -   x ~= real_of_num (0::nat)"
  1.5179 +   real_lt (real_abs (real_sub x y)) (real_abs y) --> x ~= real_of_num 0"
  1.5180    by (import hollight ABS_STILLNZ)
  1.5181  
  1.5182  lemma ABS_CASES: "ALL x::hollight.real.
  1.5183 -   x = real_of_num (0::nat) | real_lt (real_of_num (0::nat)) (real_abs x)"
  1.5184 +   x = real_of_num 0 | real_lt (real_of_num 0) (real_abs x)"
  1.5185    by (import hollight ABS_CASES)
  1.5186  
  1.5187  lemma ABS_BETWEEN1: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.5188 @@ -9379,16 +9689,16 @@
  1.5189    by (import hollight ABS_BETWEEN1)
  1.5190  
  1.5191  lemma ABS_SIGN: "ALL (x::hollight.real) y::hollight.real.
  1.5192 -   real_lt (real_abs (real_sub x y)) y --> real_lt (real_of_num (0::nat)) x"
  1.5193 +   real_lt (real_abs (real_sub x y)) y --> real_lt (real_of_num 0) x"
  1.5194    by (import hollight ABS_SIGN)
  1.5195  
  1.5196  lemma ABS_SIGN2: "ALL (x::hollight.real) y::hollight.real.
  1.5197     real_lt (real_abs (real_sub x y)) (real_neg y) -->
  1.5198 -   real_lt x (real_of_num (0::nat))"
  1.5199 +   real_lt x (real_of_num 0)"
  1.5200    by (import hollight ABS_SIGN2)
  1.5201  
  1.5202  lemma ABS_DIV: "ALL y::hollight.real.
  1.5203 -   y ~= real_of_num (0::nat) -->
  1.5204 +   y ~= real_of_num 0 -->
  1.5205     (ALL x::hollight.real.
  1.5206         real_abs (real_div x y) = real_div (real_abs x) (real_abs y))"
  1.5207    by (import hollight ABS_DIV)
  1.5208 @@ -9412,10 +9722,10 @@
  1.5209     real_lt x0 y0 &
  1.5210     real_lt (real_abs (real_sub x x0))
  1.5211      (real_div (real_sub y0 x0)
  1.5212 -      (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) &
  1.5213 +      (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))) &
  1.5214     real_lt (real_abs (real_sub y y0))
  1.5215      (real_div (real_sub y0 x0)
  1.5216 -      (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) -->
  1.5217 +      (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))) -->
  1.5218     real_lt x y"
  1.5219    by (import hollight ABS_BETWEEN2)
  1.5220  
  1.5221 @@ -9423,16 +9733,15 @@
  1.5222     real_le (real_abs x) k = (real_le (real_neg k) x & real_le x k)"
  1.5223    by (import hollight ABS_BOUNDS)
  1.5224  
  1.5225 -lemma POW_0: "ALL n::nat. real_pow (real_of_num (0::nat)) (Suc n) = real_of_num (0::nat)"
  1.5226 +lemma POW_0: "ALL n::nat. real_pow (real_of_num 0) (Suc n) = real_of_num 0"
  1.5227    by (import hollight POW_0)
  1.5228  
  1.5229  lemma POW_NZ: "ALL (c::hollight.real) n::nat.
  1.5230 -   c ~= real_of_num (0::nat) --> real_pow c n ~= real_of_num (0::nat)"
  1.5231 +   c ~= real_of_num 0 --> real_pow c n ~= real_of_num 0"
  1.5232    by (import hollight POW_NZ)
  1.5233  
  1.5234  lemma POW_INV: "ALL (c::hollight.real) x::nat.
  1.5235 -   c ~= real_of_num (0::nat) -->
  1.5236 -   real_inv (real_pow c x) = real_pow (real_inv c) x"
  1.5237 +   c ~= real_of_num 0 --> real_inv (real_pow c x) = real_pow (real_inv c) x"
  1.5238    by (import hollight POW_INV)
  1.5239  
  1.5240  lemma POW_ABS: "ALL (c::hollight.real) n::nat.
  1.5241 @@ -9440,37 +9749,35 @@
  1.5242    by (import hollight POW_ABS)
  1.5243  
  1.5244  lemma POW_PLUS1: "ALL (e::hollight.real) x::nat.
  1.5245 -   real_lt (real_of_num (0::nat)) e -->
  1.5246 +   real_lt (real_of_num 0) e -->
  1.5247     real_le
  1.5248 -    (real_add (real_of_num (NUMERAL_BIT1 (0::nat)))
  1.5249 -      (real_mul (real_of_num x) e))
  1.5250 -    (real_pow (real_add (real_of_num (NUMERAL_BIT1 (0::nat))) e) x)"
  1.5251 +    (real_add (real_of_num (NUMERAL_BIT1 0)) (real_mul (real_of_num x) e))
  1.5252 +    (real_pow (real_add (real_of_num (NUMERAL_BIT1 0)) e) x)"
  1.5253    by (import hollight POW_PLUS1)
  1.5254  
  1.5255  lemma POW_ADD: "ALL (c::hollight.real) (m::nat) n::nat.
  1.5256     real_pow c (m + n) = real_mul (real_pow c m) (real_pow c n)"
  1.5257    by (import hollight POW_ADD)
  1.5258  
  1.5259 -lemma POW_1: "ALL x::hollight.real. real_pow x (NUMERAL_BIT1 (0::nat)) = x"
  1.5260 +lemma POW_1: "ALL x::hollight.real. real_pow x (NUMERAL_BIT1 0) = x"
  1.5261    by (import hollight POW_1)
  1.5262  
  1.5263  lemma POW_2: "ALL x::hollight.real.
  1.5264 -   real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = real_mul x x"
  1.5265 +   real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 0)) = real_mul x x"
  1.5266    by (import hollight POW_2)
  1.5267  
  1.5268  lemma POW_POS: "ALL (x::hollight.real) xa::nat.
  1.5269 -   real_le (real_of_num (0::nat)) x -->
  1.5270 -   real_le (real_of_num (0::nat)) (real_pow x xa)"
  1.5271 +   real_le (real_of_num 0) x --> real_le (real_of_num 0) (real_pow x xa)"
  1.5272    by (import hollight POW_POS)
  1.5273  
  1.5274  lemma POW_LE: "ALL (n::nat) (x::hollight.real) y::hollight.real.
  1.5275 -   real_le (real_of_num (0::nat)) x & real_le x y -->
  1.5276 +   real_le (real_of_num 0) x & real_le x y -->
  1.5277     real_le (real_pow x n) (real_pow y n)"
  1.5278    by (import hollight POW_LE)
  1.5279  
  1.5280  lemma POW_M1: "ALL n::nat.
  1.5281 -   real_abs (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) n) =
  1.5282 -   real_of_num (NUMERAL_BIT1 (0::nat))"
  1.5283 +   real_abs (real_pow (real_neg (real_of_num (NUMERAL_BIT1 0))) n) =
  1.5284 +   real_of_num (NUMERAL_BIT1 0)"
  1.5285    by (import hollight POW_M1)
  1.5286  
  1.5287  lemma POW_MUL: "ALL (n::nat) (x::hollight.real) y::hollight.real.
  1.5288 @@ -9478,46 +9785,45 @@
  1.5289    by (import hollight POW_MUL)
  1.5290  
  1.5291  lemma REAL_LE_SQUARE_POW: "ALL x::hollight.real.
  1.5292 -   real_le (real_of_num (0::nat))
  1.5293 -    (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))"
  1.5294 +   real_le (real_of_num 0) (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 0)))"
  1.5295    by (import hollight REAL_LE_SQUARE_POW)
  1.5296  
  1.5297  lemma ABS_POW2: "ALL x::hollight.real.
  1.5298 -   real_abs (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) =
  1.5299 -   real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))"
  1.5300 +   real_abs (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 0))) =
  1.5301 +   real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 0))"
  1.5302    by (import hollight ABS_POW2)
  1.5303  
  1.5304  lemma REAL_LE1_POW2: "ALL x::hollight.real.
  1.5305 -   real_le (real_of_num (NUMERAL_BIT1 (0::nat))) x -->
  1.5306 -   real_le (real_of_num (NUMERAL_BIT1 (0::nat)))
  1.5307 -    (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))"
  1.5308 +   real_le (real_of_num (NUMERAL_BIT1 0)) x -->
  1.5309 +   real_le (real_of_num (NUMERAL_BIT1 0))
  1.5310 +    (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 0)))"
  1.5311    by (import hollight REAL_LE1_POW2)
  1.5312  
  1.5313  lemma REAL_LT1_POW2: "ALL x::hollight.real.
  1.5314 -   real_lt (real_of_num (NUMERAL_BIT1 (0::nat))) x -->
  1.5315 -   real_lt (real_of_num (NUMERAL_BIT1 (0::nat)))
  1.5316 -    (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))"
  1.5317 +   real_lt (real_of_num (NUMERAL_BIT1 0)) x -->
  1.5318 +   real_lt (real_of_num (NUMERAL_BIT1 0))
  1.5319 +    (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 0)))"
  1.5320    by (import hollight REAL_LT1_POW2)
  1.5321  
  1.5322  lemma POW_POS_LT: "ALL (x::hollight.real) n::nat.
  1.5323 -   real_lt (real_of_num (0::nat)) x -->
  1.5324 -   real_lt (real_of_num (0::nat)) (real_pow x (Suc n))"
  1.5325 +   real_lt (real_of_num 0) x -->
  1.5326 +   real_lt (real_of_num 0) (real_pow x (Suc n))"
  1.5327    by (import hollight POW_POS_LT)
  1.5328  
  1.5329  lemma POW_2_LE1: "ALL n::nat.
  1.5330 -   real_le (real_of_num (NUMERAL_BIT1 (0::nat)))
  1.5331 -    (real_pow (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) n)"
  1.5332 +   real_le (real_of_num (NUMERAL_BIT1 0))
  1.5333 +    (real_pow (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) n)"
  1.5334    by (import hollight POW_2_LE1)
  1.5335  
  1.5336  lemma POW_2_LT: "ALL n::nat.
  1.5337     real_lt (real_of_num n)
  1.5338 -    (real_pow (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) n)"
  1.5339 +    (real_pow (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) n)"
  1.5340    by (import hollight POW_2_LT)
  1.5341  
  1.5342  lemma POW_MINUS1: "ALL n::nat.
  1.5343 -   real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
  1.5344 -    (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * n) =
  1.5345 -   real_of_num (NUMERAL_BIT1 (0::nat))"
  1.5346 +   real_pow (real_neg (real_of_num (NUMERAL_BIT1 0)))
  1.5347 +    (NUMERAL_BIT0 (NUMERAL_BIT1 0) * n) =
  1.5348 +   real_of_num (NUMERAL_BIT1 0)"
  1.5349    by (import hollight POW_MINUS1)
  1.5350  
  1.5351  lemma REAL_SUP_EXISTS: "ALL P::hollight.real => bool.
  1.5352 @@ -9588,22 +9894,21 @@
  1.5353    by (import hollight REAL_ARCH_SIMPLE)
  1.5354  
  1.5355  lemma REAL_ARCH: "ALL x::hollight.real.
  1.5356 -   real_lt (real_of_num (0::nat)) x -->
  1.5357 +   real_lt (real_of_num 0) x -->
  1.5358     (ALL y::hollight.real. EX n::nat. real_lt y (real_mul (real_of_num n) x))"
  1.5359    by (import hollight REAL_ARCH)
  1.5360  
  1.5361  lemma REAL_ARCH_LEAST: "ALL y::hollight.real.
  1.5362 -   real_lt (real_of_num (0::nat)) y -->
  1.5363 +   real_lt (real_of_num 0) y -->
  1.5364     (ALL x::hollight.real.
  1.5365 -       real_le (real_of_num (0::nat)) x -->
  1.5366 +       real_le (real_of_num 0) x -->
  1.5367         (EX n::nat.
  1.5368             real_le (real_mul (real_of_num n) y) x &
  1.5369             real_lt x (real_mul (real_of_num (Suc n)) y)))"
  1.5370    by (import hollight REAL_ARCH_LEAST)
  1.5371  
  1.5372  lemma sum_EXISTS: "EX x::nat * nat => (nat => hollight.real) => hollight.real.
  1.5373 -   (ALL (f::nat => hollight.real) n::nat.
  1.5374 -       x (n, 0::nat) f = real_of_num (0::nat)) &
  1.5375 +   (ALL (f::nat => hollight.real) n::nat. x (n, 0) f = real_of_num 0) &
  1.5376     (ALL (f::nat => hollight.real) (m::nat) n::nat.
  1.5377         x (n, Suc m) f = real_add (x (n, m) f) (f (n + m)))"
  1.5378    by (import hollight sum_EXISTS)
  1.5379 @@ -9612,20 +9917,18 @@
  1.5380    psum :: "nat * nat => (nat => hollight.real) => hollight.real" 
  1.5381    "psum ==
  1.5382  SOME sum::nat * nat => (nat => hollight.real) => hollight.real.
  1.5383 -   (ALL (f::nat => hollight.real) n::nat.
  1.5384 -       sum (n, 0::nat) f = real_of_num (0::nat)) &
  1.5385 +   (ALL (f::nat => hollight.real) n::nat. sum (n, 0) f = real_of_num 0) &
  1.5386     (ALL (f::nat => hollight.real) (m::nat) n::nat.
  1.5387         sum (n, Suc m) f = real_add (sum (n, m) f) (f (n + m)))"
  1.5388  
  1.5389  lemma DEF_psum: "psum =
  1.5390  (SOME sum::nat * nat => (nat => hollight.real) => hollight.real.
  1.5391 -    (ALL (f::nat => hollight.real) n::nat.
  1.5392 -        sum (n, 0::nat) f = real_of_num (0::nat)) &
  1.5393 +    (ALL (f::nat => hollight.real) n::nat. sum (n, 0) f = real_of_num 0) &
  1.5394      (ALL (f::nat => hollight.real) (m::nat) n::nat.
  1.5395          sum (n, Suc m) f = real_add (sum (n, m) f) (f (n + m))))"
  1.5396    by (import hollight DEF_psum)
  1.5397  
  1.5398 -lemma sum: "psum (n::nat, 0::nat) (f::nat => hollight.real) = real_of_num (0::nat) &
  1.5399 +lemma sum: "psum (n::nat, 0) (f::nat => hollight.real) = real_of_num 0 &
  1.5400  psum (n, Suc (m::nat)) f = real_add (psum (n, m) f) (f (n + m))"
  1.5401    by (import hollight sum)
  1.5402  
  1.5403 @@ -9636,16 +9939,16 @@
  1.5404    by (import hollight PSUM_SUM)
  1.5405  
  1.5406  lemma PSUM_SUM_NUMSEG: "ALL (f::nat => hollight.real) (m::nat) n::nat.
  1.5407 -   ~ (m = (0::nat) & n = (0::nat)) -->
  1.5408 -   psum (m, n) f = hollight.sum (dotdot m (m + n - NUMERAL_BIT1 (0::nat))) f"
  1.5409 +   ~ (m = 0 & n = 0) -->
  1.5410 +   psum (m, n) f = hollight.sum (dotdot m (m + n - NUMERAL_BIT1 0)) f"
  1.5411    by (import hollight PSUM_SUM_NUMSEG)
  1.5412  
  1.5413  lemma SUM_TWO: "ALL (f::nat => hollight.real) (n::nat) p::nat.
  1.5414 -   real_add (psum (0::nat, n) f) (psum (n, p) f) = psum (0::nat, n + p) f"
  1.5415 +   real_add (psum (0, n) f) (psum (n, p) f) = psum (0, n + p) f"
  1.5416    by (import hollight SUM_TWO)
  1.5417  
  1.5418  lemma SUM_DIFF: "ALL (f::nat => hollight.real) (m::nat) n::nat.
  1.5419 -   psum (m, n) f = real_sub (psum (0::nat, m + n) f) (psum (0::nat, m) f)"
  1.5420 +   psum (m, n) f = real_sub (psum (0, m + n) f) (psum (0, m) f)"
  1.5421    by (import hollight SUM_DIFF)
  1.5422  
  1.5423  lemma ABS_SUM: "ALL (f::nat => hollight.real) (m::nat) n::nat.
  1.5424 @@ -9664,13 +9967,13 @@
  1.5425    by (import hollight SUM_EQ)
  1.5426  
  1.5427  lemma SUM_POS: "ALL f::nat => hollight.real.
  1.5428 -   (ALL n::nat. real_le (real_of_num (0::nat)) (f n)) -->
  1.5429 -   (ALL (m::nat) n::nat. real_le (real_of_num (0::nat)) (psum (m, n) f))"
  1.5430 +   (ALL n::nat. real_le (real_of_num 0) (f n)) -->
  1.5431 +   (ALL (m::nat) n::nat. real_le (real_of_num 0) (psum (m, n) f))"
  1.5432    by (import hollight SUM_POS)
  1.5433  
  1.5434  lemma SUM_POS_GEN: "ALL (f::nat => hollight.real) (m::nat) n::nat.
  1.5435 -   (ALL n::nat. <= m n --> real_le (real_of_num (0::nat)) (f n)) -->
  1.5436 -   real_le (real_of_num (0::nat)) (psum (m, n) f)"
  1.5437 +   (ALL n::nat. <= m n --> real_le (real_of_num 0) (f n)) -->
  1.5438 +   real_le (real_of_num 0) (psum (m, n) f)"
  1.5439    by (import hollight SUM_POS_GEN)
  1.5440  
  1.5441  lemma SUM_ABS: "ALL (f::nat => hollight.real) (m::nat) x::nat.
  1.5442 @@ -9684,8 +9987,8 @@
  1.5443    by (import hollight SUM_ABS_LE)
  1.5444  
  1.5445  lemma SUM_ZERO: "ALL (f::nat => hollight.real) N::nat.
  1.5446 -   (ALL n::nat. >= n N --> f n = real_of_num (0::nat)) -->
  1.5447 -   (ALL (m::nat) n::nat. >= m N --> psum (m, n) f = real_of_num (0::nat))"
  1.5448 +   (ALL n::nat. >= n N --> f n = real_of_num 0) -->
  1.5449 +   (ALL (m::nat) n::nat. >= m N --> psum (m, n) f = real_of_num 0)"
  1.5450    by (import hollight SUM_ZERO)
  1.5451  
  1.5452  lemma SUM_ADD: "ALL (f::nat => hollight.real) (g::nat => hollight.real) (m::nat) n::nat.
  1.5453 @@ -9712,8 +10015,8 @@
  1.5454    by (import hollight SUM_SUBST)
  1.5455  
  1.5456  lemma SUM_NSUB: "ALL (n::nat) (f::nat => hollight.real) c::hollight.real.
  1.5457 -   real_sub (psum (0::nat, n) f) (real_mul (real_of_num n) c) =
  1.5458 -   psum (0::nat, n) (%p::nat. real_sub (f p) c)"
  1.5459 +   real_sub (psum (0, n) f) (real_mul (real_of_num n) c) =
  1.5460 +   psum (0, n) (%p::nat. real_sub (f p) c)"
  1.5461    by (import hollight SUM_NSUB)
  1.5462  
  1.5463  lemma SUM_BOUND: "ALL (f::nat => hollight.real) (K::hollight.real) (m::nat) n::nat.
  1.5464 @@ -9722,29 +10025,27 @@
  1.5465    by (import hollight SUM_BOUND)
  1.5466  
  1.5467  lemma SUM_GROUP: "ALL (n::nat) (k::nat) f::nat => hollight.real.
  1.5468 -   psum (0::nat, n) (%m::nat. psum (m * k, k) f) = psum (0::nat, n * k) f"
  1.5469 +   psum (0, n) (%m::nat. psum (m * k, k) f) = psum (0, n * k) f"
  1.5470    by (import hollight SUM_GROUP)
  1.5471  
  1.5472 -lemma SUM_1: "ALL (f::nat => hollight.real) n::nat.
  1.5473 -   psum (n, NUMERAL_BIT1 (0::nat)) f = f n"
  1.5474 +lemma SUM_1: "ALL (f::nat => hollight.real) n::nat. psum (n, NUMERAL_BIT1 0) f = f n"
  1.5475    by (import hollight SUM_1)
  1.5476  
  1.5477  lemma SUM_2: "ALL (f::nat => hollight.real) n::nat.
  1.5478 -   psum (n, NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) f =
  1.5479 -   real_add (f n) (f (n + NUMERAL_BIT1 (0::nat)))"
  1.5480 +   psum (n, NUMERAL_BIT0 (NUMERAL_BIT1 0)) f =
  1.5481 +   real_add (f n) (f (n + NUMERAL_BIT1 0))"
  1.5482    by (import hollight SUM_2)
  1.5483  
  1.5484  lemma SUM_OFFSET: "ALL (f::nat => hollight.real) (n::nat) k::nat.
  1.5485 -   psum (0::nat, n) (%m::nat. f (m + k)) =
  1.5486 -   real_sub (psum (0::nat, n + k) f) (psum (0::nat, k) f)"
  1.5487 +   psum (0, n) (%m::nat. f (m + k)) =
  1.5488 +   real_sub (psum (0, n + k) f) (psum (0, k) f)"
  1.5489    by (import hollight SUM_OFFSET)
  1.5490  
  1.5491  lemma SUM_REINDEX: "ALL (f::nat => hollight.real) (m::nat) (k::nat) n::nat.
  1.5492     psum (m + k, n) f = psum (m, n) (%r::nat. f (r + k))"
  1.5493    by (import hollight SUM_REINDEX)
  1.5494  
  1.5495 -lemma SUM_0: "ALL (m::nat) n::nat.
  1.5496 -   psum (m, n) (%r::nat. real_of_num (0::nat)) = real_of_num (0::nat)"
  1.5497 +lemma SUM_0: "ALL (m::nat) n::nat. psum (m, n) (%r::nat. real_of_num 0) = real_of_num 0"
  1.5498    by (import hollight SUM_0)
  1.5499  
  1.5500  lemma SUM_CANCEL: "ALL (f::nat => hollight.real) (n::nat) d::nat.
  1.5501 @@ -9753,14 +10054,14 @@
  1.5502    by (import hollight SUM_CANCEL)
  1.5503  
  1.5504  lemma SUM_HORNER: "ALL (f::nat => hollight.real) (n::nat) x::hollight.real.
  1.5505 -   psum (0::nat, Suc n) (%i::nat. real_mul (f i) (real_pow x i)) =
  1.5506 -   real_add (f (0::nat))
  1.5507 +   psum (0, Suc n) (%i::nat. real_mul (f i) (real_pow x i)) =
  1.5508 +   real_add (f 0)
  1.5509      (real_mul x
  1.5510 -      (psum (0::nat, n) (%i::nat. real_mul (f (Suc i)) (real_pow x i))))"
  1.5511 +      (psum (0, n) (%i::nat. real_mul (f (Suc i)) (real_pow x i))))"
  1.5512    by (import hollight SUM_HORNER)
  1.5513  
  1.5514  lemma SUM_CONST: "ALL (c::hollight.real) n::nat.
  1.5515 -   psum (0::nat, n) (%m::nat. c) = real_mul (real_of_num n) c"
  1.5516 +   psum (0, n) (%m::nat. c) = real_mul (real_of_num n) c"
  1.5517    by (import hollight SUM_CONST)
  1.5518  
  1.5519  lemma SUM_SPLIT: "ALL (f::nat => hollight.real) (n::nat) p::nat.
  1.5520 @@ -9774,15 +10075,15 @@
  1.5521  
  1.5522  lemma SUM_EQ_0: "(ALL r::nat.
  1.5523      <= (m::nat) r & < r (m + (n::nat)) -->
  1.5524 -    (f::nat => hollight.real) r = real_of_num (0::nat)) -->
  1.5525 -psum (m, n) f = real_of_num (0::nat)"
  1.5526 +    (f::nat => hollight.real) r = real_of_num 0) -->
  1.5527 +psum (m, n) f = real_of_num 0"
  1.5528    by (import hollight SUM_EQ_0)
  1.5529  
  1.5530  lemma SUM_MORETERMS_EQ: "ALL (m::nat) (n::nat) p::nat.
  1.5531     <= n p &
  1.5532     (ALL r::nat.
  1.5533         <= (m + n) r & < r (m + p) -->
  1.5534 -       (f::nat => hollight.real) r = real_of_num (0::nat)) -->
  1.5535 +       (f::nat => hollight.real) r = real_of_num 0) -->
  1.5536     psum (m, p) f = psum (m, n) f"
  1.5537    by (import hollight SUM_MORETERMS_EQ)
  1.5538  
  1.5539 @@ -9796,7 +10097,7 @@
  1.5540    by (import hollight SUM_DIFFERENCES_EQ)
  1.5541  
  1.5542  constdefs
  1.5543 -  re_Union :: "(('A::type => bool) => bool) => 'A::type => bool" 
  1.5544 +  re_Union :: "(('A => bool) => bool) => 'A => bool" 
  1.5545    "re_Union ==
  1.5546  %(u::('A::type => bool) => bool) x::'A::type.
  1.5547     EX s::'A::type => bool. u s & s x"
  1.5548 @@ -9807,7 +10108,7 @@
  1.5549    by (import hollight DEF_re_Union)
  1.5550  
  1.5551  constdefs
  1.5552 -  re_union :: "('A::type => bool) => ('A::type => bool) => 'A::type => bool" 
  1.5553 +  re_union :: "('A => bool) => ('A => bool) => 'A => bool" 
  1.5554    "re_union ==
  1.5555  %(u::'A::type => bool) (ua::'A::type => bool) x::'A::type. u x | ua x"
  1.5556  
  1.5557 @@ -9816,7 +10117,7 @@
  1.5558    by (import hollight DEF_re_union)
  1.5559  
  1.5560  constdefs
  1.5561 -  re_intersect :: "('A::type => bool) => ('A::type => bool) => 'A::type => bool" 
  1.5562 +  re_intersect :: "('A => bool) => ('A => bool) => 'A => bool" 
  1.5563    "re_intersect ==
  1.5564  %(u::'A::type => bool) (ua::'A::type => bool) x::'A::type. u x & ua x"
  1.5565  
  1.5566 @@ -9825,21 +10126,21 @@
  1.5567    by (import hollight DEF_re_intersect)
  1.5568  
  1.5569  constdefs
  1.5570 -  re_null :: "'A::type => bool" 
  1.5571 +  re_null :: "'A => bool" 
  1.5572    "re_null == %x::'A::type. False"
  1.5573  
  1.5574  lemma DEF_re_null: "re_null = (%x::'A::type. False)"
  1.5575    by (import hollight DEF_re_null)
  1.5576  
  1.5577  constdefs
  1.5578 -  re_universe :: "'A::type => bool" 
  1.5579 +  re_universe :: "'A => bool" 
  1.5580    "re_universe == %x::'A::type. True"
  1.5581  
  1.5582  lemma DEF_re_universe: "re_universe = (%x::'A::type. True)"
  1.5583    by (import hollight DEF_re_universe)
  1.5584  
  1.5585  constdefs
  1.5586 -  re_subset :: "('A::type => bool) => ('A::type => bool) => bool" 
  1.5587 +  re_subset :: "('A => bool) => ('A => bool) => bool" 
  1.5588    "re_subset ==
  1.5589  %(u::'A::type => bool) ua::'A::type => bool. ALL x::'A::type. u x --> ua x"
  1.5590  
  1.5591 @@ -9848,7 +10149,7 @@
  1.5592    by (import hollight DEF_re_subset)
  1.5593  
  1.5594  constdefs
  1.5595 -  re_compl :: "('A::type => bool) => 'A::type => bool" 
  1.5596 +  re_compl :: "('A => bool) => 'A => bool" 
  1.5597    "re_compl == %(u::'A::type => bool) x::'A::type. ~ u x"
  1.5598  
  1.5599  lemma DEF_re_compl: "re_compl = (%(u::'A::type => bool) x::'A::type. ~ u x)"
  1.5600 @@ -9869,7 +10170,7 @@
  1.5601    by (import hollight SUBSETA_TRANS)
  1.5602  
  1.5603  constdefs
  1.5604 -  istopology :: "(('A::type => bool) => bool) => bool" 
  1.5605 +  istopology :: "(('A => bool) => bool) => bool" 
  1.5606    "istopology ==
  1.5607  %u::('A::type => bool) => bool.
  1.5608     u re_null &
  1.5609 @@ -9901,7 +10202,7 @@
  1.5610    topology :: _ 
  1.5611  
  1.5612  lemmas "TYDEF_topology_@intern" = typedef_hol2hollight 
  1.5613 -  [where a="a :: 'A::type topology" and r=r ,
  1.5614 +  [where a="a :: 'A topology" and r=r ,
  1.5615     OF type_definition_topology]
  1.5616  
  1.5617  lemma TOPOLOGY: "ALL L::'A::type topology.
  1.5618 @@ -9918,7 +10219,7 @@
  1.5619    by (import hollight TOPOLOGY_UNION)
  1.5620  
  1.5621  constdefs
  1.5622 -  neigh :: "'A::type topology => ('A::type => bool) * 'A::type => bool" 
  1.5623 +  neigh :: "'A topology => ('A => bool) * 'A => bool" 
  1.5624    "neigh ==
  1.5625  %(u::'A::type topology) ua::('A::type => bool) * 'A::type.
  1.5626     EX P::'A::type => bool. open u P & re_subset P (fst ua) & P (snd ua)"
  1.5627 @@ -9952,7 +10253,7 @@
  1.5628    by (import hollight OPEN_NEIGH)
  1.5629  
  1.5630  constdefs
  1.5631 -  closed :: "'A::type topology => ('A::type => bool) => bool" 
  1.5632 +  closed :: "'A topology => ('A => bool) => bool" 
  1.5633    "closed == %(u::'A::type topology) ua::'A::type => bool. open u (re_compl ua)"
  1.5634  
  1.5635  lemma DEF_closed: "closed =
  1.5636 @@ -9960,7 +10261,7 @@
  1.5637    by (import hollight DEF_closed)
  1.5638  
  1.5639  constdefs
  1.5640 -  limpt :: "'A::type topology => 'A::type => ('A::type => bool) => bool" 
  1.5641 +  limpt :: "'A topology => 'A => ('A => bool) => bool" 
  1.5642    "limpt ==
  1.5643  %(u::'A::type topology) (ua::'A::type) ub::'A::type => bool.
  1.5644     ALL N::'A::type => bool.
  1.5645 @@ -9977,18 +10278,16 @@
  1.5646    by (import hollight CLOSED_LIMPT)
  1.5647  
  1.5648  constdefs
  1.5649 -  ismet :: "('A::type * 'A::type => hollight.real) => bool" 
  1.5650 +  ismet :: "('A * 'A => hollight.real) => bool" 
  1.5651    "ismet ==
  1.5652  %u::'A::type * 'A::type => hollight.real.
  1.5653 -   (ALL (x::'A::type) y::'A::type.
  1.5654 -       (u (x, y) = real_of_num (0::nat)) = (x = y)) &
  1.5655 +   (ALL (x::'A::type) y::'A::type. (u (x, y) = real_of_num 0) = (x = y)) &
  1.5656     (ALL (x::'A::type) (y::'A::type) z::'A::type.
  1.5657         real_le (u (y, z)) (real_add (u (x, y)) (u (x, z))))"
  1.5658  
  1.5659  lemma DEF_ismet: "ismet =
  1.5660  (%u::'A::type * 'A::type => hollight.real.
  1.5661 -    (ALL (x::'A::type) y::'A::type.
  1.5662 -        (u (x, y) = real_of_num (0::nat)) = (x = y)) &
  1.5663 +    (ALL (x::'A::type) y::'A::type. (u (x, y) = real_of_num 0) = (x = y)) &
  1.5664      (ALL (x::'A::type) (y::'A::type) z::'A::type.
  1.5665          real_le (u (y, z)) (real_add (u (x, y)) (u (x, z)))))"
  1.5666    by (import hollight DEF_ismet)
  1.5667 @@ -10008,21 +10307,21 @@
  1.5668    metric :: _ 
  1.5669  
  1.5670  lemmas "TYDEF_metric_@intern" = typedef_hol2hollight 
  1.5671 -  [where a="a :: 'A::type metric" and r=r ,
  1.5672 +  [where a="a :: 'A metric" and r=r ,
  1.5673     OF type_definition_metric]
  1.5674  
  1.5675  lemma METRIC_ISMET: "ALL m::'A::type metric. ismet (mdist m)"
  1.5676    by (import hollight METRIC_ISMET)
  1.5677  
  1.5678  lemma METRIC_ZERO: "ALL (m::'A::type metric) (x::'A::type) y::'A::type.
  1.5679 -   (mdist m (x, y) = real_of_num (0::nat)) = (x = y)"
  1.5680 +   (mdist m (x, y) = real_of_num 0) = (x = y)"
  1.5681    by (import hollight METRIC_ZERO)
  1.5682  
  1.5683 -lemma METRIC_SAME: "ALL (m::'A::type metric) x::'A::type. mdist m (x, x) = real_of_num (0::nat)"
  1.5684 +lemma METRIC_SAME: "ALL (m::'A::type metric) x::'A::type. mdist m (x, x) = real_of_num 0"
  1.5685    by (import hollight METRIC_SAME)
  1.5686  
  1.5687  lemma METRIC_POS: "ALL (m::'A::type metric) (x::'A::type) y::'A::type.
  1.5688 -   real_le (real_of_num (0::nat)) (mdist m (x, y))"
  1.5689 +   real_le (real_of_num 0) (mdist m (x, y))"
  1.5690    by (import hollight METRIC_POS)
  1.5691  
  1.5692  lemma METRIC_SYM: "ALL (m::'A::type metric) (x::'A::type) y::'A::type.
  1.5693 @@ -10034,11 +10333,11 @@
  1.5694    by (import hollight METRIC_TRIANGLE)
  1.5695  
  1.5696  lemma METRIC_NZ: "ALL (m::'A::type metric) (x::'A::type) y::'A::type.
  1.5697 -   x ~= y --> real_lt (real_of_num (0::nat)) (mdist m (x, y))"
  1.5698 +   x ~= y --> real_lt (real_of_num 0) (mdist m (x, y))"
  1.5699    by (import hollight METRIC_NZ)
  1.5700  
  1.5701  constdefs
  1.5702 -  mtop :: "'A::type metric => 'A::type topology" 
  1.5703 +  mtop :: "'A metric => 'A topology" 
  1.5704    "mtop ==
  1.5705  %u::'A::type metric.
  1.5706     topology
  1.5707 @@ -10046,7 +10345,7 @@
  1.5708          ALL x::'A::type.
  1.5709             S x -->
  1.5710             (EX e::hollight.real.
  1.5711 -               real_lt (real_of_num (0::nat)) e &
  1.5712 +               real_lt (real_of_num 0) e &
  1.5713                 (ALL y::'A::type. real_lt (mdist u (x, y)) e --> S y)))"
  1.5714  
  1.5715  lemma DEF_mtop: "mtop =
  1.5716 @@ -10056,7 +10355,7 @@
  1.5717           ALL x::'A::type.
  1.5718              S x -->
  1.5719              (EX e::hollight.real.
  1.5720 -                real_lt (real_of_num (0::nat)) e &
  1.5721 +                real_lt (real_of_num 0) e &
  1.5722                  (ALL y::'A::type. real_lt (mdist u (x, y)) e --> S y))))"
  1.5723    by (import hollight DEF_mtop)
  1.5724  
  1.5725 @@ -10066,7 +10365,7 @@
  1.5726          ALL x::'A::type.
  1.5727             S x -->
  1.5728             (EX e::hollight.real.
  1.5729 -               real_lt (real_of_num (0::nat)) e &
  1.5730 +               real_lt (real_of_num 0) e &
  1.5731                 (ALL y::'A::type. real_lt (mdist m (x, y)) e --> S y)))"
  1.5732    by (import hollight mtop_istopology)
  1.5733  
  1.5734 @@ -10075,12 +10374,12 @@
  1.5735     (ALL x::'A::type.
  1.5736         S x -->
  1.5737         (EX e::hollight.real.
  1.5738 -           real_lt (real_of_num (0::nat)) e &
  1.5739 +           real_lt (real_of_num 0) e &
  1.5740             (ALL y::'A::type. real_lt (mdist m (x, y)) e --> S y)))"
  1.5741    by (import hollight MTOP_OPEN)
  1.5742  
  1.5743  constdefs
  1.5744 -  ball :: "'A::type metric => 'A::type * hollight.real => 'A::type => bool" 
  1.5745 +  ball :: "'A metric => 'A * hollight.real => 'A => bool" 
  1.5746    "ball ==
  1.5747  %(u::'A::type metric) (ua::'A::type * hollight.real) y::'A::type.
  1.5748     real_lt (mdist u (fst ua, y)) (snd ua)"
  1.5749 @@ -10091,17 +10390,17 @@
  1.5750    by (import hollight DEF_ball)
  1.5751  
  1.5752  lemma BALL_OPEN: "ALL (m::'A::type metric) (x::'A::type) e::hollight.real.
  1.5753 -   real_lt (real_of_num (0::nat)) e --> open (mtop m) (ball m (x, e))"
  1.5754 +   real_lt (real_of_num 0) e --> open (mtop m) (ball m (x, e))"
  1.5755    by (import hollight BALL_OPEN)
  1.5756  
  1.5757  lemma BALL_NEIGH: "ALL (m::'A::type metric) (x::'A::type) e::hollight.real.
  1.5758 -   real_lt (real_of_num (0::nat)) e --> neigh (mtop m) (ball m (x, e), x)"
  1.5759 +   real_lt (real_of_num 0) e --> neigh (mtop m) (ball m (x, e), x)"
  1.5760    by (import hollight BALL_NEIGH)
  1.5761  
  1.5762  lemma MTOP_LIMPT: "ALL (m::'A::type metric) (x::'A::type) S::'A::type => bool.
  1.5763     limpt (mtop m) x S =
  1.5764     (ALL e::hollight.real.
  1.5765 -       real_lt (real_of_num (0::nat)) e -->
  1.5766 +       real_lt (real_of_num 0) e -->
  1.5767         (EX y::'A::type. x ~= y & S y & real_lt (mdist m (x, y)) e))"
  1.5768    by (import hollight MTOP_LIMPT)
  1.5769  
  1.5770 @@ -10142,19 +10441,19 @@
  1.5771    by (import hollight MR1_SUB)
  1.5772  
  1.5773  lemma MR1_ADD_LE: "ALL (x::hollight.real) d::hollight.real.
  1.5774 -   real_le (real_of_num (0::nat)) d --> mdist mr1 (x, real_add x d) = d"
  1.5775 +   real_le (real_of_num 0) d --> mdist mr1 (x, real_add x d) = d"
  1.5776    by (import hollight MR1_ADD_LE)
  1.5777  
  1.5778  lemma MR1_SUB_LE: "ALL (x::hollight.real) d::hollight.real.
  1.5779 -   real_le (real_of_num (0::nat)) d --> mdist mr1 (x, real_sub x d) = d"
  1.5780 +   real_le (real_of_num 0) d --> mdist mr1 (x, real_sub x d) = d"
  1.5781    by (import hollight MR1_SUB_LE)
  1.5782  
  1.5783  lemma MR1_ADD_LT: "ALL (x::hollight.real) d::hollight.real.
  1.5784 -   real_lt (real_of_num (0::nat)) d --> mdist mr1 (x, real_add x d) = d"
  1.5785 +   real_lt (real_of_num 0) d --> mdist mr1 (x, real_add x d) = d"
  1.5786    by (import hollight MR1_ADD_LT)
  1.5787  
  1.5788  lemma MR1_SUB_LT: "ALL (x::hollight.real) d::hollight.real.
  1.5789 -   real_lt (real_of_num (0::nat)) d --> mdist mr1 (x, real_sub x d) = d"
  1.5790 +   real_lt (real_of_num 0) d --> mdist mr1 (x, real_sub x d) = d"
  1.5791    by (import hollight MR1_SUB_LT)
  1.5792  
  1.5793  lemma MR1_BETWEEN1: "ALL (x::hollight.real) (y::hollight.real) z::hollight.real.
  1.5794 @@ -10165,7 +10464,7 @@
  1.5795    by (import hollight MR1_LIMPT)
  1.5796  
  1.5797  constdefs
  1.5798 -  dorder :: "('A::type => 'A::type => bool) => bool" 
  1.5799 +  dorder :: "('A => 'A => bool) => bool" 
  1.5800    "dorder ==
  1.5801  %u::'A::type => 'A::type => bool.
  1.5802     ALL (x::'A::type) y::'A::type.
  1.5803 @@ -10180,8 +10479,7 @@
  1.5804    by (import hollight DEF_dorder)
  1.5805  
  1.5806  constdefs
  1.5807 -  tends :: "('B::type => 'A::type)
  1.5808 -=> 'A::type => 'A::type topology * ('B::type => 'B::type => bool) => bool" 
  1.5809 +  tends :: "('B => 'A) => 'A => 'A topology * ('B => 'B => bool) => bool" 
  1.5810    "tends ==
  1.5811  %(u::'B::type => 'A::type) (ua::'A::type)
  1.5812     ub::'A::type topology * ('B::type => 'B::type => bool).
  1.5813 @@ -10200,8 +10498,7 @@
  1.5814    by (import hollight DEF_tends)
  1.5815  
  1.5816  constdefs
  1.5817 -  bounded :: "'A::type metric * ('B::type => 'B::type => bool)
  1.5818 -=> ('B::type => 'A::type) => bool" 
  1.5819 +  bounded :: "'A metric * ('B => 'B => bool) => ('B => 'A) => bool" 
  1.5820    "bounded ==
  1.5821  %(u::'A::type metric * ('B::type => 'B::type => bool))
  1.5822     ua::'B::type => 'A::type.
  1.5823 @@ -10218,15 +10515,15 @@
  1.5824    by (import hollight DEF_bounded)
  1.5825  
  1.5826  constdefs
  1.5827 -  tendsto :: "'A::type metric * 'A::type => 'A::type => 'A::type => bool" 
  1.5828 +  tendsto :: "'A metric * 'A => 'A => 'A => bool" 
  1.5829    "tendsto ==
  1.5830  %(u::'A::type metric * 'A::type) (ua::'A::type) ub::'A::type.
  1.5831 -   real_lt (real_of_num (0::nat)) (mdist (fst u) (snd u, ua)) &
  1.5832 +   real_lt (real_of_num 0) (mdist (fst u) (snd u, ua)) &
  1.5833     real_le (mdist (fst u) (snd u, ua)) (mdist (fst u) (snd u, ub))"
  1.5834  
  1.5835  lemma DEF_tendsto: "tendsto =
  1.5836  (%(u::'A::type metric * 'A::type) (ua::'A::type) ub::'A::type.
  1.5837 -    real_lt (real_of_num (0::nat)) (mdist (fst u) (snd u, ua)) &
  1.5838 +    real_lt (real_of_num 0) (mdist (fst u) (snd u, ua)) &
  1.5839      real_le (mdist (fst u) (snd u, ua)) (mdist (fst u) (snd u, ub)))"
  1.5840    by (import hollight DEF_tendsto)
  1.5841  
  1.5842 @@ -10248,7 +10545,7 @@
  1.5843     (x::'B::type => 'A::type) x0::'A::type.
  1.5844     tends x x0 (mtop d, g) =
  1.5845     (ALL e::hollight.real.
  1.5846 -       real_lt (real_of_num (0::nat)) e -->
  1.5847 +       real_lt (real_of_num 0) e -->
  1.5848         (EX n::'B::type.
  1.5849             g n n &
  1.5850             (ALL m::'B::type. g m n --> real_lt (mdist d (x m, x0)) e)))"
  1.5851 @@ -10264,7 +10561,7 @@
  1.5852  lemma SEQ_TENDS: "ALL (d::'A::type metric) (x::nat => 'A::type) x0::'A::type.
  1.5853     tends x x0 (mtop d, >=) =
  1.5854     (ALL xa::hollight.real.
  1.5855 -       real_lt (real_of_num (0::nat)) xa -->
  1.5856 +       real_lt (real_of_num 0) xa -->
  1.5857         (EX xb::nat.
  1.5858             ALL xc::nat. >= xc xb --> real_lt (mdist d (x xc, x0)) xa))"
  1.5859    by (import hollight SEQ_TENDS)
  1.5860 @@ -10274,11 +10571,11 @@
  1.5861     limpt (mtop m1) x0 re_universe -->
  1.5862     tends f y0 (mtop m2, tendsto (m1, x0)) =
  1.5863     (ALL e::hollight.real.
  1.5864 -       real_lt (real_of_num (0::nat)) e -->
  1.5865 +       real_lt (real_of_num 0) e -->
  1.5866         (EX d::hollight.real.
  1.5867 -           real_lt (real_of_num (0::nat)) d &
  1.5868 +           real_lt (real_of_num 0) d &
  1.5869             (ALL x::'A::type.
  1.5870 -               real_lt (real_of_num (0::nat)) (mdist m1 (x, x0)) &
  1.5871 +               real_lt (real_of_num 0) (mdist m1 (x, x0)) &
  1.5872                 real_le (mdist m1 (x, x0)) d -->
  1.5873                 real_lt (mdist m2 (f x, y0)) e)))"
  1.5874    by (import hollight LIM_TENDS)
  1.5875 @@ -10288,11 +10585,11 @@
  1.5876     limpt (mtop m1) x0 re_universe -->
  1.5877     tends f y0 (mtop m2, tendsto (m1, x0)) =
  1.5878     (ALL e::hollight.real.
  1.5879 -       real_lt (real_of_num (0::nat)) e -->
  1.5880 +       real_lt (real_of_num 0) e -->
  1.5881         (EX d::hollight.real.
  1.5882 -           real_lt (real_of_num (0::nat)) d &
  1.5883 +           real_lt (real_of_num 0) d &
  1.5884             (ALL x::'A::type.
  1.5885 -               real_lt (real_of_num (0::nat)) (mdist m1 (x, x0)) &
  1.5886 +               real_lt (real_of_num 0) (mdist m1 (x, x0)) &
  1.5887                 real_lt (mdist m1 (x, x0)) d -->
  1.5888                 real_lt (mdist m2 (f x, y0)) e)))"
  1.5889    by (import hollight LIM_TENDS2)
  1.5890 @@ -10306,8 +10603,7 @@
  1.5891  lemma NET_NULL: "ALL (g::'A::type => 'A::type => bool) (x::'A::type => hollight.real)
  1.5892     x0::hollight.real.
  1.5893     tends x x0 (mtop mr1, g) =
  1.5894 -   tends (%n::'A::type. real_sub (x n) x0) (real_of_num (0::nat))
  1.5895 -    (mtop mr1, g)"
  1.5896 +   tends (%n::'A::type. real_sub (x n) x0) (real_of_num 0) (mtop mr1, g)"
  1.5897    by (import hollight NET_NULL)
  1.5898  
  1.5899  lemma NET_CONV_BOUNDED: "ALL (g::'A::type => 'A::type => bool) (x::'A::type => hollight.real)
  1.5900 @@ -10316,39 +10612,38 @@
  1.5901  
  1.5902  lemma NET_CONV_NZ: "ALL (g::'A::type => 'A::type => bool) (x::'A::type => hollight.real)
  1.5903     x0::hollight.real.
  1.5904 -   tends x x0 (mtop mr1, g) & x0 ~= real_of_num (0::nat) -->
  1.5905 +   tends x x0 (mtop mr1, g) & x0 ~= real_of_num 0 -->
  1.5906     (EX N::'A::type.
  1.5907 -       g N N & (ALL n::'A::type. g n N --> x n ~= real_of_num (0::nat)))"
  1.5908 +       g N N & (ALL n::'A::type. g n N --> x n ~= real_of_num 0))"
  1.5909    by (import hollight NET_CONV_NZ)
  1.5910  
  1.5911  lemma NET_CONV_IBOUNDED: "ALL (g::'A::type => 'A::type => bool) (x::'A::type => hollight.real)
  1.5912     x0::hollight.real.
  1.5913 -   tends x x0 (mtop mr1, g) & x0 ~= real_of_num (0::nat) -->
  1.5914 +   tends x x0 (mtop mr1, g) & x0 ~= real_of_num 0 -->
  1.5915     bounded (mr1, g) (%n::'A::type. real_inv (x n))"
  1.5916    by (import hollight NET_CONV_IBOUNDED)
  1.5917  
  1.5918  lemma NET_NULL_ADD: "ALL g::'A::type => 'A::type => bool.
  1.5919     dorder g -->
  1.5920     (ALL (x::'A::type => hollight.real) y::'A::type => hollight.real.
  1.5921 -       tends x (real_of_num (0::nat)) (mtop mr1, g) &
  1.5922 -       tends y (real_of_num (0::nat)) (mtop mr1, g) -->
  1.5923 -       tends (%n::'A::type. real_add (x n) (y n)) (real_of_num (0::nat))
  1.5924 +       tends x (real_of_num 0) (mtop mr1, g) &
  1.5925 +       tends y (real_of_num 0) (mtop mr1, g) -->
  1.5926 +       tends (%n::'A::type. real_add (x n) (y n)) (real_of_num 0)
  1.5927          (mtop mr1, g))"
  1.5928    by (import hollight NET_NULL_ADD)
  1.5929  
  1.5930  lemma NET_NULL_MUL: "ALL g::'A::type => 'A::type => bool.
  1.5931     dorder g -->
  1.5932     (ALL (x::'A::type => hollight.real) y::'A::type => hollight.real.
  1.5933 -       bounded (mr1, g) x & tends y (real_of_num (0::nat)) (mtop mr1, g) -->
  1.5934 -       tends (%n::'A::type. real_mul (x n) (y n)) (real_of_num (0::nat))
  1.5935 +       bounded (mr1, g) x & tends y (real_of_num 0) (mtop mr1, g) -->
  1.5936 +       tends (%n::'A::type. real_mul (x n) (y n)) (real_of_num 0)
  1.5937          (mtop mr1, g))"
  1.5938    by (import hollight NET_NULL_MUL)
  1.5939  
  1.5940  lemma NET_NULL_CMUL: "ALL (g::'A::type => 'A::type => bool) (k::hollight.real)
  1.5941     x::'A::type => hollight.real.
  1.5942 -   tends x (real_of_num (0::nat)) (mtop mr1, g) -->
  1.5943 -   tends (%n::'A::type. real_mul k (x n)) (real_of_num (0::nat))
  1.5944 -    (mtop mr1, g)"
  1.5945 +   tends x (real_of_num 0) (mtop mr1, g) -->
  1.5946 +   tends (%n::'A::type. real_mul k (x n)) (real_of_num 0) (mtop mr1, g)"
  1.5947    by (import hollight NET_NULL_CMUL)
  1.5948  
  1.5949  lemma NET_ADD: "ALL (g::'A::type => 'A::type => bool) (x::'A::type => hollight.real)
  1.5950 @@ -10383,7 +10678,7 @@
  1.5951  lemma NET_INV: "ALL (g::'A::type => 'A::type => bool) (x::'A::type => hollight.real)
  1.5952     x0::hollight.real.
  1.5953     dorder g -->
  1.5954 -   tends x x0 (mtop mr1, g) & x0 ~= real_of_num (0::nat) -->
  1.5955 +   tends x x0 (mtop mr1, g) & x0 ~= real_of_num 0 -->
  1.5956     tends (%n::'A::type. real_inv (x n)) (real_inv x0) (mtop mr1, g)"
  1.5957    by (import hollight NET_INV)
  1.5958  
  1.5959 @@ -10391,7 +10686,7 @@
  1.5960     (x0::hollight.real) (y::'A::type => hollight.real) y0::hollight.real.
  1.5961     dorder g -->
  1.5962     tends x x0 (mtop mr1, g) &
  1.5963 -   tends y y0 (mtop mr1, g) & y0 ~= real_of_num (0::nat) -->
  1.5964 +   tends y y0 (mtop mr1, g) & y0 ~= real_of_num 0 -->
  1.5965     tends (%xa::'A::type. real_div (x xa) (y xa)) (real_div x0 y0)
  1.5966      (mtop mr1, g)"
  1.5967    by (import hollight NET_DIV)
  1.5968 @@ -10403,7 +10698,7 @@
  1.5969  
  1.5970  lemma NET_SUM: "ALL g::'q_71813::type => 'q_71813::type => bool.
  1.5971     dorder g &
  1.5972 -   tends (%x::'q_71813::type. real_of_num (0::nat)) (real_of_num (0::nat))
  1.5973 +   tends (%x::'q_71813::type. real_of_num 0) (real_of_num 0)
  1.5974      (mtop mr1, g) -->
  1.5975     (ALL (x::nat) n::nat.
  1.5976         (ALL r::nat.
  1.5977 @@ -10436,7 +10731,7 @@
  1.5978  lemma SEQ: "ALL (x::nat => hollight.real) x0::hollight.real.
  1.5979     tends_num_real x x0 =
  1.5980     (ALL e::hollight.real.
  1.5981 -       real_lt (real_of_num (0::nat)) e -->
  1.5982 +       real_lt (real_of_num 0) e -->
  1.5983         (EX N::nat.
  1.5984             ALL n::nat. >= n N --> real_lt (real_abs (real_sub (x n) x0)) e))"
  1.5985    by (import hollight SEQ)
  1.5986 @@ -10462,7 +10757,7 @@
  1.5987    by (import hollight SEQ_NEG)
  1.5988  
  1.5989  lemma SEQ_INV: "ALL (x::nat => hollight.real) x0::hollight.real.
  1.5990 -   tends_num_real x x0 & x0 ~= real_of_num (0::nat) -->
  1.5991 +   tends_num_real x x0 & x0 ~= real_of_num 0 -->
  1.5992     tends_num_real (%n::nat. real_inv (x n)) (real_inv x0)"
  1.5993    by (import hollight SEQ_INV)
  1.5994  
  1.5995 @@ -10474,8 +10769,7 @@
  1.5996  
  1.5997  lemma SEQ_DIV: "ALL (x::nat => hollight.real) (x0::hollight.real) (y::nat => hollight.real)
  1.5998     y0::hollight.real.
  1.5999 -   tends_num_real x x0 &
  1.6000 -   tends_num_real y y0 & y0 ~= real_of_num (0::nat) -->
  1.6001 +   tends_num_real x x0 & tends_num_real y y0 & y0 ~= real_of_num 0 -->
  1.6002     tends_num_real (%n::nat. real_div (x n) (y n)) (real_div x0 y0)"
  1.6003    by (import hollight SEQ_DIV)
  1.6004  
  1.6005 @@ -10485,7 +10779,7 @@
  1.6006  
  1.6007  lemma SEQ_NULL: "ALL (s::nat => hollight.real) l::hollight.real.
  1.6008     tends_num_real s l =
  1.6009 -   tends_num_real (%n::nat. real_sub (s n) l) (real_of_num (0::nat))"
  1.6010 +   tends_num_real (%n::nat. real_sub (s n) l) (real_of_num 0)"
  1.6011    by (import hollight SEQ_NULL)
  1.6012  
  1.6013  lemma SEQ_SUM: "ALL (f::nat => nat => hollight.real) (l::nat => hollight.real) (m::nat)
  1.6014 @@ -10512,7 +10806,7 @@
  1.6015    "cauchy ==
  1.6016  %u::nat => hollight.real.
  1.6017     ALL e::hollight.real.
  1.6018 -      real_lt (real_of_num (0::nat)) e -->
  1.6019 +      real_lt (real_of_num 0) e -->
  1.6020        (EX N::nat.
  1.6021            ALL (m::nat) n::nat.
  1.6022               >= m N & >= n N -->
  1.6023 @@ -10521,7 +10815,7 @@
  1.6024  lemma DEF_cauchy: "cauchy =
  1.6025  (%u::nat => hollight.real.
  1.6026      ALL e::hollight.real.
  1.6027 -       real_lt (real_of_num (0::nat)) e -->
  1.6028 +       real_lt (real_of_num 0) e -->
  1.6029         (EX N::nat.
  1.6030             ALL (m::nat) n::nat.
  1.6031                >= m N & >= n N -->
  1.6032 @@ -10630,11 +10924,11 @@
  1.6033    by (import hollight SEQ_LE)
  1.6034  
  1.6035  lemma SEQ_LE_0: "ALL (x::nat => hollight.real) xa::nat => hollight.real.
  1.6036 -   tends_num_real x (real_of_num (0::nat)) &
  1.6037 +   tends_num_real x (real_of_num 0) &
  1.6038     (EX xb::nat.
  1.6039         ALL xc::nat.
  1.6040            >= xc xb --> real_le (real_abs (xa xc)) (real_abs (x xc))) -->
  1.6041 -   tends_num_real xa (real_of_num (0::nat))"
  1.6042 +   tends_num_real xa (real_of_num 0)"
  1.6043    by (import hollight SEQ_LE_0)
  1.6044  
  1.6045  lemma SEQ_SUC: "ALL (f::nat => hollight.real) l::hollight.real.
  1.6046 @@ -10642,8 +10936,8 @@
  1.6047    by (import hollight SEQ_SUC)
  1.6048  
  1.6049  lemma SEQ_ABS: "ALL f::nat => hollight.real.
  1.6050 -   tends_num_real (%n::nat. real_abs (f n)) (real_of_num (0::nat)) =
  1.6051 -   tends_num_real f (real_of_num (0::nat))"
  1.6052 +   tends_num_real (%n::nat. real_abs (f n)) (real_of_num 0) =
  1.6053 +   tends_num_real f (real_of_num 0)"
  1.6054    by (import hollight SEQ_ABS)
  1.6055  
  1.6056  lemma SEQ_ABS_IMP: "ALL (f::nat => hollight.real) l::hollight.real.
  1.6057 @@ -10654,17 +10948,17 @@
  1.6058  lemma SEQ_INV0: "ALL f::nat => hollight.real.
  1.6059     (ALL y::hollight.real.
  1.6060         EX N::nat. ALL n::nat. >= n N --> hollight.real_gt (f n) y) -->
  1.6061 -   tends_num_real (%n::nat. real_inv (f n)) (real_of_num (0::nat))"
  1.6062 +   tends_num_real (%n::nat. real_inv (f n)) (real_of_num 0)"
  1.6063    by (import hollight SEQ_INV0)
  1.6064  
  1.6065  lemma SEQ_POWER_ABS: "ALL c::hollight.real.
  1.6066 -   real_lt (real_abs c) (real_of_num (NUMERAL_BIT1 (0::nat))) -->
  1.6067 -   tends_num_real (real_pow (real_abs c)) (real_of_num (0::nat))"
  1.6068 +   real_lt (real_abs c) (real_of_num (NUMERAL_BIT1 0)) -->
  1.6069 +   tends_num_real (real_pow (real_abs c)) (real_of_num 0)"
  1.6070    by (import hollight SEQ_POWER_ABS)
  1.6071  
  1.6072  lemma SEQ_POWER: "ALL c::hollight.real.
  1.6073 -   real_lt (real_abs c) (real_of_num (NUMERAL_BIT1 (0::nat))) -->
  1.6074 -   tends_num_real (real_pow c) (real_of_num (0::nat))"
  1.6075 +   real_lt (real_abs c) (real_of_num (NUMERAL_BIT1 0)) -->
  1.6076 +   tends_num_real (real_pow c) (real_of_num 0)"
  1.6077    by (import hollight SEQ_POWER)
  1.6078  
  1.6079  lemma NEST_LEMMA: "ALL (f::nat => hollight.real) g::nat => hollight.real.
  1.6080 @@ -10681,7 +10975,7 @@
  1.6081     (ALL n::nat. hollight.real_ge (f (Suc n)) (f n)) &
  1.6082     (ALL n::nat. real_le (g (Suc n)) (g n)) &
  1.6083     (ALL n::nat. real_le (f n) (g n)) &
  1.6084 -   tends_num_real (%n::nat. real_sub (f n) (g n)) (real_of_num (0::nat)) -->
  1.6085 +   tends_num_real (%n::nat. real_sub (f n) (g n)) (real_of_num 0) -->
  1.6086     (EX l::hollight.real.
  1.6087         ((ALL n::nat. real_le (f n) l) & tends_num_real f l) &
  1.6088         (ALL n::nat. real_le l (g n)) & tends_num_real g l)"
  1.6089 @@ -10692,7 +10986,7 @@
  1.6090         real_le a b & real_le b c & P (a, b) & P (b, c) --> P (a, c)) &
  1.6091     (ALL x::hollight.real.
  1.6092         EX d::hollight.real.
  1.6093 -          real_lt (real_of_num (0::nat)) d &
  1.6094 +          real_lt (real_of_num 0) d &
  1.6095            (ALL (a::hollight.real) b::hollight.real.
  1.6096                real_le a x & real_le x b & real_lt (real_sub b a) d -->
  1.6097                P (a, b))) -->
  1.6098 @@ -10701,11 +10995,9 @@
  1.6099  
  1.6100  constdefs
  1.6101    sums :: "(nat => hollight.real) => hollight.real => bool" 
  1.6102 -  "sums ==
  1.6103 -%u::nat => hollight.real. tends_num_real (%n::nat. psum (0::nat, n) u)"
  1.6104 -
  1.6105 -lemma DEF_sums: "sums =
  1.6106 -(%u::nat => hollight.real. tends_num_real (%n::nat. psum (0::nat, n) u))"
  1.6107 +  "sums == %u::nat => hollight.real. tends_num_real (%n::nat. psum (0, n) u)"
  1.6108 +
  1.6109 +lemma DEF_sums: "sums = (%u::nat => hollight.real. tends_num_real (%n::nat. psum (0, n) u))"
  1.6110    by (import hollight DEF_sums)
  1.6111  
  1.6112  constdefs
  1.6113 @@ -10736,25 +11028,21 @@
  1.6114    by (import hollight SER_UNIQ)
  1.6115  
  1.6116  lemma SER_0: "ALL (f::nat => hollight.real) n::nat.
  1.6117 -   (ALL m::nat. <= n m --> f m = real_of_num (0::nat)) -->
  1.6118 -   sums f (psum (0::nat, n) f)"
  1.6119 +   (ALL m::nat. <= n m --> f m = real_of_num 0) --> sums f (psum (0, n) f)"
  1.6120    by (import hollight SER_0)
  1.6121  
  1.6122  lemma SER_POS_LE: "ALL (f::nat => hollight.real) n::nat.
  1.6123 -   summable f &
  1.6124 -   (ALL m::nat. <= n m --> real_le (real_of_num (0::nat)) (f m)) -->
  1.6125 -   real_le (psum (0::nat, n) f) (suminf f)"
  1.6126 +   summable f & (ALL m::nat. <= n m --> real_le (real_of_num 0) (f m)) -->
  1.6127 +   real_le (psum (0, n) f) (suminf f)"
  1.6128    by (import hollight SER_POS_LE)
  1.6129  
  1.6130  lemma SER_POS_LT: "ALL (f::nat => hollight.real) n::nat.
  1.6131 -   summable f &
  1.6132 -   (ALL m::nat. <= n m --> real_lt (real_of_num (0::nat)) (f m)) -->
  1.6133 -   real_lt (psum (0::nat, n) f) (suminf f)"
  1.6134 +   summable f & (ALL m::nat. <= n m --> real_lt (real_of_num 0) (f m)) -->
  1.6135 +   real_lt (psum (0, n) f) (suminf f)"
  1.6136    by (import hollight SER_POS_LT)
  1.6137  
  1.6138  lemma SER_GROUP: "ALL (f::nat => hollight.real) k::nat.
  1.6139 -   summable f & < (0::nat) k -->
  1.6140 -   sums (%n::nat. psum (n * k, k) f) (suminf f)"
  1.6141 +   summable f & < 0 k --> sums (%n::nat. psum (n * k, k) f) (suminf f)"
  1.6142    by (import hollight SER_GROUP)
  1.6143  
  1.6144  lemma SER_PAIR: "ALL f::nat => hollight.real.
  1.6145 @@ -10762,8 +11050,7 @@
  1.6146     sums
  1.6147      (%n::nat.
  1.6148          psum
  1.6149 -         (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * n,
  1.6150 -          NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))
  1.6151 +         (NUMERAL_BIT0 (NUMERAL_BIT1 0) * n, NUMERAL_BIT0 (NUMERAL_BIT1 0))
  1.6152           f)
  1.6153      (suminf f)"
  1.6154    by (import hollight SER_PAIR)
  1.6155 @@ -10771,23 +11058,22 @@
  1.6156  lemma SER_OFFSET: "ALL f::nat => hollight.real.
  1.6157     summable f -->
  1.6158     (ALL k::nat.
  1.6159 -       sums (%n::nat. f (n + k)) (real_sub (suminf f) (psum (0::nat, k) f)))"
  1.6160 +       sums (%n::nat. f (n + k)) (real_sub (suminf f) (psum (0, k) f)))"
  1.6161    by (import hollight SER_OFFSET)
  1.6162  
  1.6163  lemma SER_OFFSET_REV: "ALL (f::nat => hollight.real) k::nat.
  1.6164     summable (%n::nat. f (n + k)) -->
  1.6165 -   sums f (real_add (psum (0::nat, k) f) (suminf (%n::nat. f (n + k))))"
  1.6166 +   sums f (real_add (psum (0, k) f) (suminf (%n::nat. f (n + k))))"
  1.6167    by (import hollight SER_OFFSET_REV)
  1.6168  
  1.6169  lemma SER_POS_LT_PAIR: "ALL (f::nat => hollight.real) n::nat.
  1.6170     summable f &
  1.6171     (ALL d::nat.
  1.6172 -       real_lt (real_of_num (0::nat))
  1.6173 -        (real_add (f (n + NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * d))
  1.6174 +       real_lt (real_of_num 0)
  1.6175 +        (real_add (f (n + NUMERAL_BIT0 (NUMERAL_BIT1 0) * d))
  1.6176            (f (n +
  1.6177 -              (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * d +
  1.6178 -               NUMERAL_BIT1 (0::nat)))))) -->
  1.6179 -   real_lt (psum (0::nat, n) f) (suminf f)"
  1.6180 +              (NUMERAL_BIT0 (NUMERAL_BIT1 0) * d + NUMERAL_BIT1 0))))) -->
  1.6181 +   real_lt (psum (0, n) f) (suminf f)"
  1.6182    by (import hollight SER_POS_LT_PAIR)
  1.6183  
  1.6184  lemma SER_ADD: "ALL (x::nat => hollight.real) (x0::hollight.real) (y::nat => hollight.real)
  1.6185 @@ -10817,14 +11103,13 @@
  1.6186  lemma SER_CAUCHY: "ALL f::nat => hollight.real.
  1.6187     summable f =
  1.6188     (ALL e::hollight.real.
  1.6189 -       real_lt (real_of_num (0::nat)) e -->
  1.6190 +       real_lt (real_of_num 0) e -->
  1.6191         (EX N::nat.
  1.6192             ALL (m::nat) n::nat.
  1.6193                >= m N --> real_lt (real_abs (psum (m, n) f)) e))"
  1.6194    by (import hollight SER_CAUCHY)
  1.6195  
  1.6196 -lemma SER_ZERO: "ALL f::nat => hollight.real.
  1.6197 -   summable f --> tends_num_real f (real_of_num (0::nat))"
  1.6198 +lemma SER_ZERO: "ALL f::nat => hollight.real. summable f --> tends_num_real f (real_of_num 0)"
  1.6199    by (import hollight SER_ZERO)
  1.6200  
  1.6201  lemma SER_COMPAR: "ALL (f::nat => hollight.real) g::nat => hollight.real.
  1.6202 @@ -10859,28 +11144,25 @@
  1.6203    by (import hollight SER_ABS)
  1.6204  
  1.6205  lemma GP_FINITE: "ALL x::hollight.real.
  1.6206 -   x ~= real_of_num (NUMERAL_BIT1 (0::nat)) -->
  1.6207 +   x ~= real_of_num (NUMERAL_BIT1 0) -->
  1.6208     (ALL n::nat.
  1.6209 -       psum (0::nat, n) (real_pow x) =
  1.6210 -       real_div
  1.6211 -        (real_sub (real_pow x n) (real_of_num (NUMERAL_BIT1 (0::nat))))
  1.6212 -        (real_sub x (real_of_num (NUMERAL_BIT1 (0::nat)))))"
  1.6213 +       psum (0, n) (real_pow x) =
  1.6214 +       real_div (real_sub (real_pow x n) (real_of_num (NUMERAL_BIT1 0)))
  1.6215 +        (real_sub x (real_of_num (NUMERAL_BIT1 0))))"
  1.6216    by (import hollight GP_FINITE)
  1.6217  
  1.6218  lemma GP: "ALL x::hollight.real.
  1.6219 -   real_lt (real_abs x) (real_of_num (NUMERAL_BIT1 (0::nat))) -->
  1.6220 -   sums (real_pow x)
  1.6221 -    (real_inv (real_sub (real_of_num (NUMERAL_BIT1 (0::nat))) x))"
  1.6222 +   real_lt (real_abs x) (real_of_num (NUMERAL_BIT1 0)) -->
  1.6223 +   sums (real_pow x) (real_inv (real_sub (real_of_num (NUMERAL_BIT1 0)) x))"
  1.6224    by (import hollight GP)
  1.6225  
  1.6226  lemma ABS_NEG_LEMMA: "ALL (c::hollight.real) (x::hollight.real) y::hollight.real.
  1.6227 -   real_le c (real_of_num (0::nat)) -->
  1.6228 -   real_le (real_abs x) (real_mul c (real_abs y)) -->
  1.6229 -   x = real_of_num (0::nat)"
  1.6230 +   real_le c (real_of_num 0) -->
  1.6231 +   real_le (real_abs x) (real_mul c (real_abs y)) --> x = real_of_num 0"
  1.6232    by (import hollight ABS_NEG_LEMMA)
  1.6233  
  1.6234  lemma SER_RATIO: "ALL (f::nat => hollight.real) (c::hollight.real) N::nat.
  1.6235 -   real_lt c (real_of_num (NUMERAL_BIT1 (0::nat))) &
  1.6236 +   real_lt c (real_of_num (NUMERAL_BIT1 0)) &
  1.6237     (ALL n::nat.
  1.6238         >= n N -->
  1.6239         real_le (real_abs (f (Suc n))) (real_mul c (real_abs (f n)))) -->
  1.6240 @@ -10889,7 +11171,7 @@
  1.6241  
  1.6242  lemma SEQ_TRUNCATION: "ALL (f::nat => hollight.real) (l::hollight.real) (n::nat) b::hollight.real.
  1.6243     sums f l & (ALL m::nat. real_le (real_abs (psum (n, m) f)) b) -->
  1.6244 -   real_le (real_abs (real_sub l (psum (0::nat, n) f))) b"
  1.6245 +   real_le (real_abs (real_sub l (psum (0, n) f))) b"
  1.6246    by (import hollight SEQ_TRUNCATION)
  1.6247  
  1.6248  constdefs
  1.6249 @@ -10907,11 +11189,11 @@
  1.6250     x0::hollight.real.
  1.6251     tends_real_real f y0 x0 =
  1.6252     (ALL e::hollight.real.
  1.6253 -       real_lt (real_of_num (0::nat)) e -->
  1.6254 +       real_lt (real_of_num 0) e -->
  1.6255         (EX d::hollight.real.
  1.6256 -           real_lt (real_of_num (0::nat)) d &
  1.6257 +           real_lt (real_of_num 0) d &
  1.6258             (ALL x::hollight.real.
  1.6259 -               real_lt (real_of_num (0::nat)) (real_abs (real_sub x x0)) &
  1.6260 +               real_lt (real_of_num 0) (real_abs (real_sub x x0)) &
  1.6261                 real_lt (real_abs (real_sub x x0)) d -->
  1.6262                 real_lt (real_abs (real_sub (f x) y0)) e)))"
  1.6263    by (import hollight LIM)
  1.6264 @@ -10939,7 +11221,7 @@
  1.6265    by (import hollight LIM_NEG)
  1.6266  
  1.6267  lemma LIM_INV: "ALL (f::hollight.real => hollight.real) l::hollight.real.
  1.6268 -   tends_real_real f l (x::hollight.real) & l ~= real_of_num (0::nat) -->
  1.6269 +   tends_real_real f l (x::hollight.real) & l ~= real_of_num 0 -->
  1.6270     tends_real_real (%x::hollight.real. real_inv (f x)) (real_inv l) x"
  1.6271    by (import hollight LIM_INV)
  1.6272  
  1.6273 @@ -10953,15 +11235,14 @@
  1.6274  lemma LIM_DIV: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
  1.6275     (l::hollight.real) m::hollight.real.
  1.6276     tends_real_real f l (x::hollight.real) &
  1.6277 -   tends_real_real g m x & m ~= real_of_num (0::nat) -->
  1.6278 +   tends_real_real g m x & m ~= real_of_num 0 -->
  1.6279     tends_real_real (%x::hollight.real. real_div (f x) (g x)) (real_div l m)
  1.6280      x"
  1.6281    by (import hollight LIM_DIV)
  1.6282  
  1.6283  lemma LIM_NULL: "ALL (f::hollight.real => hollight.real) (l::hollight.real) x::hollight.real.
  1.6284     tends_real_real f l x =
  1.6285 -   tends_real_real (%x::hollight.real. real_sub (f x) l)
  1.6286 -    (real_of_num (0::nat)) x"
  1.6287 +   tends_real_real (%x::hollight.real. real_sub (f x) l) (real_of_num 0) x"
  1.6288    by (import hollight LIM_NULL)
  1.6289  
  1.6290  lemma LIM_SUM: "ALL (f::nat => hollight.real => hollight.real) (l::nat => hollight.real)
  1.6291 @@ -10988,8 +11269,8 @@
  1.6292  
  1.6293  lemma LIM_TRANSFORM: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
  1.6294     (x0::hollight.real) l::hollight.real.
  1.6295 -   tends_real_real (%x::hollight.real. real_sub (f x) (g x))
  1.6296 -    (real_of_num (0::nat)) x0 &
  1.6297 +   tends_real_real (%x::hollight.real. real_sub (f x) (g x)) (real_of_num 0)
  1.6298 +    x0 &
  1.6299     tends_real_real g l x0 -->
  1.6300     tends_real_real f l x0"
  1.6301    by (import hollight LIM_TRANSFORM)
  1.6302 @@ -11000,13 +11281,13 @@
  1.6303  %(u::hollight.real => hollight.real) (ua::hollight.real) ub::hollight.real.
  1.6304     tends_real_real
  1.6305      (%h::hollight.real. real_div (real_sub (u (real_add ub h)) (u ub)) h) ua
  1.6306 -    (real_of_num (0::nat))"
  1.6307 +    (real_of_num 0)"
  1.6308  
  1.6309  lemma DEF_diffl: "diffl =
  1.6310  (%(u::hollight.real => hollight.real) (ua::hollight.real) ub::hollight.real.
  1.6311      tends_real_real
  1.6312       (%h::hollight.real. real_div (real_sub (u (real_add ub h)) (u ub)) h)
  1.6313 -     ua (real_of_num (0::nat)))"
  1.6314 +     ua (real_of_num 0))"
  1.6315    by (import hollight DEF_diffl)
  1.6316  
  1.6317  constdefs
  1.6318 @@ -11014,12 +11295,12 @@
  1.6319    "contl ==
  1.6320  %(u::hollight.real => hollight.real) ua::hollight.real.
  1.6321     tends_real_real (%h::hollight.real. u (real_add ua h)) (u ua)
  1.6322 -    (real_of_num (0::nat))"
  1.6323 +    (real_of_num 0)"
  1.6324  
  1.6325  lemma DEF_contl: "contl =
  1.6326  (%(u::hollight.real => hollight.real) ua::hollight.real.
  1.6327      tends_real_real (%h::hollight.real. u (real_add ua h)) (u ua)
  1.6328 -     (real_of_num (0::nat)))"
  1.6329 +     (real_of_num 0))"
  1.6330    by (import hollight DEF_contl)
  1.6331  
  1.6332  constdefs
  1.6333 @@ -11069,8 +11350,7 @@
  1.6334    by (import hollight CONT_NEG)
  1.6335  
  1.6336  lemma CONT_INV: "ALL x::hollight.real.
  1.6337 -   contl (f::hollight.real => hollight.real) x &
  1.6338 -   f x ~= real_of_num (0::nat) -->
  1.6339 +   contl (f::hollight.real => hollight.real) x & f x ~= real_of_num 0 -->
  1.6340     contl (%x::hollight.real. real_inv (f x)) x"
  1.6341    by (import hollight CONT_INV)
  1.6342  
  1.6343 @@ -11082,8 +11362,7 @@
  1.6344  
  1.6345  lemma CONT_DIV: "ALL x::hollight.real.
  1.6346     contl (f::hollight.real => hollight.real) x &
  1.6347 -   contl (g::hollight.real => hollight.real) x &
  1.6348 -   g x ~= real_of_num (0::nat) -->
  1.6349 +   contl (g::hollight.real => hollight.real) x & g x ~= real_of_num 0 -->
  1.6350     contl (%x::hollight.real. real_div (f x) (g x)) x"
  1.6351    by (import hollight CONT_DIV)
  1.6352  
  1.6353 @@ -11108,8 +11387,7 @@
  1.6354     (EX x::hollight.real. real_le a x & real_le x b & f x = y)"
  1.6355    by (import hollight IVT2)
  1.6356  
  1.6357 -lemma DIFF_CONST: "ALL k::hollight.real.
  1.6358 -   All (diffl (%x::hollight.real. k) (real_of_num (0::nat)))"
  1.6359 +lemma DIFF_CONST: "ALL k::hollight.real. All (diffl (%x::hollight.real. k) (real_of_num 0))"
  1.6360    by (import hollight DIFF_CONST)
  1.6361  
  1.6362  lemma DIFF_ADD: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
  1.6363 @@ -11155,37 +11433,33 @@
  1.6364     diffl (%x::hollight.real. f (g x)) (real_mul l m) x"
  1.6365    by (import hollight DIFF_CHAIN)
  1.6366  
  1.6367 -lemma DIFF_X: "All (diffl (%x::hollight.real. x) (real_of_num (NUMERAL_BIT1 (0::nat))))"
  1.6368 +lemma DIFF_X: "All (diffl (%x::hollight.real. x) (real_of_num (NUMERAL_BIT1 0)))"
  1.6369    by (import hollight DIFF_X)
  1.6370  
  1.6371  lemma DIFF_POW: "ALL (n::nat) x::hollight.real.
  1.6372     diffl (%x::hollight.real. real_pow x n)
  1.6373 -    (real_mul (real_of_num n) (real_pow x (n - NUMERAL_BIT1 (0::nat)))) x"
  1.6374 +    (real_mul (real_of_num n) (real_pow x (n - NUMERAL_BIT1 0))) x"
  1.6375    by (import hollight DIFF_POW)
  1.6376  
  1.6377  lemma DIFF_XM1: "ALL x::hollight.real.
  1.6378 -   x ~= real_of_num (0::nat) -->
  1.6379 +   x ~= real_of_num 0 -->
  1.6380     diffl real_inv
  1.6381 -    (real_neg
  1.6382 -      (real_pow (real_inv x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.6383 -    x"
  1.6384 +    (real_neg (real_pow (real_inv x) (NUMERAL_BIT0 (NUMERAL_BIT1 0)))) x"
  1.6385    by (import hollight DIFF_XM1)
  1.6386  
  1.6387  lemma DIFF_INV: "ALL (f::hollight.real => hollight.real) (l::hollight.real) x::hollight.real.
  1.6388 -   diffl f l x & f x ~= real_of_num (0::nat) -->
  1.6389 +   diffl f l x & f x ~= real_of_num 0 -->
  1.6390     diffl (%x::hollight.real. real_inv (f x))
  1.6391 -    (real_neg
  1.6392 -      (real_div l (real_pow (f x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
  1.6393 +    (real_neg (real_div l (real_pow (f x) (NUMERAL_BIT0 (NUMERAL_BIT1 0)))))
  1.6394      x"
  1.6395    by (import hollight DIFF_INV)
  1.6396  
  1.6397  lemma DIFF_DIV: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
  1.6398     (l::hollight.real) m::hollight.real.
  1.6399 -   diffl f l (x::hollight.real) &
  1.6400 -   diffl g m x & g x ~= real_of_num (0::nat) -->
  1.6401 +   diffl f l (x::hollight.real) & diffl g m x & g x ~= real_of_num 0 -->
  1.6402     diffl (%x::hollight.real. real_div (f x) (g x))
  1.6403      (real_div (real_sub (real_mul l (g x)) (real_mul m (f x)))
  1.6404 -      (real_pow (g x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.6405 +      (real_pow (g x) (NUMERAL_BIT0 (NUMERAL_BIT1 0))))
  1.6406      x"
  1.6407    by (import hollight DIFF_DIV)
  1.6408  
  1.6409 @@ -11254,54 +11528,54 @@
  1.6410    by (import hollight CONT_ATTAINS_ALL)
  1.6411  
  1.6412  lemma DIFF_LINC: "ALL (f::hollight.real => hollight.real) (x::hollight.real) l::hollight.real.
  1.6413 -   diffl f l x & real_lt (real_of_num (0::nat)) l -->
  1.6414 +   diffl f l x & real_lt (real_of_num 0) l -->
  1.6415     (EX d::hollight.real.
  1.6416 -       real_lt (real_of_num (0::nat)) d &
  1.6417 +       real_lt (real_of_num 0) d &
  1.6418         (ALL h::hollight.real.
  1.6419 -           real_lt (real_of_num (0::nat)) h & real_lt h d -->
  1.6420 +           real_lt (real_of_num 0) h & real_lt h d -->
  1.6421             real_lt (f x) (f (real_add x h))))"
  1.6422    by (import hollight DIFF_LINC)
  1.6423  
  1.6424  lemma DIFF_LDEC: "ALL (f::hollight.real => hollight.real) (x::hollight.real) l::hollight.real.
  1.6425 -   diffl f l x & real_lt l (real_of_num (0::nat)) -->
  1.6426 +   diffl f l x & real_lt l (real_of_num 0) -->
  1.6427     (EX d::hollight.real.
  1.6428 -       real_lt (real_of_num (0::nat)) d &
  1.6429 +       real_lt (real_of_num 0) d &
  1.6430         (ALL h::hollight.real.
  1.6431 -           real_lt (real_of_num (0::nat)) h & real_lt h d -->
  1.6432 +           real_lt (real_of_num 0) h & real_lt h d -->
  1.6433             real_lt (f x) (f (real_sub x h))))"
  1.6434    by (import hollight DIFF_LDEC)
  1.6435  
  1.6436  lemma DIFF_LMAX: "ALL (f::hollight.real => hollight.real) (x::hollight.real) l::hollight.real.
  1.6437     diffl f l x &
  1.6438     (EX d::hollight.real.
  1.6439 -       real_lt (real_of_num (0::nat)) d &
  1.6440 +       real_lt (real_of_num 0) d &
  1.6441         (ALL y::hollight.real.
  1.6442             real_lt (real_abs (real_sub x y)) d --> real_le (f y) (f x))) -->
  1.6443 -   l = real_of_num (0::nat)"
  1.6444 +   l = real_of_num 0"
  1.6445    by (import hollight DIFF_LMAX)
  1.6446  
  1.6447  lemma DIFF_LMIN: "ALL (f::hollight.real => hollight.real) (x::hollight.real) l::hollight.real.
  1.6448     diffl f l x &
  1.6449     (EX d::hollight.real.
  1.6450 -       real_lt (real_of_num (0::nat)) d &
  1.6451 +       real_lt (real_of_num 0) d &
  1.6452         (ALL y::hollight.real.
  1.6453             real_lt (real_abs (real_sub x y)) d --> real_le (f x) (f y))) -->
  1.6454 -   l = real_of_num (0::nat)"
  1.6455 +   l = real_of_num 0"
  1.6456    by (import hollight DIFF_LMIN)
  1.6457  
  1.6458  lemma DIFF_LCONST: "ALL (f::hollight.real => hollight.real) (x::hollight.real) l::hollight.real.
  1.6459     diffl f l x &
  1.6460     (EX d::hollight.real.
  1.6461 -       real_lt (real_of_num (0::nat)) d &
  1.6462 +       real_lt (real_of_num 0) d &
  1.6463         (ALL y::hollight.real.
  1.6464             real_lt (real_abs (real_sub x y)) d --> f y = f x)) -->
  1.6465 -   l = real_of_num (0::nat)"
  1.6466 +   l = real_of_num 0"
  1.6467    by (import hollight DIFF_LCONST)
  1.6468  
  1.6469  lemma INTERVAL_LEMMA_LT: "ALL (a::hollight.real) (b::hollight.real) x::hollight.real.
  1.6470     real_lt a x & real_lt x b -->
  1.6471     (EX xa::hollight.real.
  1.6472 -       real_lt (real_of_num (0::nat)) xa &
  1.6473 +       real_lt (real_of_num 0) xa &
  1.6474         (ALL xb::hollight.real.
  1.6475             real_lt (real_abs (real_sub x xb)) xa -->
  1.6476             real_lt a xb & real_lt xb b))"
  1.6477 @@ -11310,7 +11584,7 @@
  1.6478  lemma INTERVAL_LEMMA: "ALL (a::hollight.real) (b::hollight.real) x::hollight.real.
  1.6479     real_lt a x & real_lt x b -->
  1.6480     (EX xa::hollight.real.
  1.6481 -       real_lt (real_of_num (0::nat)) xa &
  1.6482 +       real_lt (real_of_num 0) xa &
  1.6483         (ALL y::hollight.real.
  1.6484             real_lt (real_abs (real_sub x y)) xa -->
  1.6485             real_le a y & real_le y b))"
  1.6486 @@ -11323,7 +11597,7 @@
  1.6487     (ALL x::hollight.real.
  1.6488         real_lt a x & real_lt x b --> differentiable f x) -->
  1.6489     (EX z::hollight.real.
  1.6490 -       real_lt a z & real_lt z b & diffl f (real_of_num (0::nat)) z)"
  1.6491 +       real_lt a z & real_lt z b & diffl f (real_of_num 0) z)"
  1.6492    by (import hollight ROLLE)
  1.6493  
  1.6494  lemma MVT_LEMMA: "ALL (f::hollight.real => hollight.real) (a::hollight.real) b::hollight.real.
  1.6495 @@ -11358,7 +11632,7 @@
  1.6496     real_lt a b &
  1.6497     (ALL x::hollight.real. real_le a x & real_le x b --> contl f x) &
  1.6498     (ALL x::hollight.real.
  1.6499 -       real_lt a x & real_lt x b --> diffl f (real_of_num (0::nat)) x) -->
  1.6500 +       real_lt a x & real_lt x b --> diffl f (real_of_num 0) x) -->
  1.6501     f b = f a"
  1.6502    by (import hollight DIFF_ISCONST_END)
  1.6503  
  1.6504 @@ -11366,19 +11640,19 @@
  1.6505     real_lt a b &
  1.6506     (ALL x::hollight.real. real_le a x & real_le x b --> contl f x) &
  1.6507     (ALL x::hollight.real.
  1.6508 -       real_lt a x & real_lt x b --> diffl f (real_of_num (0::nat)) x) -->
  1.6509 +       real_lt a x & real_lt x b --> diffl f (real_of_num 0) x) -->
  1.6510     (ALL x::hollight.real. real_le a x & real_le x b --> f x = f a)"
  1.6511    by (import hollight DIFF_ISCONST)
  1.6512  
  1.6513  lemma DIFF_ISCONST_END_SIMPLE: "ALL (f::hollight.real => hollight.real) (a::hollight.real) b::hollight.real.
  1.6514     real_lt a b &
  1.6515     (ALL x::hollight.real.
  1.6516 -       real_le a x & real_le x b --> diffl f (real_of_num (0::nat)) x) -->
  1.6517 +       real_le a x & real_le x b --> diffl f (real_of_num 0) x) -->
  1.6518     f b = f a"
  1.6519    by (import hollight DIFF_ISCONST_END_SIMPLE)
  1.6520  
  1.6521  lemma DIFF_ISCONST_ALL: "ALL (x::hollight.real => hollight.real) (xa::hollight.real)
  1.6522 -   xb::hollight.real. All (diffl x (real_of_num (0::nat))) --> x xa = x xb"
  1.6523 +   xb::hollight.real. All (diffl x (real_of_num 0)) --> x xa = x xb"
  1.6524    by (import hollight DIFF_ISCONST_ALL)
  1.6525  
  1.6526  lemma INTERVAL_ABS: "ALL (x::hollight.real) (z::hollight.real) d::hollight.real.
  1.6527 @@ -11388,7 +11662,7 @@
  1.6528  
  1.6529  lemma CONT_INJ_LEMMA: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
  1.6530     (x::hollight.real) d::hollight.real.
  1.6531 -   real_lt (real_of_num (0::nat)) d &
  1.6532 +   real_lt (real_of_num 0) d &
  1.6533     (ALL z::hollight.real.
  1.6534         real_le (real_abs (real_sub z x)) d --> g (f z) = z) &
  1.6535     (ALL z::hollight.real.
  1.6536 @@ -11399,7 +11673,7 @@
  1.6537  
  1.6538  lemma CONT_INJ_LEMMA2: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
  1.6539     (x::hollight.real) d::hollight.real.
  1.6540 -   real_lt (real_of_num (0::nat)) d &
  1.6541 +   real_lt (real_of_num 0) d &
  1.6542     (ALL z::hollight.real.
  1.6543         real_le (real_abs (real_sub z x)) d --> g (f z) = z) &
  1.6544     (ALL z::hollight.real.
  1.6545 @@ -11410,13 +11684,13 @@
  1.6546  
  1.6547  lemma CONT_INJ_RANGE: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
  1.6548     (x::hollight.real) d::hollight.real.
  1.6549 -   real_lt (real_of_num (0::nat)) d &
  1.6550 +   real_lt (real_of_num 0) d &
  1.6551     (ALL z::hollight.real.
  1.6552         real_le (real_abs (real_sub z x)) d --> g (f z) = z) &
  1.6553     (ALL z::hollight.real.
  1.6554         real_le (real_abs (real_sub z x)) d --> contl f z) -->
  1.6555     (EX e::hollight.real.
  1.6556 -       real_lt (real_of_num (0::nat)) e &
  1.6557 +       real_lt (real_of_num 0) e &
  1.6558         (ALL y::hollight.real.
  1.6559             real_le (real_abs (real_sub y (f x))) e -->
  1.6560             (EX z::hollight.real.
  1.6561 @@ -11425,7 +11699,7 @@
  1.6562  
  1.6563  lemma CONT_INVERSE: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
  1.6564     (x::hollight.real) d::hollight.real.
  1.6565 -   real_lt (real_of_num (0::nat)) d &
  1.6566 +   real_lt (real_of_num 0) d &
  1.6567     (ALL z::hollight.real.
  1.6568         real_le (real_abs (real_sub z x)) d --> g (f z) = z) &
  1.6569     (ALL z::hollight.real.
  1.6570 @@ -11435,23 +11709,23 @@
  1.6571  
  1.6572  lemma DIFF_INVERSE: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
  1.6573     (l::hollight.real) (x::hollight.real) d::hollight.real.
  1.6574 -   real_lt (real_of_num (0::nat)) d &
  1.6575 +   real_lt (real_of_num 0) d &
  1.6576     (ALL z::hollight.real.
  1.6577         real_le (real_abs (real_sub z x)) d --> g (f z) = z) &
  1.6578     (ALL z::hollight.real.
  1.6579         real_le (real_abs (real_sub z x)) d --> contl f z) &
  1.6580 -   diffl f l x & l ~= real_of_num (0::nat) -->
  1.6581 +   diffl f l x & l ~= real_of_num 0 -->
  1.6582     diffl g (real_inv l) (f x)"
  1.6583    by (import hollight DIFF_INVERSE)
  1.6584  
  1.6585  lemma DIFF_INVERSE_LT: "ALL (f::hollight.real => hollight.real) (g::hollight.real => hollight.real)
  1.6586     (l::hollight.real) (x::hollight.real) d::hollight.real.
  1.6587 -   real_lt (real_of_num (0::nat)) d &
  1.6588 +   real_lt (real_of_num 0) d &
  1.6589     (ALL z::hollight.real.
  1.6590         real_lt (real_abs (real_sub z x)) d --> g (f z) = z) &
  1.6591     (ALL z::hollight.real.
  1.6592         real_lt (real_abs (real_sub z x)) d --> contl f z) &
  1.6593 -   diffl f l x & l ~= real_of_num (0::nat) -->
  1.6594 +   diffl f l x & l ~= real_of_num 0 -->
  1.6595     diffl g (real_inv l) (f x)"
  1.6596    by (import hollight DIFF_INVERSE_LT)
  1.6597  
  1.6598 @@ -11459,10 +11733,9 @@
  1.6599     (a::hollight.real) b::hollight.real.
  1.6600     real_le a b &
  1.6601     (ALL x::hollight.real. real_le a x & real_le x b --> diffl f (f' x) x) &
  1.6602 -   hollight.real_gt (f' a) (real_of_num (0::nat)) &
  1.6603 -   real_lt (f' b) (real_of_num (0::nat)) -->
  1.6604 -   (EX z::hollight.real.
  1.6605 -       real_lt a z & real_lt z b & f' z = real_of_num (0::nat))"
  1.6606 +   hollight.real_gt (f' a) (real_of_num 0) &
  1.6607 +   real_lt (f' b) (real_of_num 0) -->
  1.6608 +   (EX z::hollight.real. real_lt a z & real_lt z b & f' z = real_of_num 0)"
  1.6609    by (import hollight IVT_DERIVATIVE_0)
  1.6610  
  1.6611  lemma IVT_DERIVATIVE_POS: "ALL (x::hollight.real => hollight.real) (xa::hollight.real => hollight.real)
  1.6612 @@ -11486,9 +11759,9 @@
  1.6613  lemma SEQ_CONT_UNIFORM: "ALL (s::nat => hollight.real => hollight.real)
  1.6614     (f::hollight.real => hollight.real) x0::hollight.real.
  1.6615     (ALL e::hollight.real.
  1.6616 -       real_lt (real_of_num (0::nat)) e -->
  1.6617 +       real_lt (real_of_num 0) e -->
  1.6618         (EX (N::nat) d::hollight.real.
  1.6619 -           real_lt (real_of_num (0::nat)) d &
  1.6620 +           real_lt (real_of_num 0) d &
  1.6621             (ALL (x::hollight.real) n::nat.
  1.6622                 real_lt (real_abs (real_sub x x0)) d & >= n N -->
  1.6623                 real_lt (real_abs (real_sub (s n x) (f x))) e))) &
  1.6624 @@ -11499,60 +11772,60 @@
  1.6625  lemma SER_COMPARA_UNIFORM: "ALL (s::hollight.real => nat => hollight.real) (x0::hollight.real)
  1.6626     g::nat => hollight.real.
  1.6627     (EX (N::nat) d::hollight.real.
  1.6628 -       real_lt (real_of_num (0::nat)) d &
  1.6629 +       real_lt (real_of_num 0) d &
  1.6630         (ALL (n::nat) x::hollight.real.
  1.6631             real_lt (real_abs (real_sub x x0)) d & >= n N -->
  1.6632             real_le (real_abs (s x n)) (g n))) &
  1.6633     summable g -->
  1.6634     (EX (f::hollight.real => hollight.real) d::hollight.real.
  1.6635 -       real_lt (real_of_num (0::nat)) d &
  1.6636 +       real_lt (real_of_num 0) d &
  1.6637         (ALL e::hollight.real.
  1.6638 -           real_lt (real_of_num (0::nat)) e -->
  1.6639 +           real_lt (real_of_num 0) e -->
  1.6640             (EX N::nat.
  1.6641                 ALL (x::hollight.real) n::nat.
  1.6642                    real_lt (real_abs (real_sub x x0)) d & >= n N -->
  1.6643 -                  real_lt
  1.6644 -                   (real_abs (real_sub (psum (0::nat, n) (s x)) (f x))) e)))"
  1.6645 +                  real_lt (real_abs (real_sub (psum (0, n) (s x)) (f x)))
  1.6646 +                   e)))"
  1.6647    by (import hollight SER_COMPARA_UNIFORM)
  1.6648  
  1.6649  lemma SER_COMPARA_UNIFORM_WEAK: "ALL (s::hollight.real => nat => hollight.real) (x0::hollight.real)
  1.6650     g::nat => hollight.real.
  1.6651     (EX (N::nat) d::hollight.real.
  1.6652 -       real_lt (real_of_num (0::nat)) d &
  1.6653 +       real_lt (real_of_num 0) d &
  1.6654         (ALL (n::nat) x::hollight.real.
  1.6655             real_lt (real_abs (real_sub x x0)) d & >= n N -->
  1.6656             real_le (real_abs (s x n)) (g n))) &
  1.6657     summable g -->
  1.6658     (EX f::hollight.real => hollight.real.
  1.6659         ALL e::hollight.real.
  1.6660 -          real_lt (real_of_num (0::nat)) e -->
  1.6661 +          real_lt (real_of_num 0) e -->
  1.6662            (EX (N::nat) d::hollight.real.
  1.6663 -              real_lt (real_of_num (0::nat)) d &
  1.6664 +              real_lt (real_of_num 0) d &
  1.6665                (ALL (x::hollight.real) n::nat.
  1.6666                    real_lt (real_abs (real_sub x x0)) d & >= n N -->
  1.6667 -                  real_lt
  1.6668 -                   (real_abs (real_sub (psum (0::nat, n) (s x)) (f x))) e)))"
  1.6669 +                  real_lt (real_abs (real_sub (psum (0, n) (s x)) (f x)))
  1.6670 +                   e)))"
  1.6671    by (import hollight SER_COMPARA_UNIFORM_WEAK)
  1.6672  
  1.6673  lemma POWDIFF_LEMMA: "ALL (n::nat) (x::hollight.real) y::hollight.real.
  1.6674 -   psum (0::nat, Suc n)
  1.6675 +   psum (0, Suc n)
  1.6676      (%p::nat. real_mul (real_pow x p) (real_pow y (Suc n - p))) =
  1.6677     real_mul y
  1.6678 -    (psum (0::nat, Suc n)
  1.6679 +    (psum (0, Suc n)
  1.6680        (%p::nat. real_mul (real_pow x p) (real_pow y (n - p))))"
  1.6681    by (import hollight POWDIFF_LEMMA)
  1.6682  
  1.6683  lemma POWDIFF: "ALL (n::nat) (x::hollight.real) y::hollight.real.
  1.6684     real_sub (real_pow x (Suc n)) (real_pow y (Suc n)) =
  1.6685     real_mul (real_sub x y)
  1.6686 -    (psum (0::nat, Suc n)
  1.6687 +    (psum (0, Suc n)
  1.6688        (%p::nat. real_mul (real_pow x p) (real_pow y (n - p))))"
  1.6689    by (import hollight POWDIFF)
  1.6690  
  1.6691  lemma POWREV: "ALL (n::nat) (x::hollight.real) y::hollight.real.
  1.6692 -   psum (0::nat, Suc n)
  1.6693 +   psum (0, Suc n)
  1.6694      (%xa::nat. real_mul (real_pow x xa) (real_pow y (n - xa))) =
  1.6695 -   psum (0::nat, Suc n)
  1.6696 +   psum (0, Suc n)
  1.6697      (%xa::nat. real_mul (real_pow x (n - xa)) (real_pow y xa))"
  1.6698    by (import hollight POWREV)
  1.6699  
  1.6700 @@ -11584,25 +11857,24 @@
  1.6701    by (import hollight DIFFS_NEG)
  1.6702  
  1.6703  lemma DIFFS_LEMMA: "ALL (n::nat) (c::nat => hollight.real) x::hollight.real.
  1.6704 -   psum (0::nat, n) (%n::nat. real_mul (diffs c n) (real_pow x n)) =
  1.6705 +   psum (0, n) (%n::nat. real_mul (diffs c n) (real_pow x n)) =
  1.6706     real_add
  1.6707 -    (psum (0::nat, n)
  1.6708 +    (psum (0, n)
  1.6709        (%n::nat.
  1.6710            real_mul (real_of_num n)
  1.6711 -           (real_mul (c n) (real_pow x (n - NUMERAL_BIT1 (0::nat))))))
  1.6712 +           (real_mul (c n) (real_pow x (n - NUMERAL_BIT1 0)))))
  1.6713      (real_mul (real_of_num n)
  1.6714 -      (real_mul (c n) (real_pow x (n - NUMERAL_BIT1 (0::nat)))))"
  1.6715 +      (real_mul (c n) (real_pow x (n - NUMERAL_BIT1 0))))"
  1.6716    by (import hollight DIFFS_LEMMA)
  1.6717  
  1.6718  lemma DIFFS_LEMMA2: "ALL (n::nat) (c::nat => hollight.real) x::hollight.real.
  1.6719 -   psum (0::nat, n)
  1.6720 +   psum (0, n)
  1.6721      (%n::nat.
  1.6722          real_mul (real_of_num n)
  1.6723 -         (real_mul (c n) (real_pow x (n - NUMERAL_BIT1 (0::nat))))) =
  1.6724 -   real_sub
  1.6725 -    (psum (0::nat, n) (%n::nat. real_mul (diffs c n) (real_pow x n)))
  1.6726 +         (real_mul (c n) (real_pow x (n - NUMERAL_BIT1 0)))) =
  1.6727 +   real_sub (psum (0, n) (%n::nat. real_mul (diffs c n) (real_pow x n)))
  1.6728      (real_mul (real_of_num n)
  1.6729 -      (real_mul (c n) (real_pow x (n - NUMERAL_BIT1 (0::nat)))))"
  1.6730 +      (real_mul (c n) (real_pow x (n - NUMERAL_BIT1 0))))"
  1.6731    by (import hollight DIFFS_LEMMA2)
  1.6732  
  1.6733  lemma DIFFS_EQUIV: "ALL (c::nat => hollight.real) x::hollight.real.
  1.6734 @@ -11610,73 +11882,70 @@
  1.6735     sums
  1.6736      (%n::nat.
  1.6737          real_mul (real_of_num n)
  1.6738 -         (real_mul (c n) (real_pow x (n - NUMERAL_BIT1 (0::nat)))))
  1.6739 +         (real_mul (c n) (real_pow x (n - NUMERAL_BIT1 0))))
  1.6740      (suminf (%n::nat. real_mul (diffs c n) (real_pow x n)))"
  1.6741    by (import hollight DIFFS_EQUIV)
  1.6742  
  1.6743  lemma TERMDIFF_LEMMA1: "ALL (m::nat) (z::hollight.real) h::hollight.real.
  1.6744 -   psum (0::nat, m)
  1.6745 +   psum (0, m)
  1.6746      (%p::nat.
  1.6747          real_sub (real_mul (real_pow (real_add z h) (m - p)) (real_pow z p))
  1.6748           (real_pow z m)) =
  1.6749 -   psum (0::nat, m)
  1.6750 +   psum (0, m)
  1.6751      (%p::nat.
  1.6752          real_mul (real_pow z p)
  1.6753           (real_sub (real_pow (real_add z h) (m - p)) (real_pow z (m - p))))"
  1.6754    by (import hollight TERMDIFF_LEMMA1)
  1.6755  
  1.6756  lemma TERMDIFF_LEMMA2: "ALL (z::hollight.real) h::hollight.real.
  1.6757 -   h ~= real_of_num (0::nat) -->
  1.6758 +   h ~= real_of_num 0 -->
  1.6759     real_sub
  1.6760      (real_div (real_sub (real_pow (real_add z h) (n::nat)) (real_pow z n))
  1.6761        h)
  1.6762 -    (real_mul (real_of_num n) (real_pow z (n - NUMERAL_BIT1 (0::nat)))) =
  1.6763 +    (real_mul (real_of_num n) (real_pow z (n - NUMERAL_BIT1 0))) =
  1.6764     real_mul h
  1.6765 -    (psum (0::nat, n - NUMERAL_BIT1 (0::nat))
  1.6766 +    (psum (0, n - NUMERAL_BIT1 0)
  1.6767        (%p::nat.
  1.6768            real_mul (real_pow z p)
  1.6769 -           (psum (0::nat, n - NUMERAL_BIT1 (0::nat) - p)
  1.6770 +           (psum (0, n - NUMERAL_BIT1 0 - p)
  1.6771               (%q::nat.
  1.6772                   real_mul (real_pow (real_add z h) q)
  1.6773                    (real_pow z
  1.6774 -                    (n - NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) - p - q))))))"
  1.6775 +                    (n - NUMERAL_BIT0 (NUMERAL_BIT1 0) - p - q))))))"
  1.6776    by (import hollight TERMDIFF_LEMMA2)
  1.6777  
  1.6778  lemma TERMDIFF_LEMMA3: "ALL (z::hollight.real) (h::hollight.real) (n::nat) K::hollight.real.
  1.6779 -   h ~= real_of_num (0::nat) &
  1.6780 +   h ~= real_of_num 0 &
  1.6781     real_le (real_abs z) K & real_le (real_abs (real_add z h)) K -->
  1.6782     real_le
  1.6783      (real_abs
  1.6784        (real_sub
  1.6785          (real_div (real_sub (real_pow (real_add z h) n) (real_pow z n)) h)
  1.6786 -        (real_mul (real_of_num n)
  1.6787 -          (real_pow z (n - NUMERAL_BIT1 (0::nat))))))
  1.6788 +        (real_mul (real_of_num n) (real_pow z (n - NUMERAL_BIT1 0)))))
  1.6789      (real_mul (real_of_num n)
  1.6790 -      (real_mul (real_of_num (n - NUMERAL_BIT1 (0::nat)))
  1.6791 -        (real_mul (real_pow K (n - NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
  1.6792 +      (real_mul (real_of_num (n - NUMERAL_BIT1 0))
  1.6793 +        (real_mul (real_pow K (n - NUMERAL_BIT0 (NUMERAL_BIT1 0)))
  1.6794            (real_abs h))))"
  1.6795    by (import hollight TERMDIFF_LEMMA3)
  1.6796  
  1.6797  lemma TERMDIFF_LEMMA4: "ALL (f::hollight.real => hollight.real) (K::hollight.real) k::hollight.real.
  1.6798 -   real_lt (real_of_num (0::nat)) k &
  1.6799 +   real_lt (real_of_num 0) k &
  1.6800     (ALL h::hollight.real.
  1.6801 -       real_lt (real_of_num (0::nat)) (real_abs h) &
  1.6802 -       real_lt (real_abs h) k -->
  1.6803 +       real_lt (real_of_num 0) (real_abs h) & real_lt (real_abs h) k -->
  1.6804         real_le (real_abs (f h)) (real_mul K (real_abs h))) -->
  1.6805 -   tends_real_real f (real_of_num (0::nat)) (real_of_num (0::nat))"
  1.6806 +   tends_real_real f (real_of_num 0) (real_of_num 0)"
  1.6807    by (import hollight TERMDIFF_LEMMA4)
  1.6808  
  1.6809  lemma TERMDIFF_LEMMA5: "ALL (f::nat => hollight.real) (g::hollight.real => nat => hollight.real)
  1.6810     k::hollight.real.
  1.6811 -   real_lt (real_of_num (0::nat)) k &
  1.6812 +   real_lt (real_of_num 0) k &
  1.6813     summable f &
  1.6814     (ALL h::hollight.real.
  1.6815 -       real_lt (real_of_num (0::nat)) (real_abs h) &
  1.6816 -       real_lt (real_abs h) k -->
  1.6817 +       real_lt (real_of_num 0) (real_abs h) & real_lt (real_abs h) k -->
  1.6818         (ALL n::nat.
  1.6819             real_le (real_abs (g h n)) (real_mul (f n) (real_abs h)))) -->
  1.6820 -   tends_real_real (%h::hollight.real. suminf (g h)) (real_of_num (0::nat))
  1.6821 -    (real_of_num (0::nat))"
  1.6822 +   tends_real_real (%h::hollight.real. suminf (g h)) (real_of_num 0)
  1.6823 +    (real_of_num 0)"
  1.6824    by (import hollight TERMDIFF_LEMMA5)
  1.6825  
  1.6826  lemma TERMDIFF: "ALL (c::nat => hollight.real) K::hollight.real.
  1.6827 @@ -11690,9 +11959,9 @@
  1.6828    by (import hollight TERMDIFF)
  1.6829  
  1.6830  lemma SEQ_NPOW: "ALL x::hollight.real.
  1.6831 -   real_lt (real_abs x) (real_of_num (NUMERAL_BIT1 (0::nat))) -->
  1.6832 +   real_lt (real_abs x) (real_of_num (NUMERAL_BIT1 0)) -->
  1.6833     tends_num_real (%n::nat. real_mul (real_of_num n) (real_pow x n))
  1.6834 -    (real_of_num (0::nat))"
  1.6835 +    (real_of_num 0)"
  1.6836    by (import hollight SEQ_NPOW)
  1.6837  
  1.6838  lemma TERMDIFF_CONVERGES: "ALL K::hollight.real.
  1.6839 @@ -11715,52 +11984,48 @@
  1.6840    by (import hollight TERMDIFF_STRONG)
  1.6841  
  1.6842  lemma POWSER_0: "ALL a::nat => hollight.real.
  1.6843 -   sums (%n::nat. real_mul (a n) (real_pow (real_of_num (0::nat)) n))
  1.6844 -    (a (0::nat))"
  1.6845 +   sums (%n::nat. real_mul (a n) (real_pow (real_of_num 0) n)) (a 0)"
  1.6846    by (import hollight POWSER_0)
  1.6847  
  1.6848  lemma POWSER_LIMIT_0: "ALL (f::hollight.real => hollight.real) (a::nat => hollight.real)
  1.6849     s::hollight.real.
  1.6850 -   real_lt (real_of_num (0::nat)) s &
  1.6851 +   real_lt (real_of_num 0) s &
  1.6852     (ALL x::hollight.real.
  1.6853         real_lt (real_abs x) s -->
  1.6854         sums (%n::nat. real_mul (a n) (real_pow x n)) (f x)) -->
  1.6855 -   tends_real_real f (a (0::nat)) (real_of_num (0::nat))"
  1.6856 +   tends_real_real f (a 0) (real_of_num 0)"
  1.6857    by (import hollight POWSER_LIMIT_0)
  1.6858  
  1.6859  lemma POWSER_LIMIT_0_STRONG: "ALL (f::hollight.real => hollight.real) (a::nat => hollight.real)
  1.6860     s::hollight.real.
  1.6861 -   real_lt (real_of_num (0::nat)) s &
  1.6862 +   real_lt (real_of_num 0) s &
  1.6863     (ALL x::hollight.real.
  1.6864 -       real_lt (real_of_num (0::nat)) (real_abs x) &
  1.6865 -       real_lt (real_abs x) s -->
  1.6866 +       real_lt (real_of_num 0) (real_abs x) & real_lt (real_abs x) s -->
  1.6867         sums (%n::nat. real_mul (a n) (real_pow x n)) (f x)) -->
  1.6868 -   tends_real_real f (a (0::nat)) (real_of_num (0::nat))"
  1.6869 +   tends_real_real f (a 0) (real_of_num 0)"
  1.6870    by (import hollight POWSER_LIMIT_0_STRONG)
  1.6871  
  1.6872  lemma POWSER_EQUAL_0: "ALL (f::hollight.real => hollight.real) (a::nat => hollight.real)
  1.6873     (b::nat => hollight.real) P::hollight.real => bool.
  1.6874     (ALL e::hollight.real.
  1.6875 -       real_lt (real_of_num (0::nat)) e -->
  1.6876 +       real_lt (real_of_num 0) e -->
  1.6877         (EX x::hollight.real.
  1.6878             P x &
  1.6879 -           real_lt (real_of_num (0::nat)) (real_abs x) &
  1.6880 -           real_lt (real_abs x) e)) &
  1.6881 +           real_lt (real_of_num 0) (real_abs x) & real_lt (real_abs x) e)) &
  1.6882     (ALL x::hollight.real.
  1.6883 -       real_lt (real_of_num (0::nat)) (real_abs x) & P x -->
  1.6884 +       real_lt (real_of_num 0) (real_abs x) & P x -->
  1.6885         sums (%n::nat. real_mul (a n) (real_pow x n)) (f x) &
  1.6886         sums (%n::nat. real_mul (b n) (real_pow x n)) (f x)) -->
  1.6887 -   a (0::nat) = b (0::nat)"
  1.6888 +   a 0 = b 0"
  1.6889    by (import hollight POWSER_EQUAL_0)
  1.6890  
  1.6891  lemma POWSER_EQUAL: "ALL (f::hollight.real => hollight.real) (a::nat => hollight.real)
  1.6892     (b::nat => hollight.real) P::hollight.real => bool.
  1.6893     (ALL e::hollight.real.
  1.6894 -       real_lt (real_of_num (0::nat)) e -->
  1.6895 +       real_lt (real_of_num 0) e -->
  1.6896         (EX x::hollight.real.
  1.6897             P x &
  1.6898 -           real_lt (real_of_num (0::nat)) (real_abs x) &
  1.6899 -           real_lt (real_abs x) e)) &
  1.6900 +           real_lt (real_of_num 0) (real_abs x) & real_lt (real_abs x) e)) &
  1.6901     (ALL x::hollight.real.
  1.6902         P x -->
  1.6903         sums (%n::nat. real_mul (a n) (real_pow x n)) (f x) &
  1.6904 @@ -11769,35 +12034,32 @@
  1.6905    by (import hollight POWSER_EQUAL)
  1.6906  
  1.6907  lemma MULT_DIV_2: "ALL n::nat.
  1.6908 -   DIV (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * n)
  1.6909 -    (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) =
  1.6910 +   DIV (NUMERAL_BIT0 (NUMERAL_BIT1 0) * n) (NUMERAL_BIT0 (NUMERAL_BIT1 0)) =
  1.6911     n"
  1.6912    by (import hollight MULT_DIV_2)
  1.6913  
  1.6914  lemma EVEN_DIV2: "ALL n::nat.
  1.6915     ~ EVEN n -->
  1.6916 -   DIV (Suc n) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) =
  1.6917 -   Suc (DIV (n - NUMERAL_BIT1 (0::nat))
  1.6918 -         (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))"
  1.6919 +   DIV (Suc n) (NUMERAL_BIT0 (NUMERAL_BIT1 0)) =
  1.6920 +   Suc (DIV (n - NUMERAL_BIT1 0) (NUMERAL_BIT0 (NUMERAL_BIT1 0)))"
  1.6921    by (import hollight EVEN_DIV2)
  1.6922  
  1.6923  lemma POW_ZERO: "ALL (n::nat) x::hollight.real.
  1.6924 -   real_pow x n = real_of_num (0::nat) --> x = real_of_num (0::nat)"
  1.6925 +   real_pow x n = real_of_num 0 --> x = real_of_num 0"
  1.6926    by (import hollight POW_ZERO)
  1.6927  
  1.6928  lemma POW_ZERO_EQ: "ALL (n::nat) x::hollight.real.
  1.6929 -   (real_pow x (Suc n) = real_of_num (0::nat)) = (x = real_of_num (0::nat))"
  1.6930 +   (real_pow x (Suc n) = real_of_num 0) = (x = real_of_num 0)"
  1.6931    by (import hollight POW_ZERO_EQ)
  1.6932  
  1.6933  lemma POW_LT: "ALL (n::nat) (x::hollight.real) y::hollight.real.
  1.6934 -   real_le (real_of_num (0::nat)) x & real_lt x y -->
  1.6935 +   real_le (real_of_num 0) x & real_lt x y -->
  1.6936     real_lt (real_pow x (Suc n)) (real_pow y (Suc n))"
  1.6937    by (import hollight POW_LT)
  1.6938  
  1.6939  lemma POW_EQ: "ALL (n::nat) (x::hollight.real) y::hollight.real.
  1.6940 -   real_le (real_of_num (0::nat)) x &
  1.6941 -   real_le (real_of_num (0::nat)) y &
  1.6942 -   real_pow x (Suc n) = real_pow y (Suc n) -->
  1.6943 +   real_le (real_of_num 0) x &
  1.6944 +   real_le (real_of_num 0) y & real_pow x (Suc n) = real_pow y (Suc n) -->
  1.6945     x = y"
  1.6946    by (import hollight POW_EQ)
  1.6947  
  1.6948 @@ -11821,11 +12083,10 @@
  1.6949     suminf
  1.6950      (%n::nat.
  1.6951          real_mul
  1.6952 -         (COND (EVEN n) (real_of_num (0::nat))
  1.6953 +         (COND (EVEN n) (real_of_num 0)
  1.6954             (real_div
  1.6955 -             (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
  1.6956 -               (DIV (n - NUMERAL_BIT1 (0::nat))
  1.6957 -                 (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.6958 +             (real_pow (real_neg (real_of_num (NUMERAL_BIT1 0)))
  1.6959 +               (DIV (n - NUMERAL_BIT1 0) (NUMERAL_BIT0 (NUMERAL_BIT1 0))))
  1.6960               (real_of_num (FACT n))))
  1.6961           (real_pow u n))"
  1.6962  
  1.6963 @@ -11834,11 +12095,10 @@
  1.6964      suminf
  1.6965       (%n::nat.
  1.6966           real_mul
  1.6967 -          (COND (EVEN n) (real_of_num (0::nat))
  1.6968 +          (COND (EVEN n) (real_of_num 0)
  1.6969              (real_div
  1.6970 -              (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
  1.6971 -                (DIV (n - NUMERAL_BIT1 (0::nat))
  1.6972 -                  (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.6973 +              (real_pow (real_neg (real_of_num (NUMERAL_BIT1 0)))
  1.6974 +                (DIV (n - NUMERAL_BIT1 0) (NUMERAL_BIT0 (NUMERAL_BIT1 0))))
  1.6975                (real_of_num (FACT n))))
  1.6976            (real_pow u n)))"
  1.6977    by (import hollight DEF_sin)
  1.6978 @@ -11852,10 +12112,10 @@
  1.6979          real_mul
  1.6980           (COND (EVEN n)
  1.6981             (real_div
  1.6982 -             (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
  1.6983 -               (DIV n (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.6984 +             (real_pow (real_neg (real_of_num (NUMERAL_BIT1 0)))
  1.6985 +               (DIV n (NUMERAL_BIT0 (NUMERAL_BIT1 0))))
  1.6986               (real_of_num (FACT n)))
  1.6987 -           (real_of_num (0::nat)))
  1.6988 +           (real_of_num 0))
  1.6989           (real_pow u n))"
  1.6990  
  1.6991  lemma DEF_cos: "cos =
  1.6992 @@ -11865,10 +12125,10 @@
  1.6993           real_mul
  1.6994            (COND (EVEN n)
  1.6995              (real_div
  1.6996 -              (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
  1.6997 -                (DIV n (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.6998 +              (real_pow (real_neg (real_of_num (NUMERAL_BIT1 0)))
  1.6999 +                (DIV n (NUMERAL_BIT0 (NUMERAL_BIT1 0))))
  1.7000                (real_of_num (FACT n)))
  1.7001 -            (real_of_num (0::nat)))
  1.7002 +            (real_of_num 0))
  1.7003            (real_pow u n)))"
  1.7004    by (import hollight DEF_cos)
  1.7005  
  1.7006 @@ -11881,11 +12141,10 @@
  1.7007     sums
  1.7008      (%n::nat.
  1.7009          real_mul
  1.7010 -         (COND (EVEN n) (real_of_num (0::nat))
  1.7011 +         (COND (EVEN n) (real_of_num 0)
  1.7012             (real_div
  1.7013 -             (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
  1.7014 -               (DIV (n - NUMERAL_BIT1 (0::nat))
  1.7015 -                 (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.7016 +             (real_pow (real_neg (real_of_num (NUMERAL_BIT1 0)))
  1.7017 +               (DIV (n - NUMERAL_BIT1 0) (NUMERAL_BIT0 (NUMERAL_BIT1 0))))
  1.7018               (real_of_num (FACT n))))
  1.7019           (real_pow x n))
  1.7020      (sin x)"
  1.7021 @@ -11897,10 +12156,10 @@
  1.7022          real_mul
  1.7023           (COND (EVEN n)
  1.7024             (real_div
  1.7025 -             (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
  1.7026 -               (DIV n (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.7027 +             (real_pow (real_neg (real_of_num (NUMERAL_BIT1 0)))
  1.7028 +               (DIV n (NUMERAL_BIT0 (NUMERAL_BIT1 0))))
  1.7029               (real_of_num (FACT n)))
  1.7030 -           (real_of_num (0::nat)))
  1.7031 +           (real_of_num 0))
  1.7032           (real_pow x n))
  1.7033      (cos x)"
  1.7034    by (import hollight COS_CONVERGES)
  1.7035 @@ -11911,36 +12170,34 @@
  1.7036  
  1.7037  lemma SIN_FDIFF: "diffs
  1.7038   (%n::nat.
  1.7039 -     COND (EVEN n) (real_of_num (0::nat))
  1.7040 +     COND (EVEN n) (real_of_num 0)
  1.7041        (real_div
  1.7042 -        (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
  1.7043 -          (DIV (n - NUMERAL_BIT1 (0::nat))
  1.7044 -            (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.7045 +        (real_pow (real_neg (real_of_num (NUMERAL_BIT1 0)))
  1.7046 +          (DIV (n - NUMERAL_BIT1 0) (NUMERAL_BIT0 (NUMERAL_BIT1 0))))
  1.7047          (real_of_num (FACT n)))) =
  1.7048  (%n::nat.
  1.7049      COND (EVEN n)
  1.7050       (real_div
  1.7051 -       (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
  1.7052 -         (DIV n (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.7053 +       (real_pow (real_neg (real_of_num (NUMERAL_BIT1 0)))
  1.7054 +         (DIV n (NUMERAL_BIT0 (NUMERAL_BIT1 0))))
  1.7055         (real_of_num (FACT n)))
  1.7056 -     (real_of_num (0::nat)))"
  1.7057 +     (real_of_num 0))"
  1.7058    by (import hollight SIN_FDIFF)
  1.7059  
  1.7060  lemma COS_FDIFF: "diffs
  1.7061   (%n::nat.
  1.7062       COND (EVEN n)
  1.7063        (real_div
  1.7064 -        (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
  1.7065 -          (DIV n (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.7066 +        (real_pow (real_neg (real_of_num (NUMERAL_BIT1 0)))
  1.7067 +          (DIV n (NUMERAL_BIT0 (NUMERAL_BIT1 0))))
  1.7068          (real_of_num (FACT n)))
  1.7069 -      (real_of_num (0::nat))) =
  1.7070 +      (real_of_num 0)) =
  1.7071  (%n::nat.
  1.7072      real_neg
  1.7073 -     (COND (EVEN n) (real_of_num (0::nat))
  1.7074 +     (COND (EVEN n) (real_of_num 0)
  1.7075         (real_div
  1.7076 -         (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
  1.7077 -           (DIV (n - NUMERAL_BIT1 (0::nat))
  1.7078 -             (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.7079 +         (real_pow (real_neg (real_of_num (NUMERAL_BIT1 0)))
  1.7080 +           (DIV (n - NUMERAL_BIT1 0) (NUMERAL_BIT0 (NUMERAL_BIT1 0))))
  1.7081           (real_of_num (FACT n)))))"
  1.7082    by (import hollight COS_FDIFF)
  1.7083  
  1.7084 @@ -11950,11 +12207,10 @@
  1.7085      (%n::nat.
  1.7086          real_neg
  1.7087           (real_mul
  1.7088 -           (COND (EVEN n) (real_of_num (0::nat))
  1.7089 +           (COND (EVEN n) (real_of_num 0)
  1.7090               (real_div
  1.7091 -               (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat))))
  1.7092 -                 (DIV (n - NUMERAL_BIT1 (0::nat))
  1.7093 -                   (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.7094 +               (real_pow (real_neg (real_of_num (NUMERAL_BIT1 0)))
  1.7095 +                 (DIV (n - NUMERAL_BIT1 0) (NUMERAL_BIT0 (NUMERAL_BIT1 0))))
  1.7096                 (real_of_num (FACT n))))
  1.7097             (real_pow x n)))"
  1.7098    by (import hollight SIN_NEGLEMMA)
  1.7099 @@ -11970,17 +12226,16 @@
  1.7100  
  1.7101  lemma DIFF_COMPOSITE: "(diffl (f::hollight.real => hollight.real) (l::hollight.real)
  1.7102    (x::hollight.real) &
  1.7103 - f x ~= real_of_num (0::nat) -->
  1.7104 + f x ~= real_of_num 0 -->
  1.7105   diffl (%x::hollight.real. real_inv (f x))
  1.7106 -  (real_neg
  1.7107 -    (real_div l (real_pow (f x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
  1.7108 +  (real_neg (real_div l (real_pow (f x) (NUMERAL_BIT0 (NUMERAL_BIT1 0)))))
  1.7109    x) &
  1.7110  (diffl f l x &
  1.7111   diffl (g::hollight.real => hollight.real) (m::hollight.real) x &
  1.7112 - g x ~= real_of_num (0::nat) -->
  1.7113 + g x ~= real_of_num 0 -->
  1.7114   diffl (%x::hollight.real. real_div (f x) (g x))
  1.7115    (real_div (real_sub (real_mul l (g x)) (real_mul m (f x)))
  1.7116 -    (real_pow (g x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.7117 +    (real_pow (g x) (NUMERAL_BIT0 (NUMERAL_BIT1 0))))
  1.7118    x) &
  1.7119  (diffl f l x & diffl g m x -->
  1.7120   diffl (%x::hollight.real. real_add (f x) (g x)) (real_add l m) x) &
  1.7121 @@ -11992,8 +12247,7 @@
  1.7122  (diffl f l x --> diffl (%x::hollight.real. real_neg (f x)) (real_neg l) x) &
  1.7123  (diffl g m x -->
  1.7124   diffl (%x::hollight.real. real_pow (g x) (n::nat))
  1.7125 -  (real_mul
  1.7126 -    (real_mul (real_of_num n) (real_pow (g x) (n - NUMERAL_BIT1 (0::nat))))
  1.7127 +  (real_mul (real_mul (real_of_num n) (real_pow (g x) (n - NUMERAL_BIT1 0)))
  1.7128      m)
  1.7129    x) &
  1.7130  (diffl g m x -->
  1.7131 @@ -12004,17 +12258,17 @@
  1.7132   diffl (%x::hollight.real. cos (g x)) (real_mul (real_neg (sin (g x))) m) x)"
  1.7133    by (import hollight DIFF_COMPOSITE)
  1.7134  
  1.7135 -lemma REAL_EXP_0: "exp (real_of_num (0::nat)) = real_of_num (NUMERAL_BIT1 (0::nat))"
  1.7136 +lemma REAL_EXP_0: "exp (real_of_num 0) = real_of_num (NUMERAL_BIT1 0)"
  1.7137    by (import hollight REAL_EXP_0)
  1.7138  
  1.7139  lemma REAL_EXP_LE_X: "ALL x::hollight.real.
  1.7140 -   real_le (real_of_num (0::nat)) x -->
  1.7141 -   real_le (real_add (real_of_num (NUMERAL_BIT1 (0::nat))) x) (exp x)"
  1.7142 +   real_le (real_of_num 0) x -->
  1.7143 +   real_le (real_add (real_of_num (NUMERAL_BIT1 0)) x) (exp x)"
  1.7144    by (import hollight REAL_EXP_LE_X)
  1.7145  
  1.7146  lemma REAL_EXP_LT_1: "ALL x::hollight.real.
  1.7147 -   real_lt (real_of_num (0::nat)) x -->
  1.7148 -   real_lt (real_of_num (NUMERAL_BIT1 (0::nat))) (exp x)"
  1.7149 +   real_lt (real_of_num 0) x -->
  1.7150 +   real_lt (real_of_num (NUMERAL_BIT1 0)) (exp x)"
  1.7151    by (import hollight REAL_EXP_LT_1)
  1.7152  
  1.7153  lemma REAL_EXP_ADD_MUL: "ALL (x::hollight.real) y::hollight.real.
  1.7154 @@ -12022,11 +12276,11 @@
  1.7155    by (import hollight REAL_EXP_ADD_MUL)
  1.7156  
  1.7157  lemma REAL_EXP_NEG_MUL: "ALL x::hollight.real.
  1.7158 -   real_mul (exp x) (exp (real_neg x)) = real_of_num (NUMERAL_BIT1 (0::nat))"
  1.7159 +   real_mul (exp x) (exp (real_neg x)) = real_of_num (NUMERAL_BIT1 0)"
  1.7160    by (import hollight REAL_EXP_NEG_MUL)
  1.7161  
  1.7162  lemma REAL_EXP_NEG_MUL2: "ALL x::hollight.real.
  1.7163 -   real_mul (exp (real_neg x)) (exp x) = real_of_num (NUMERAL_BIT1 (0::nat))"
  1.7164 +   real_mul (exp (real_neg x)) (exp x) = real_of_num (NUMERAL_BIT1 0)"
  1.7165    by (import hollight REAL_EXP_NEG_MUL2)
  1.7166  
  1.7167  lemma REAL_EXP_NEG: "ALL x::hollight.real. exp (real_neg x) = real_inv (exp x)"
  1.7168 @@ -12036,13 +12290,13 @@
  1.7169     exp (real_add x y) = real_mul (exp x) (exp y)"
  1.7170    by (import hollight REAL_EXP_ADD)
  1.7171  
  1.7172 -lemma REAL_EXP_POS_LE: "ALL x::hollight.real. real_le (real_of_num (0::nat)) (exp x)"
  1.7173 +lemma REAL_EXP_POS_LE: "ALL x::hollight.real. real_le (real_of_num 0) (exp x)"
  1.7174    by (import hollight REAL_EXP_POS_LE)
  1.7175  
  1.7176 -lemma REAL_EXP_NZ: "ALL x::hollight.real. exp x ~= real_of_num (0::nat)"
  1.7177 +lemma REAL_EXP_NZ: "ALL x::hollight.real. exp x ~= real_of_num 0"
  1.7178    by (import hollight REAL_EXP_NZ)
  1.7179  
  1.7180 -lemma REAL_EXP_POS_LT: "ALL x::hollight.real. real_lt (real_of_num (0::nat)) (exp x)"
  1.7181 +lemma REAL_EXP_POS_LT: "ALL x::hollight.real. real_lt (real_of_num 0) (exp x)"
  1.7182    by (import hollight REAL_EXP_POS_LT)
  1.7183  
  1.7184  lemma REAL_EXP_N: "ALL (n::nat) x::hollight.real.
  1.7185 @@ -12069,24 +12323,22 @@
  1.7186    by (import hollight REAL_EXP_INJ)
  1.7187  
  1.7188  lemma REAL_EXP_TOTAL_LEMMA: "ALL y::hollight.real.
  1.7189 -   real_le (real_of_num (NUMERAL_BIT1 (0::nat))) y -->
  1.7190 +   real_le (real_of_num (NUMERAL_BIT1 0)) y -->
  1.7191     (EX x::hollight.real.
  1.7192 -       real_le (real_of_num (0::nat)) x &
  1.7193 -       real_le x (real_sub y (real_of_num (NUMERAL_BIT1 (0::nat)))) &
  1.7194 -       exp x = y)"
  1.7195 +       real_le (real_of_num 0) x &
  1.7196 +       real_le x (real_sub y (real_of_num (NUMERAL_BIT1 0))) & exp x = y)"
  1.7197    by (import hollight REAL_EXP_TOTAL_LEMMA)
  1.7198  
  1.7199  lemma REAL_EXP_TOTAL: "ALL y::hollight.real.
  1.7200 -   real_lt (real_of_num (0::nat)) y --> (EX x::hollight.real. exp x = y)"
  1.7201 +   real_lt (real_of_num 0) y --> (EX x::hollight.real. exp x = y)"
  1.7202    by (import hollight REAL_EXP_TOTAL)
  1.7203  
  1.7204  lemma REAL_EXP_BOUND_LEMMA: "ALL x::hollight.real.
  1.7205 -   real_le (real_of_num (0::nat)) x &
  1.7206 -   real_le x
  1.7207 -    (real_inv (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) -->
  1.7208 +   real_le (real_of_num 0) x &
  1.7209 +   real_le x (real_inv (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))) -->
  1.7210     real_le (exp x)
  1.7211 -    (real_add (real_of_num (NUMERAL_BIT1 (0::nat)))
  1.7212 -      (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) x))"
  1.7213 +    (real_add (real_of_num (NUMERAL_BIT1 0))
  1.7214 +      (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) x))"
  1.7215    by (import hollight REAL_EXP_BOUND_LEMMA)
  1.7216  
  1.7217  constdefs
  1.7218 @@ -12099,67 +12351,66 @@
  1.7219  lemma LN_EXP: "ALL x::hollight.real. ln (exp x) = x"
  1.7220    by (import hollight LN_EXP)
  1.7221  
  1.7222 -lemma REAL_EXP_LN: "ALL x::hollight.real. (exp (ln x) = x) = real_lt (real_of_num (0::nat)) x"
  1.7223 +lemma REAL_EXP_LN: "ALL x::hollight.real. (exp (ln x) = x) = real_lt (real_of_num 0) x"
  1.7224    by (import hollight REAL_EXP_LN)
  1.7225  
  1.7226  lemma LN_MUL: "ALL (x::hollight.real) y::hollight.real.
  1.7227 -   real_lt (real_of_num (0::nat)) x & real_lt (real_of_num (0::nat)) y -->
  1.7228 +   real_lt (real_of_num 0) x & real_lt (real_of_num 0) y -->
  1.7229     ln (real_mul x y) = real_add (ln x) (ln y)"
  1.7230    by (import hollight LN_MUL)
  1.7231  
  1.7232  lemma LN_INJ: "ALL (x::hollight.real) y::hollight.real.
  1.7233 -   real_lt (real_of_num (0::nat)) x & real_lt (real_of_num (0::nat)) y -->
  1.7234 +   real_lt (real_of_num 0) x & real_lt (real_of_num 0) y -->
  1.7235     (ln x = ln y) = (x = y)"
  1.7236    by (import hollight LN_INJ)
  1.7237  
  1.7238 -lemma LN_1: "ln (real_of_num (NUMERAL_BIT1 (0::nat))) = real_of_num (0::nat)"
  1.7239 +lemma LN_1: "ln (real_of_num (NUMERAL_BIT1 0)) = real_of_num 0"
  1.7240    by (import hollight LN_1)
  1.7241  
  1.7242  lemma LN_INV: "ALL x::hollight.real.
  1.7243 -   real_lt (real_of_num (0::nat)) x --> ln (real_inv x) = real_neg (ln x)"
  1.7244 +   real_lt (real_of_num 0) x --> ln (real_inv x) = real_neg (ln x)"
  1.7245    by (import hollight LN_INV)
  1.7246  
  1.7247  lemma LN_DIV: "ALL x::hollight.real.
  1.7248 -   real_lt (real_of_num (0::nat)) x &
  1.7249 -   real_lt (real_of_num (0::nat)) (y::hollight.real) -->
  1.7250 +   real_lt (real_of_num 0) x &
  1.7251 +   real_lt (real_of_num 0) (y::hollight.real) -->
  1.7252     ln (real_div x y) = real_sub (ln x) (ln y)"
  1.7253    by (import hollight LN_DIV)
  1.7254  
  1.7255  lemma LN_MONO_LT: "ALL (x::hollight.real) y::hollight.real.
  1.7256 -   real_lt (real_of_num (0::nat)) x & real_lt (real_of_num (0::nat)) y -->
  1.7257 +   real_lt (real_of_num 0) x & real_lt (real_of_num 0) y -->
  1.7258     real_lt (ln x) (ln y) = real_lt x y"
  1.7259    by (import hollight LN_MONO_LT)
  1.7260  
  1.7261  lemma LN_MONO_LE: "ALL (x::hollight.real) y::hollight.real.
  1.7262 -   real_lt (real_of_num (0::nat)) x & real_lt (real_of_num (0::nat)) y -->
  1.7263 +   real_lt (real_of_num 0) x & real_lt (real_of_num 0) y -->
  1.7264     real_le (ln x) (ln y) = real_le x y"
  1.7265    by (import hollight LN_MONO_LE)
  1.7266  
  1.7267  lemma LN_POW: "ALL (n::nat) x::hollight.real.
  1.7268 -   real_lt (real_of_num (0::nat)) x -->
  1.7269 +   real_lt (real_of_num 0) x -->
  1.7270     ln (real_pow x n) = real_mul (real_of_num n) (ln x)"
  1.7271    by (import hollight LN_POW)
  1.7272  
  1.7273  lemma LN_LE: "ALL x::hollight.real.
  1.7274 -   real_le (real_of_num (0::nat)) x -->
  1.7275 -   real_le (ln (real_add (real_of_num (NUMERAL_BIT1 (0::nat))) x)) x"
  1.7276 +   real_le (real_of_num 0) x -->
  1.7277 +   real_le (ln (real_add (real_of_num (NUMERAL_BIT1 0)) x)) x"
  1.7278    by (import hollight LN_LE)
  1.7279  
  1.7280 -lemma LN_LT_X: "ALL x::hollight.real. real_lt (real_of_num (0::nat)) x --> real_lt (ln x) x"
  1.7281 +lemma LN_LT_X: "ALL x::hollight.real. real_lt (real_of_num 0) x --> real_lt (ln x) x"
  1.7282    by (import hollight LN_LT_X)
  1.7283  
  1.7284  lemma LN_POS: "ALL x::hollight.real.
  1.7285 -   real_le (real_of_num (NUMERAL_BIT1 (0::nat))) x -->
  1.7286 -   real_le (real_of_num (0::nat)) (ln x)"
  1.7287 +   real_le (real_of_num (NUMERAL_BIT1 0)) x -->
  1.7288 +   real_le (real_of_num 0) (ln x)"
  1.7289    by (import hollight LN_POS)
  1.7290  
  1.7291  lemma LN_POS_LT: "ALL x::hollight.real.
  1.7292 -   real_lt (real_of_num (NUMERAL_BIT1 (0::nat))) x -->
  1.7293 -   real_lt (real_of_num (0::nat)) (ln x)"
  1.7294 +   real_lt (real_of_num (NUMERAL_BIT1 0)) x -->
  1.7295 +   real_lt (real_of_num 0) (ln x)"
  1.7296    by (import hollight LN_POS_LT)
  1.7297  
  1.7298 -lemma DIFF_LN: "ALL x::hollight.real.
  1.7299 -   real_lt (real_of_num (0::nat)) x --> diffl ln (real_inv x) x"
  1.7300 +lemma DIFF_LN: "ALL x::hollight.real. real_lt (real_of_num 0) x --> diffl ln (real_inv x) x"
  1.7301    by (import hollight DIFF_LN)
  1.7302  
  1.7303  constdefs
  1.7304 @@ -12167,15 +12418,13 @@
  1.7305    "root ==
  1.7306  %(u::nat) ua::hollight.real.
  1.7307     SOME ub::hollight.real.
  1.7308 -      (real_lt (real_of_num (0::nat)) ua -->
  1.7309 -       real_lt (real_of_num (0::nat)) ub) &
  1.7310 +      (real_lt (real_of_num 0) ua --> real_lt (real_of_num 0) ub) &
  1.7311        real_pow ub u = ua"
  1.7312  
  1.7313  lemma DEF_root: "root =
  1.7314  (%(u::nat) ua::hollight.real.
  1.7315      SOME ub::hollight.real.
  1.7316 -       (real_lt (real_of_num (0::nat)) ua -->
  1.7317 -        real_lt (real_of_num (0::nat)) ub) &
  1.7318 +       (real_lt (real_of_num 0) ua --> real_lt (real_of_num 0) ub) &
  1.7319         real_pow ub u = ua)"
  1.7320    by (import hollight DEF_root)
  1.7321  
  1.7322 @@ -12184,243 +12433,233 @@
  1.7323    "sqrt ==
  1.7324  %u::hollight.real.
  1.7325     SOME y::hollight.real.
  1.7326 -      real_le (real_of_num (0::nat)) y &
  1.7327 -      real_pow y (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = u"
  1.7328 +      real_le (real_of_num 0) y &
  1.7329 +      real_pow y (NUMERAL_BIT0 (NUMERAL_BIT1 0)) = u"
  1.7330  
  1.7331  lemma DEF_sqrt: "sqrt =
  1.7332  (%u::hollight.real.
  1.7333      SOME y::hollight.real.
  1.7334 -       real_le (real_of_num (0::nat)) y &
  1.7335 -       real_pow y (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = u)"
  1.7336 +       real_le (real_of_num 0) y &
  1.7337 +       real_pow y (NUMERAL_BIT0 (NUMERAL_BIT1 0)) = u)"
  1.7338    by (import hollight DEF_sqrt)
  1.7339  
  1.7340 -lemma sqrt: "sqrt (x::hollight.real) = root (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) x"
  1.7341 +lemma sqrt: "sqrt (x::hollight.real) = root (NUMERAL_BIT0 (NUMERAL_BIT1 0)) x"
  1.7342    by (import hollight sqrt)
  1.7343  
  1.7344  lemma ROOT_LT_LEMMA: "ALL (n::nat) x::hollight.real.
  1.7345 -   real_lt (real_of_num (0::nat)) x -->
  1.7346 +   real_lt (real_of_num 0) x -->
  1.7347     real_pow (exp (real_div (ln x) (real_of_num (Suc n)))) (Suc n) = x"
  1.7348    by (import hollight ROOT_LT_LEMMA)
  1.7349  
  1.7350  lemma ROOT_LN: "ALL x::hollight.real.
  1.7351 -   real_lt (real_of_num (0::nat)) x -->
  1.7352 +   real_lt (real_of_num 0) x -->
  1.7353     (ALL n::nat.
  1.7354         root (Suc n) x = exp (real_div (ln x) (real_of_num (Suc n))))"
  1.7355    by (import hollight ROOT_LN)
  1.7356  
  1.7357 -lemma ROOT_0: "ALL n::nat. root (Suc n) (real_of_num (0::nat)) = real_of_num (0::nat)"
  1.7358 +lemma ROOT_0: "ALL n::nat. root (Suc n) (real_of_num 0) = real_of_num 0"
  1.7359    by (import hollight ROOT_0)
  1.7360  
  1.7361  lemma ROOT_1: "ALL n::nat.
  1.7362 -   root (Suc n) (real_of_num (NUMERAL_BIT1 (0::nat))) =
  1.7363 -   real_of_num (NUMERAL_BIT1 (0::nat))"
  1.7364 +   root (Suc n) (real_of_num (NUMERAL_BIT1 0)) =
  1.7365 +   real_of_num (NUMERAL_BIT1 0)"
  1.7366    by (import hollight ROOT_1)
  1.7367  
  1.7368  lemma ROOT_POW_POS: "ALL (n::nat) x::hollight.real.
  1.7369 -   real_le (real_of_num (0::nat)) x -->
  1.7370 -   real_pow (root (Suc n) x) (Suc n) = x"
  1.7371 +   real_le (real_of_num 0) x --> real_pow (root (Suc n) x) (Suc n) = x"
  1.7372    by (import hollight ROOT_POW_POS)
  1.7373  
  1.7374  lemma POW_ROOT_POS: "ALL (n::nat) x::hollight.real.
  1.7375 -   real_le (real_of_num (0::nat)) x -->
  1.7376 -   root (Suc n) (real_pow x (Suc n)) = x"
  1.7377 +   real_le (real_of_num 0) x --> root (Suc n) (real_pow x (Suc n)) = x"
  1.7378    by (import hollight POW_ROOT_POS)
  1.7379  
  1.7380  lemma ROOT_POS_POSITIVE: "ALL (x::hollight.real) n::nat.
  1.7381 -   real_le (real_of_num (0::nat)) x -->
  1.7382 -   real_le (real_of_num (0::nat)) (root (Suc n) x)"
  1.7383 +   real_le (real_of_num 0) x --> real_le (real_of_num 0) (root (Suc n) x)"
  1.7384    by (import hollight ROOT_POS_POSITIVE)
  1.7385  
  1.7386  lemma ROOT_POS_UNIQ: "ALL (n::nat) (x::hollight.real) y::hollight.real.
  1.7387 -   real_le (real_of_num (0::nat)) x &
  1.7388 -   real_le (real_of_num (0::nat)) y & real_pow y (Suc n) = x -->
  1.7389 +   real_le (real_of_num 0) x &
  1.7390 +   real_le (real_of_num 0) y & real_pow y (Suc n) = x -->
  1.7391     root (Suc n) x = y"
  1.7392    by (import hollight ROOT_POS_UNIQ)
  1.7393  
  1.7394  lemma ROOT_MUL: "ALL (n::nat) (x::hollight.real) y::hollight.real.
  1.7395 -   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) y -->
  1.7396 +   real_le (real_of_num 0) x & real_le (real_of_num 0) y -->
  1.7397     root (Suc n) (real_mul x y) = real_mul (root (Suc n) x) (root (Suc n) y)"
  1.7398    by (import hollight ROOT_MUL)
  1.7399  
  1.7400  lemma ROOT_INV: "ALL (n::nat) x::hollight.real.
  1.7401 -   real_le (real_of_num (0::nat)) x -->
  1.7402 +   real_le (real_of_num 0) x -->
  1.7403     root (Suc n) (real_inv x) = real_inv (root (Suc n) x)"
  1.7404    by (import hollight ROOT_INV)
  1.7405  
  1.7406  lemma ROOT_DIV: "ALL (x::nat) (xa::hollight.real) xb::hollight.real.
  1.7407 -   real_le (real_of_num (0::nat)) xa & real_le (real_of_num (0::nat)) xb -->
  1.7408 +   real_le (real_of_num 0) xa & real_le (real_of_num 0) xb -->
  1.7409     root (Suc x) (real_div xa xb) =
  1.7410     real_div (root (Suc x) xa) (root (Suc x) xb)"
  1.7411    by (import hollight ROOT_DIV)
  1.7412  
  1.7413  lemma ROOT_MONO_LT: "ALL (x::hollight.real) y::hollight.real.
  1.7414 -   real_le (real_of_num (0::nat)) x & real_lt x y -->
  1.7415 +   real_le (real_of_num 0) x & real_lt x y -->
  1.7416     real_lt (root (Suc (n::nat)) x) (root (Suc n) y)"
  1.7417    by (import hollight ROOT_MONO_LT)
  1.7418  
  1.7419  lemma ROOT_MONO_LE: "ALL (x::hollight.real) y::hollight.real.
  1.7420 -   real_le (real_of_num (0::nat)) x & real_le x y -->
  1.7421 +   real_le (real_of_num 0) x & real_le x y -->
  1.7422     real_le (root (Suc (n::nat)) x) (root (Suc n) y)"
  1.7423    by (import hollight ROOT_MONO_LE)
  1.7424  
  1.7425  lemma ROOT_MONO_LT_EQ: "ALL (x::hollight.real) y::hollight.real.
  1.7426 -   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) y -->
  1.7427 +   real_le (real_of_num 0) x & real_le (real_of_num 0) y -->
  1.7428     real_lt (root (Suc (n::nat)) x) (root (Suc n) y) = real_lt x y"
  1.7429    by (import hollight ROOT_MONO_LT_EQ)
  1.7430  
  1.7431  lemma ROOT_MONO_LE_EQ: "ALL (x::hollight.real) y::hollight.real.
  1.7432 -   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) y -->
  1.7433 +   real_le (real_of_num 0) x & real_le (real_of_num 0) y -->
  1.7434     real_le (root (Suc (n::nat)) x) (root (Suc n) y) = real_le x y"
  1.7435    by (import hollight ROOT_MONO_LE_EQ)
  1.7436  
  1.7437  lemma ROOT_INJ: "ALL (x::hollight.real) xa::hollight.real.
  1.7438 -   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) xa -->
  1.7439 +   real_le (real_of_num 0) x & real_le (real_of_num 0) xa -->
  1.7440     (root (Suc (n::nat)) x = root (Suc n) xa) = (x = xa)"
  1.7441    by (import hollight ROOT_INJ)
  1.7442  
  1.7443 -lemma SQRT_0: "sqrt (real_of_num (0::nat)) = real_of_num (0::nat)"
  1.7444 +lemma SQRT_0: "sqrt (real_of_num 0) = real_of_num 0"
  1.7445    by (import hollight SQRT_0)
  1.7446  
  1.7447 -lemma SQRT_1: "sqrt (real_of_num (NUMERAL_BIT1 (0::nat))) =
  1.7448 -real_of_num (NUMERAL_BIT1 (0::nat))"
  1.7449 +lemma SQRT_1: "sqrt (real_of_num (NUMERAL_BIT1 0)) = real_of_num (NUMERAL_BIT1 0)"
  1.7450    by (import hollight SQRT_1)
  1.7451  
  1.7452  lemma SQRT_POS_LT: "ALL x::hollight.real.
  1.7453 -   real_lt (real_of_num (0::nat)) x -->
  1.7454 -   real_lt (real_of_num (0::nat)) (sqrt x)"
  1.7455 +   real_lt (real_of_num 0) x --> real_lt (real_of_num 0) (sqrt x)"
  1.7456    by (import hollight SQRT_POS_LT)
  1.7457  
  1.7458  lemma SQRT_POS_LE: "ALL x::hollight.real.
  1.7459 -   real_le (real_of_num (0::nat)) x -->
  1.7460 -   real_le (real_of_num (0::nat)) (sqrt x)"
  1.7461 +   real_le (real_of_num 0) x --> real_le (real_of_num 0) (sqrt x)"
  1.7462    by (import hollight SQRT_POS_LE)
  1.7463  
  1.7464  lemma SQRT_POW2: "ALL x::hollight.real.
  1.7465 -   (real_pow (sqrt x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = x) =
  1.7466 -   real_le (real_of_num (0::nat)) x"
  1.7467 +   (real_pow (sqrt x) (NUMERAL_BIT0 (NUMERAL_BIT1 0)) = x) =
  1.7468 +   real_le (real_of_num 0) x"
  1.7469    by (import hollight SQRT_POW2)
  1.7470  
  1.7471  lemma SQRT_POW_2: "ALL x::hollight.real.
  1.7472 -   real_le (real_of_num (0::nat)) x -->
  1.7473 -   real_pow (sqrt x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = x"
  1.7474 +   real_le (real_of_num 0) x -->
  1.7475 +   real_pow (sqrt x) (NUMERAL_BIT0 (NUMERAL_BIT1 0)) = x"
  1.7476    by (import hollight SQRT_POW_2)
  1.7477  
  1.7478 -lemma POW_2_SQRT: "real_le (real_of_num (0::nat)) (x::hollight.real) -->
  1.7479 -sqrt (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) = x"
  1.7480 +lemma POW_2_SQRT: "real_le (real_of_num 0) (x::hollight.real) -->
  1.7481 +sqrt (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 0))) = x"
  1.7482    by (import hollight POW_2_SQRT)
  1.7483  
  1.7484  lemma SQRT_POS_UNIQ: "ALL (x::hollight.real) xa::hollight.real.
  1.7485 -   real_le (real_of_num (0::nat)) x &
  1.7486 -   real_le (real_of_num (0::nat)) xa &
  1.7487 -   real_pow xa (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))) = x -->
  1.7488 +   real_le (real_of_num 0) x &
  1.7489 +   real_le (real_of_num 0) xa &
  1.7490 +   real_pow xa (NUMERAL_BIT0 (NUMERAL_BIT1 0)) = x -->
  1.7491     sqrt x = xa"
  1.7492    by (import hollight SQRT_POS_UNIQ)
  1.7493  
  1.7494  lemma SQRT_MUL: "ALL (x::hollight.real) xa::hollight.real.
  1.7495 -   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) xa -->
  1.7496 +   real_le (real_of_num 0) x & real_le (real_of_num 0) xa -->
  1.7497     sqrt (real_mul x xa) = real_mul (sqrt x) (sqrt xa)"
  1.7498    by (import hollight SQRT_MUL)
  1.7499  
  1.7500  lemma SQRT_INV: "ALL x::hollight.real.
  1.7501 -   real_le (real_of_num (0::nat)) x -->
  1.7502 -   sqrt (real_inv x) = real_inv (sqrt x)"
  1.7503 +   real_le (real_of_num 0) x --> sqrt (real_inv x) = real_inv (sqrt x)"
  1.7504    by (import hollight SQRT_INV)
  1.7505  
  1.7506  lemma SQRT_DIV: "ALL (x::hollight.real) xa::hollight.real.
  1.7507 -   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) xa -->
  1.7508 +   real_le (real_of_num 0) x & real_le (real_of_num 0) xa -->
  1.7509     sqrt (real_div x xa) = real_div (sqrt x) (sqrt xa)"
  1.7510    by (import hollight SQRT_DIV)
  1.7511  
  1.7512  lemma SQRT_MONO_LT: "ALL (x::hollight.real) xa::hollight.real.
  1.7513 -   real_le (real_of_num (0::nat)) x & real_lt x xa -->
  1.7514 -   real_lt (sqrt x) (sqrt xa)"
  1.7515 +   real_le (real_of_num 0) x & real_lt x xa --> real_lt (sqrt x) (sqrt xa)"
  1.7516    by (import hollight SQRT_MONO_LT)
  1.7517  
  1.7518  lemma SQRT_MONO_LE: "ALL (x::hollight.real) xa::hollight.real.
  1.7519 -   real_le (real_of_num (0::nat)) x & real_le x xa -->
  1.7520 -   real_le (sqrt x) (sqrt xa)"
  1.7521 +   real_le (real_of_num 0) x & real_le x xa --> real_le (sqrt x) (sqrt xa)"
  1.7522    by (import hollight SQRT_MONO_LE)
  1.7523  
  1.7524  lemma SQRT_MONO_LT_EQ: "ALL (x::hollight.real) xa::hollight.real.
  1.7525 -   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) xa -->
  1.7526 +   real_le (real_of_num 0) x & real_le (real_of_num 0) xa -->
  1.7527     real_lt (sqrt x) (sqrt xa) = real_lt x xa"
  1.7528    by (import hollight SQRT_MONO_LT_EQ)
  1.7529  
  1.7530  lemma SQRT_MONO_LE_EQ: "ALL (x::hollight.real) xa::hollight.real.
  1.7531 -   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) xa -->
  1.7532 +   real_le (real_of_num 0) x & real_le (real_of_num 0) xa -->
  1.7533     real_le (sqrt x) (sqrt xa) = real_le x xa"
  1.7534    by (import hollight SQRT_MONO_LE_EQ)
  1.7535  
  1.7536  lemma SQRT_INJ: "ALL (x::hollight.real) xa::hollight.real.
  1.7537 -   real_le (real_of_num (0::nat)) x & real_le (real_of_num (0::nat)) xa -->
  1.7538 +   real_le (real_of_num 0) x & real_le (real_of_num 0) xa -->
  1.7539     (sqrt x = sqrt xa) = (x = xa)"
  1.7540    by (import hollight SQRT_INJ)
  1.7541  
  1.7542  lemma SQRT_EVEN_POW2: "ALL n::nat.
  1.7543     EVEN n -->
  1.7544 -   sqrt (real_pow (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) n) =
  1.7545 -   real_pow (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
  1.7546 -    (DIV n (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))"
  1.7547 +   sqrt (real_pow (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) n) =
  1.7548 +   real_pow (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))
  1.7549 +    (DIV n (NUMERAL_BIT0 (NUMERAL_BIT1 0)))"
  1.7550    by (import hollight SQRT_EVEN_POW2)
  1.7551  
  1.7552  lemma REAL_DIV_SQRT: "ALL x::hollight.real.
  1.7553 -   real_le (real_of_num (0::nat)) x --> real_div x (sqrt x) = sqrt x"
  1.7554 +   real_le (real_of_num 0) x --> real_div x (sqrt x) = sqrt x"
  1.7555    by (import hollight REAL_DIV_SQRT)
  1.7556  
  1.7557  lemma POW_2_SQRT_ABS: "ALL x::hollight.real.
  1.7558 -   sqrt (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) = real_abs x"
  1.7559 +   sqrt (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 0))) = real_abs x"
  1.7560    by (import hollight POW_2_SQRT_ABS)
  1.7561  
  1.7562  lemma SQRT_EQ_0: "ALL x::hollight.real.
  1.7563 -   real_le (real_of_num (0::nat)) x -->
  1.7564 -   (sqrt x = real_of_num (0::nat)) = (x = real_of_num (0::nat))"
  1.7565 +   real_le (real_of_num 0) x -->
  1.7566 +   (sqrt x = real_of_num 0) = (x = real_of_num 0)"
  1.7567    by (import hollight SQRT_EQ_0)
  1.7568  
  1.7569  lemma REAL_LE_LSQRT: "ALL (x::hollight.real) y::hollight.real.
  1.7570 -   real_le (real_of_num (0::nat)) x &
  1.7571 -   real_le (real_of_num (0::nat)) y &
  1.7572 -   real_le x (real_pow y (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) -->
  1.7573 +   real_le (real_of_num 0) x &
  1.7574 +   real_le (real_of_num 0) y &
  1.7575 +   real_le x (real_pow y (NUMERAL_BIT0 (NUMERAL_BIT1 0))) -->
  1.7576     real_le (sqrt x) y"
  1.7577    by (import hollight REAL_LE_LSQRT)
  1.7578  
  1.7579  lemma REAL_LE_POW_2: "ALL x::hollight.real.
  1.7580 -   real_le (real_of_num (0::nat))
  1.7581 -    (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))"
  1.7582 +   real_le (real_of_num 0) (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 0)))"
  1.7583    by (import hollight REAL_LE_POW_2)
  1.7584  
  1.7585  lemma REAL_LE_RSQRT: "ALL (x::hollight.real) y::hollight.real.
  1.7586 -   real_le (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) y -->
  1.7587 +   real_le (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 0))) y -->
  1.7588     real_le x (sqrt y)"
  1.7589    by (import hollight REAL_LE_RSQRT)
  1.7590  
  1.7591 -lemma SIN_0: "sin (real_of_num (0::nat)) = real_of_num (0::nat)"
  1.7592 +lemma SIN_0: "sin (real_of_num 0) = real_of_num 0"
  1.7593    by (import hollight SIN_0)
  1.7594  
  1.7595 -lemma COS_0: "cos (real_of_num (0::nat)) = real_of_num (NUMERAL_BIT1 (0::nat))"
  1.7596 +lemma COS_0: "cos (real_of_num 0) = real_of_num (NUMERAL_BIT1 0)"
  1.7597    by (import hollight COS_0)
  1.7598  
  1.7599  lemma SIN_CIRCLE: "ALL x::hollight.real.
  1.7600 -   real_add (real_pow (sin x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
  1.7601 -    (real_pow (cos x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) =
  1.7602 -   real_of_num (NUMERAL_BIT1 (0::nat))"
  1.7603 +   real_add (real_pow (sin x) (NUMERAL_BIT0 (NUMERAL_BIT1 0)))
  1.7604 +    (real_pow (cos x) (NUMERAL_BIT0 (NUMERAL_BIT1 0))) =
  1.7605 +   real_of_num (NUMERAL_BIT1 0)"
  1.7606    by (import hollight SIN_CIRCLE)
  1.7607  
  1.7608  lemma SIN_BOUND: "ALL x::hollight.real.
  1.7609 -   real_le (real_abs (sin x)) (real_of_num (NUMERAL_BIT1 (0::nat)))"
  1.7610 +   real_le (real_abs (sin x)) (real_of_num (NUMERAL_BIT1 0))"
  1.7611    by (import hollight SIN_BOUND)
  1.7612  
  1.7613  lemma SIN_BOUNDS: "ALL x::hollight.real.
  1.7614 -   real_le (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) (sin x) &
  1.7615 -   real_le (sin x) (real_of_num (NUMERAL_BIT1 (0::nat)))"
  1.7616 +   real_le (real_neg (real_of_num (NUMERAL_BIT1 0))) (sin x) &
  1.7617 +   real_le (sin x) (real_of_num (NUMERAL_BIT1 0))"
  1.7618    by (import hollight SIN_BOUNDS)
  1.7619  
  1.7620  lemma COS_BOUND: "ALL x::hollight.real.
  1.7621 -   real_le (real_abs (cos x)) (real_of_num (NUMERAL_BIT1 (0::nat)))"
  1.7622 +   real_le (real_abs (cos x)) (real_of_num (NUMERAL_BIT1 0))"
  1.7623    by (import hollight COS_BOUND)
  1.7624  
  1.7625  lemma COS_BOUNDS: "ALL x::hollight.real.
  1.7626 -   real_le (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) (cos x) &
  1.7627 -   real_le (cos x) (real_of_num (NUMERAL_BIT1 (0::nat)))"
  1.7628 +   real_le (real_neg (real_of_num (NUMERAL_BIT1 0))) (cos x) &
  1.7629 +   real_le (cos x) (real_of_num (NUMERAL_BIT1 0))"
  1.7630    by (import hollight COS_BOUNDS)
  1.7631  
  1.7632  lemma SIN_COS_ADD: "ALL (x::hollight.real) y::hollight.real.
  1.7633 @@ -12428,21 +12667,21 @@
  1.7634      (real_pow
  1.7635        (real_sub (sin (real_add x y))
  1.7636          (real_add (real_mul (sin x) (cos y)) (real_mul (cos x) (sin y))))
  1.7637 -      (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
  1.7638 +      (NUMERAL_BIT0 (NUMERAL_BIT1 0)))
  1.7639      (real_pow
  1.7640        (real_sub (cos (real_add x y))
  1.7641          (real_sub (real_mul (cos x) (cos y)) (real_mul (sin x) (sin y))))
  1.7642 -      (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) =
  1.7643 -   real_of_num (0::nat)"
  1.7644 +      (NUMERAL_BIT0 (NUMERAL_BIT1 0))) =
  1.7645 +   real_of_num 0"
  1.7646    by (import hollight SIN_COS_ADD)
  1.7647  
  1.7648  lemma SIN_COS_NEG: "ALL x::hollight.real.
  1.7649     real_add
  1.7650      (real_pow (real_add (sin (real_neg x)) (sin x))
  1.7651 -      (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
  1.7652 +      (NUMERAL_BIT0 (NUMERAL_BIT1 0)))
  1.7653      (real_pow (real_sub (cos (real_neg x)) (cos x))
  1.7654 -      (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) =
  1.7655 -   real_of_num (0::nat)"
  1.7656 +      (NUMERAL_BIT0 (NUMERAL_BIT1 0))) =
  1.7657 +   real_of_num 0"
  1.7658    by (import hollight SIN_COS_NEG)
  1.7659  
  1.7660  lemma SIN_ADD: "ALL (x::hollight.real) y::hollight.real.
  1.7661 @@ -12462,15 +12701,15 @@
  1.7662    by (import hollight COS_NEG)
  1.7663  
  1.7664  lemma SIN_DOUBLE: "ALL x::hollight.real.
  1.7665 -   sin (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) x) =
  1.7666 -   real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
  1.7667 +   sin (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) x) =
  1.7668 +   real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))
  1.7669      (real_mul (sin x) (cos x))"
  1.7670    by (import hollight SIN_DOUBLE)
  1.7671  
  1.7672  lemma COS_DOUBLE: "ALL x::hollight.real.
  1.7673 -   cos (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) x) =
  1.7674 -   real_sub (real_pow (cos x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
  1.7675 -    (real_pow (sin x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))"
  1.7676 +   cos (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) x) =
  1.7677 +   real_sub (real_pow (cos x) (NUMERAL_BIT0 (NUMERAL_BIT1 0)))
  1.7678 +    (real_pow (sin x) (NUMERAL_BIT0 (NUMERAL_BIT1 0)))"
  1.7679    by (import hollight COS_DOUBLE)
  1.7680  
  1.7681  lemma COS_ABS: "ALL x::hollight.real. cos (real_abs x) = cos x"
  1.7682 @@ -12480,103 +12719,94 @@
  1.7683     sums
  1.7684      (%n::nat.
  1.7685          real_mul
  1.7686 -         (real_div
  1.7687 -           (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) n)
  1.7688 +         (real_div (real_pow (real_neg (real_of_num (NUMERAL_BIT1 0))) n)
  1.7689             (real_of_num
  1.7690 -             (FACT
  1.7691 -               (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * n +
  1.7692 -                NUMERAL_BIT1 (0::nat)))))
  1.7693 -         (real_pow x
  1.7694 -           (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * n +
  1.7695 -            NUMERAL_BIT1 (0::nat))))
  1.7696 +             (FACT (NUMERAL_BIT0 (NUMERAL_BIT1 0) * n + NUMERAL_BIT1 0))))
  1.7697 +         (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 0) * n + NUMERAL_BIT1 0)))
  1.7698      (sin x)"
  1.7699    by (import hollight SIN_PAIRED)
  1.7700  
  1.7701  lemma SIN_POS: "ALL x::hollight.real.
  1.7702 -   real_lt (real_of_num (0::nat)) x &
  1.7703 -   real_lt x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) -->
  1.7704 -   real_lt (real_of_num (0::nat)) (sin x)"
  1.7705 +   real_lt (real_of_num 0) x &
  1.7706 +   real_lt x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) -->
  1.7707 +   real_lt (real_of_num 0) (sin x)"
  1.7708    by (import hollight SIN_POS)
  1.7709  
  1.7710  lemma COS_PAIRED: "ALL x::hollight.real.
  1.7711     sums
  1.7712      (%n::nat.
  1.7713          real_mul
  1.7714 -         (real_div
  1.7715 -           (real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) n)
  1.7716 -           (real_of_num (FACT (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * n))))
  1.7717 -         (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)) * n)))
  1.7718 +         (real_div (real_pow (real_neg (real_of_num (NUMERAL_BIT1 0))) n)
  1.7719 +           (real_of_num (FACT (NUMERAL_BIT0 (NUMERAL_BIT1 0) * n))))
  1.7720 +         (real_pow x (NUMERAL_BIT0 (NUMERAL_BIT1 0) * n)))
  1.7721      (cos x)"
  1.7722    by (import hollight COS_PAIRED)
  1.7723  
  1.7724 -lemma COS_2: "real_lt (cos (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.7725 - (real_of_num (0::nat))"
  1.7726 +lemma COS_2: "real_lt (cos (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))) (real_of_num 0)"
  1.7727    by (import hollight COS_2)
  1.7728  
  1.7729  lemma COS_ISZERO: "EX! x::hollight.real.
  1.7730 -   real_le (real_of_num (0::nat)) x &
  1.7731 -   real_le x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) &
  1.7732 -   cos x = real_of_num (0::nat)"
  1.7733 +   real_le (real_of_num 0) x &
  1.7734 +   real_le x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) &
  1.7735 +   cos x = real_of_num 0"
  1.7736    by (import hollight COS_ISZERO)
  1.7737  
  1.7738  constdefs
  1.7739    pi :: "hollight.real" 
  1.7740    "pi ==
  1.7741 -real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
  1.7742 +real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))
  1.7743   (SOME x::hollight.real.
  1.7744 -     real_le (real_of_num (0::nat)) x &
  1.7745 -     real_le x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) &
  1.7746 -     cos x = real_of_num (0::nat))"
  1.7747 +     real_le (real_of_num 0) x &
  1.7748 +     real_le x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) &
  1.7749 +     cos x = real_of_num 0)"
  1.7750  
  1.7751  lemma DEF_pi: "pi =
  1.7752 -real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
  1.7753 +real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))
  1.7754   (SOME x::hollight.real.
  1.7755 -     real_le (real_of_num (0::nat)) x &
  1.7756 -     real_le x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) &
  1.7757 -     cos x = real_of_num (0::nat))"
  1.7758 +     real_le (real_of_num 0) x &
  1.7759 +     real_le x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) &
  1.7760 +     cos x = real_of_num 0)"
  1.7761    by (import hollight DEF_pi)
  1.7762  
  1.7763 -lemma PI2: "real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) =
  1.7764 +lemma PI2: "real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) =
  1.7765  (SOME x::hollight.real.
  1.7766 -    real_le (real_of_num (0::nat)) x &
  1.7767 -    real_le x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) &
  1.7768 -    cos x = real_of_num (0::nat))"
  1.7769 +    real_le (real_of_num 0) x &
  1.7770 +    real_le x (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) &
  1.7771 +    cos x = real_of_num 0)"
  1.7772    by (import hollight PI2)
  1.7773  
  1.7774 -lemma COS_PI2: "cos (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) =
  1.7775 -real_of_num (0::nat)"
  1.7776 +lemma COS_PI2: "cos (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))) =
  1.7777 +real_of_num 0"
  1.7778    by (import hollight COS_PI2)
  1.7779  
  1.7780 -lemma PI2_BOUNDS: "real_lt (real_of_num (0::nat))
  1.7781 - (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) &
  1.7782 -real_lt (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.7783 - (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))"
  1.7784 +lemma PI2_BOUNDS: "real_lt (real_of_num 0)
  1.7785 + (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))) &
  1.7786 +real_lt (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))))
  1.7787 + (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))"
  1.7788    by (import hollight PI2_BOUNDS)
  1.7789  
  1.7790 -lemma PI_POS: "real_lt (real_of_num (0::nat)) pi"
  1.7791 +lemma PI_POS: "real_lt (real_of_num 0) pi"
  1.7792    by (import hollight PI_POS)
  1.7793  
  1.7794 -lemma SIN_PI2: "sin (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) =
  1.7795 -real_of_num (NUMERAL_BIT1 (0::nat))"
  1.7796 +lemma SIN_PI2: "sin (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))) =
  1.7797 +real_of_num (NUMERAL_BIT1 0)"
  1.7798    by (import hollight SIN_PI2)
  1.7799  
  1.7800 -lemma COS_PI: "cos pi = real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))"
  1.7801 +lemma COS_PI: "cos pi = real_neg (real_of_num (NUMERAL_BIT1 0))"
  1.7802    by (import hollight COS_PI)
  1.7803  
  1.7804 -lemma SIN_PI: "sin pi = real_of_num (0::nat)"
  1.7805 +lemma SIN_PI: "sin pi = real_of_num 0"
  1.7806    by (import hollight SIN_PI)
  1.7807  
  1.7808  lemma SIN_COS: "ALL x::hollight.real.
  1.7809     sin x =
  1.7810 -   cos (real_sub
  1.7811 -         (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.7812 +   cos (real_sub (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))))
  1.7813           x)"
  1.7814    by (import hollight SIN_COS)
  1.7815  
  1.7816  lemma COS_SIN: "ALL x::hollight.real.
  1.7817     cos x =
  1.7818 -   sin (real_sub
  1.7819 -         (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.7820 +   sin (real_sub (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))))
  1.7821           x)"
  1.7822    by (import hollight COS_SIN)
  1.7823  
  1.7824 @@ -12588,152 +12818,139 @@
  1.7825  
  1.7826  lemma SIN_PERIODIC: "ALL x::hollight.real.
  1.7827     sin (real_add x
  1.7828 -         (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
  1.7829 -           pi)) =
  1.7830 +         (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) pi)) =
  1.7831     sin x"
  1.7832    by (import hollight SIN_PERIODIC)
  1.7833  
  1.7834  lemma COS_PERIODIC: "ALL x::hollight.real.
  1.7835     cos (real_add x
  1.7836 -         (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
  1.7837 -           pi)) =
  1.7838 +         (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) pi)) =
  1.7839     cos x"
  1.7840    by (import hollight COS_PERIODIC)
  1.7841  
  1.7842  lemma COS_NPI: "ALL n::nat.
  1.7843     cos (real_mul (real_of_num n) pi) =
  1.7844 -   real_pow (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) n"
  1.7845 +   real_pow (real_neg (real_of_num (NUMERAL_BIT1 0))) n"
  1.7846    by (import hollight COS_NPI)
  1.7847  
  1.7848 -lemma SIN_NPI: "ALL n::nat. sin (real_mul (real_of_num n) pi) = real_of_num (0::nat)"
  1.7849 +lemma SIN_NPI: "ALL n::nat. sin (real_mul (real_of_num n) pi) = real_of_num 0"
  1.7850    by (import hollight SIN_NPI)
  1.7851  
  1.7852  lemma SIN_POS_PI2: "ALL x::hollight.real.
  1.7853 -   real_lt (real_of_num (0::nat)) x &
  1.7854 -   real_lt x
  1.7855 -    (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) -->
  1.7856 -   real_lt (real_of_num (0::nat)) (sin x)"
  1.7857 +   real_lt (real_of_num 0) x &
  1.7858 +   real_lt x (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))) -->
  1.7859 +   real_lt (real_of_num 0) (sin x)"
  1.7860    by (import hollight SIN_POS_PI2)
  1.7861  
  1.7862  lemma COS_POS_PI2: "ALL x::hollight.real.
  1.7863 -   real_lt (real_of_num (0::nat)) x &
  1.7864 -   real_lt x
  1.7865 -    (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) -->
  1.7866 -   real_lt (real_of_num (0::nat)) (cos x)"
  1.7867 +   real_lt (real_of_num 0) x &
  1.7868 +   real_lt x (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))) -->
  1.7869 +   real_lt (real_of_num 0) (cos x)"
  1.7870    by (import hollight COS_POS_PI2)
  1.7871  
  1.7872  lemma COS_POS_PI: "ALL x::hollight.real.
  1.7873     real_lt
  1.7874 -    (real_neg
  1.7875 -      (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
  1.7876 +    (real_neg (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))))
  1.7877      x &
  1.7878 -   real_lt x
  1.7879 -    (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) -->
  1.7880 -   real_lt (real_of_num (0::nat)) (cos x)"
  1.7881 +   real_lt x (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))) -->
  1.7882 +   real_lt (real_of_num 0) (cos x)"
  1.7883    by (import hollight COS_POS_PI)
  1.7884  
  1.7885  lemma SIN_POS_PI: "ALL x::hollight.real.
  1.7886 -   real_lt (real_of_num (0::nat)) x & real_lt x pi -->
  1.7887 -   real_lt (real_of_num (0::nat)) (sin x)"
  1.7888 +   real_lt (real_of_num 0) x & real_lt x pi -->
  1.7889 +   real_lt (real_of_num 0) (sin x)"
  1.7890    by (import hollight SIN_POS_PI)
  1.7891  
  1.7892  lemma SIN_POS_PI_LE: "ALL x::hollight.real.
  1.7893 -   real_le (real_of_num (0::nat)) x & real_le x pi -->
  1.7894 -   real_le (real_of_num (0::nat)) (sin x)"
  1.7895 +   real_le (real_of_num 0) x & real_le x pi -->
  1.7896 +   real_le (real_of_num 0) (sin x)"
  1.7897    by (import hollight SIN_POS_PI_LE)
  1.7898  
  1.7899  lemma COS_TOTAL: "ALL y::hollight.real.
  1.7900 -   real_le (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) y &
  1.7901 -   real_le y (real_of_num (NUMERAL_BIT1 (0::nat))) -->
  1.7902 +   real_le (real_neg (real_of_num (NUMERAL_BIT1 0))) y &
  1.7903 +   real_le y (real_of_num (NUMERAL_BIT1 0)) -->
  1.7904     (EX! x::hollight.real.
  1.7905 -       real_le (real_of_num (0::nat)) x & real_le x pi & cos x = y)"
  1.7906 +       real_le (real_of_num 0) x & real_le x pi & cos x = y)"
  1.7907    by (import hollight COS_TOTAL)
  1.7908  
  1.7909  lemma SIN_TOTAL: "ALL y::hollight.real.
  1.7910 -   real_le (real_neg (real_of_num (NUMERAL_BIT1 (0::nat)))) y &
  1.7911 -   real_le y (real_of_num (NUMERAL_BIT1 (0::nat))) -->
  1.7912 +   real_le (real_neg (real_of_num (NUMERAL_BIT1 0))) y &
  1.7913 +   real_le y (real_of_num (NUMERAL_BIT1 0)) -->
  1.7914     (EX! x::hollight.real.
  1.7915         real_le
  1.7916          (real_neg
  1.7917 -          (real_div pi
  1.7918 -            (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))
  1.7919 +          (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))))
  1.7920          x &
  1.7921         real_le x
  1.7922 -        (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) &
  1.7923 +        (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))) &
  1.7924         sin x = y)"
  1.7925    by (import hollight SIN_TOTAL)
  1.7926  
  1.7927  lemma COS_ZERO_LEMMA: "ALL x::hollight.real.
  1.7928 -   real_le (real_of_num (0::nat)) x & cos x = real_of_num (0::nat) -->
  1.7929 +   real_le (real_of_num 0) x & cos x = real_of_num 0 -->
  1.7930     (EX n::nat.
  1.7931         ~ EVEN n &
  1.7932         x =
  1.7933         real_mul (real_of_num n)
  1.7934 -        (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))"
  1.7935 +        (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))))"
  1.7936    by (import hollight COS_ZERO_LEMMA)
  1.7937  
  1.7938  lemma SIN_ZERO_LEMMA: "ALL x::hollight.real.
  1.7939 -   real_le (real_of_num (0::nat)) x & sin x = real_of_num (0::nat) -->
  1.7940 +   real_le (real_of_num 0) x & sin x = real_of_num 0 -->
  1.7941     (EX n::nat.
  1.7942         EVEN n &
  1.7943         x =
  1.7944         real_mul (real_of_num n)
  1.7945 -        (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))"
  1.7946 +        (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))))"
  1.7947    by (import hollight SIN_ZERO_LEMMA)
  1.7948  
  1.7949  lemma COS_ZERO: "ALL x::hollight.real.
  1.7950 -   (cos x = real_of_num (0::nat)) =
  1.7951 +   (cos x = real_of_num 0) =
  1.7952     ((EX n::nat.
  1.7953          ~ EVEN n &
  1.7954          x =
  1.7955          real_mul (real_of_num n)
  1.7956 -         (real_div pi
  1.7957 -           (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))) |
  1.7958 +         (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))))) |
  1.7959      (EX n::nat.
  1.7960          ~ EVEN n &
  1.7961          x =
  1.7962          real_neg
  1.7963           (real_mul (real_of_num n)
  1.7964 -           (real_div pi
  1.7965 -             (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))))"
  1.7966 +           (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))))))"
  1.7967    by (import hollight COS_ZERO)
  1.7968  
  1.7969  lemma SIN_ZERO: "ALL x::hollight.real.
  1.7970 -   (sin x = real_of_num (0::nat)) =
  1.7971 +   (sin x = real_of_num 0) =
  1.7972     ((EX n::nat.
  1.7973          EVEN n &
  1.7974          x =
  1.7975          real_mul (real_of_num n)
  1.7976 -         (real_div pi
  1.7977 -           (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))) |
  1.7978 +         (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))))) |
  1.7979      (EX n::nat.
  1.7980          EVEN n &
  1.7981          x =
  1.7982          real_neg
  1.7983           (real_mul (real_of_num n)
  1.7984 -           (real_div pi
  1.7985 -             (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))))))"
  1.7986 +           (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))))))"
  1.7987    by (import hollight SIN_ZERO)
  1.7988  
  1.7989  lemma SIN_ZERO_PI: "ALL x::hollight.real.
  1.7990 -   (sin x = real_of_num (0::nat)) =
  1.7991 +   (sin x = real_of_num 0) =
  1.7992     ((EX n::nat. x = real_mul (real_of_num n) pi) |
  1.7993      (EX n::nat. x = real_neg (real_mul (real_of_num n) pi)))"
  1.7994    by (import hollight SIN_ZERO_PI)
  1.7995  
  1.7996  lemma COS_ONE_2PI: "ALL x::hollight.real.
  1.7997 -   (cos x = real_of_num (NUMERAL_BIT1 (0::nat))) =
  1.7998 +   (cos x = real_of_num (NUMERAL_BIT1 0)) =
  1.7999     ((EX n::nat.
  1.8000          x =
  1.8001          real_mul (real_of_num n)
  1.8002 -         (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
  1.8003 -           pi)) |
  1.8004 +         (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) pi)) |
  1.8005      (EX n::nat.
  1.8006          x =
  1.8007          real_neg
  1.8008           (real_mul (real_of_num n)
  1.8009 -           (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
  1.8010 -             pi))))"
  1.8011 +           (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) pi))))"
  1.8012    by (import hollight COS_ONE_2PI)
  1.8013  
  1.8014  constdefs
  1.8015 @@ -12743,13 +12960,13 @@
  1.8016  lemma DEF_tan: "tan = (%u::hollight.real. real_div (sin u) (cos u))"
  1.8017    by (import hollight DEF_tan)
  1.8018  
  1.8019 -lemma TAN_0: "tan (real_of_num (0::nat)) = real_of_num (0::nat)"
  1.8020 +lemma TAN_0: "tan (real_of_num 0) = real_of_num 0"
  1.8021    by (import hollight TAN_0)
  1.8022  
  1.8023 -lemma TAN_PI: "tan pi = real_of_num (0::nat)"
  1.8024 +lemma TAN_PI: "tan pi = real_of_num 0"
  1.8025    by (import hollight TAN_PI)
  1.8026  
  1.8027 -lemma TAN_NPI: "ALL n::nat. tan (real_mul (real_of_num n) pi) = real_of_num (0::nat)"
  1.8028 +lemma TAN_NPI: "ALL n::nat. tan (real_mul (real_of_num n) pi) = real_of_num 0"
  1.8029    by (import hollight TAN_NPI)
  1.8030  
  1.8031  lemma TAN_NEG: "ALL x::hollight.real. tan (real_neg x) = real_neg (tan x)"
  1.8032 @@ -12757,8 +12974,7 @@
  1.8033  
  1.8034  lemma TAN_PERIODIC: "ALL x::hollight.real.
  1.8035     tan (real_add x
  1.8036 -         (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))
  1.8037 -           pi)) =
  1.8038 +         (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) pi)) =
  1.8039     tan x"
  1.8040    by (import hollight TAN_PERIODIC)
  1.8041  
  1.8042 @@ -12770,64 +12986,58 @@
  1.8043    by (import hollight TAN_PERIODIC_NPI)
  1.8044  
  1.8045  lemma TAN_ADD: "ALL (x::hollight.real) y::hollight.real.
  1.8046 -   cos x ~= real_of_num (0::nat) &
  1.8047 -   cos y ~= real_of_num (0::nat) &
  1.8048 -   cos (real_add x y) ~= real_of_num (0::nat) -->
  1.8049 +   cos x ~= real_of_num 0 &
  1.8050 +   cos y ~= real_of_num 0 & cos (real_add x y) ~= real_of_num 0 -->
  1.8051     tan (real_add x y) =
  1.8052     real_div (real_add (tan x) (tan y))
  1.8053 -    (real_sub (real_of_num (NUMERAL_BIT1 (0::nat)))
  1.8054 -      (real_mul (tan x) (tan y)))"
  1.8055 +    (real_sub (real_of_num (NUMERAL_BIT1 0)) (real_mul (tan x) (tan y)))"
  1.8056    by (import hollight TAN_ADD)
  1.8057  
  1.8058  lemma TAN_DOUBLE: "ALL x::hollight.real.
  1.8059 -   cos x ~= real_of_num (0::nat) &
  1.8060 -   cos (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) x) ~=
  1.8061 -   real_of_num (0::nat) -->
  1.8062 -   tan (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) x) =
  1.8063 -   real_div
  1.8064 -    (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))) (tan x))
  1.8065 -    (real_sub (real_of_num (NUMERAL_BIT1 (0::nat)))
  1.8066 -      (real_pow (tan x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))"
  1.8067 +   cos x ~= real_of_num 0 &
  1.8068 +   cos (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) x) ~=
  1.8069 +   real_of_num 0 -->
  1.8070 +   tan (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) x) =
  1.8071 +   real_div (real_mul (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0))) (tan x))
  1.8072 +    (real_sub (real_of_num (NUMERAL_BIT1 0))
  1.8073 +      (real_pow (tan x) (NUMERAL_BIT0 (NUMERAL_BIT1 0))))"
  1.8074    by (import hollight TAN_DOUBLE)
  1.8075  
  1.8076  lemma TAN_POS_PI2: "ALL x::hollight.real.
  1.8077 -   real_lt (real_of_num (0::nat)) x &
  1.8078 -   real_lt x
  1.8079 -    (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) -->
  1.8080 -   real_lt (real_of_num (0::nat)) (tan x)"
  1.8081 +   real_lt (real_of_num 0) x &
  1.8082 +   real_lt x (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))) -->
  1.8083 +   real_lt (real_of_num 0) (tan x)"
  1.8084    by (import hollight TAN_POS_PI2)
  1.8085  
  1.8086  lemma DIFF_TAN: "ALL x::hollight.real.
  1.8087 -   cos x ~= real_of_num (0::nat) -->
  1.8088 -   diffl tan
  1.8089 -    (real_inv (real_pow (cos x) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) x"
  1.8090 +   cos x ~= real_of_num 0 -->
  1.8091 +   diffl tan (real_inv (real_pow (cos x) (NUMERAL_BIT0 (NUMERAL_BIT1 0)))) x"
  1.8092    by (import hollight DIFF_TAN)
  1.8093  
  1.8094  lemma DIFF_TAN_COMPOSITE: "diffl (g::hollight.real => hollight.real) (m::hollight.real)
  1.8095   (x::hollight.real) &
  1.8096 -cos (g x) ~= real_of_num (0::nat) -->
  1.8097 +cos (g x) ~= real_of_num 0 -->
  1.8098  diffl (%x::hollight.real. tan (g x))
  1.8099 - (real_mul
  1.8100 -   (real_inv (real_pow (cos (g x)) (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat)))))
  1.8101 + (real_mul (real_inv (real_pow (cos (g x)) (NUMERAL_BIT0 (NUMERAL_BIT1 0))))
  1.8102     m)
  1.8103   x"
  1.8104    by (import hollight DIFF_TAN_COMPOSITE)
  1.8105  
  1.8106  lemma TAN_TOTAL_LEMMA: "ALL y::hollight.real.
  1.8107 -   real_lt (real_of_num (0::nat)) y -->
  1.8108 +   real_lt (real_of_num 0) y -->
  1.8109     (EX x::hollight.real.
  1.8110 -       real_lt (real_of_num (0::nat)) x &
  1.8111 +       real_lt (real_of_num 0) x &
  1.8112         real_lt x
  1.8113 -        (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) &
  1.8114 +        (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 0)))) &
  1.8115         real_lt y (tan x))"
  1.8116    by (import hollight TAN_TOTAL_LEMMA)
  1.8117  
  1.8118  lemma TAN_TOTAL_POS: "ALL y::hollight.real.
  1.8119 -   real_le (real_of_num (0::nat)) y -->
  1.8120 +   real_le (real_of_num 0) y -->
  1.8121     (EX x::hollight.real.
  1.8122 -       real_le (real_of_num (0::nat)) x &
  1.8123 +       real_le (real_of_num 0) x &
  1.8124         real_lt x
  1.8125 -        (real_div pi (real_of_num (NUMERAL_BIT0 (NUMERAL_BIT1 (0::nat))))) &