--- a/src/HOL/Import/Generate-HOL/GenHOL4Real.thy Wed Sep 28 11:50:15 2005 +0200
+++ b/src/HOL/Import/Generate-HOL/GenHOL4Real.thy Wed Sep 28 13:17:23 2005 +0200
@@ -67,6 +67,9 @@
end_import;
import_theory seq;
+const_renames
+"-->" > "hol4-->";
+
end_import;
import_theory lim;
--- a/src/HOL/Import/HOL/HOL4Prob.thy Wed Sep 28 11:50:15 2005 +0200
+++ b/src/HOL/Import/HOL/HOL4Prob.thy Wed Sep 28 13:17:23 2005 +0200
@@ -19,42 +19,8 @@
lemma DIV_THEN_MULT: "ALL (p::nat) q::nat. Suc q * (p div Suc q) <= p"
by (import prob_extra DIV_THEN_MULT)
-lemma DIV_TWO_UNIQUE: "(All::(nat => bool) => bool)
- (%n::nat.
- (All::(nat => bool) => bool)
- (%q::nat.
- (All::(nat => bool) => bool)
- (%r::nat.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op =::nat => nat => bool) n
- ((op +::nat => nat => nat)
- ((op *::nat => nat => nat)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))
- q)
- r))
- ((op |::bool => bool => bool)
- ((op =::nat => nat => bool) r (0::nat))
- ((op =::nat => nat => bool) r (1::nat))))
- ((op &::bool => bool => bool)
- ((op =::nat => nat => bool) q
- ((op div::nat => nat => nat) n
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))
- ((op =::nat => nat => bool) r
- ((op mod::nat => nat => nat) n
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))))))"
+lemma DIV_TWO_UNIQUE: "ALL (n::nat) (q::nat) r::nat.
+ n = 2 * q + r & (r = 0 | r = 1) --> q = n div 2 & r = n mod 2"
by (import prob_extra DIV_TWO_UNIQUE)
lemma DIVISION_TWO: "ALL n::nat. n = 2 * (n div 2) + n mod 2 & (n mod 2 = 0 | n mod 2 = 1)"
@@ -95,47 +61,10 @@
(1::nat)))"
by (import prob_extra DIV_TWO_BASIC)
-lemma DIV_TWO_MONO: "(All::(nat => bool) => bool)
- (%m::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op <::nat => nat => bool)
- ((op div::nat => nat => nat) m
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))
- ((op div::nat => nat => nat) n
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))
- ((op <::nat => nat => bool) m n)))"
+lemma DIV_TWO_MONO: "ALL (m::nat) n::nat. m div 2 < n div 2 --> m < n"
by (import prob_extra DIV_TWO_MONO)
-lemma DIV_TWO_MONO_EVEN: "(All::(nat => bool) => bool)
- (%m::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool) ((EVEN::nat => bool) n)
- ((op =::bool => bool => bool)
- ((op <::nat => nat => bool)
- ((op div::nat => nat => nat) m
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))
- ((op div::nat => nat => nat) n
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))
- ((op <::nat => nat => bool) m n))))"
+lemma DIV_TWO_MONO_EVEN: "ALL (m::nat) n::nat. EVEN n --> (m div 2 < n div 2) = (m < n)"
by (import prob_extra DIV_TWO_MONO_EVEN)
lemma DIV_TWO_CANCEL: "ALL n::nat. 2 * n div 2 = n & Suc (2 * n) div 2 = n"
@@ -181,54 +110,17 @@
lemma INF_DEF_ALT: "ALL P::real => bool. inf P = - sup (%r::real. P (- r))"
by (import prob_extra INF_DEF_ALT)
-lemma REAL_SUP_EXISTS_UNIQUE: "(All::((real => bool) => bool) => bool)
- (%P::real => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool) ((Ex::(real => bool) => bool) P)
- ((Ex::(real => bool) => bool)
- (%z::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool) (P x)
- ((op <=::real => real => bool) x z)))))
- ((Ex1::(real => bool) => bool)
- (%s::real.
- (All::(real => bool) => bool)
- (%y::real.
- (op =::bool => bool => bool)
- ((Ex::(real => bool) => bool)
- (%x::real.
- (op &::bool => bool => bool) (P x)
- ((op <::real => real => bool) y x)))
- ((op <::real => real => bool) y s)))))"
+lemma REAL_SUP_EXISTS_UNIQUE: "ALL P::real => bool.
+ Ex P & (EX z::real. ALL x::real. P x --> x <= z) -->
+ (EX! s::real. ALL y::real. (EX x::real. P x & y < x) = (y < s))"
by (import prob_extra REAL_SUP_EXISTS_UNIQUE)
-lemma REAL_SUP_MAX: "(All::((real => bool) => bool) => bool)
- (%P::real => bool.
- (All::(real => bool) => bool)
- (%z::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool) (P z)
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool) (P x)
- ((op <=::real => real => bool) x z))))
- ((op =::real => real => bool) ((sup::(real => bool) => real) P)
- z)))"
+lemma REAL_SUP_MAX: "ALL (P::real => bool) z::real.
+ P z & (ALL x::real. P x --> x <= z) --> sup P = z"
by (import prob_extra REAL_SUP_MAX)
-lemma REAL_INF_MIN: "(All::((real => bool) => bool) => bool)
- (%P::real => bool.
- (All::(real => bool) => bool)
- (%z::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool) (P z)
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool) (P x)
- ((op <=::real => real => bool) z x))))
- ((op =::real => real => bool) ((inf::(real => bool) => real) P)
- z)))"
+lemma REAL_INF_MIN: "ALL (P::real => bool) z::real.
+ P z & (ALL x::real. P x --> z <= x) --> inf P = z"
by (import prob_extra REAL_INF_MIN)
lemma HALF_POS: "(op <::real => real => bool) (0::real)
@@ -317,39 +209,15 @@
lemma X_HALF_HALF: "ALL x::real. 1 / 2 * x + 1 / 2 * x = x"
by (import prob_extra X_HALF_HALF)
-lemma REAL_SUP_LE_X: "(All::((real => bool) => bool) => bool)
- (%P::real => bool.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool) ((Ex::(real => bool) => bool) P)
- ((All::(real => bool) => bool)
- (%r::real.
- (op -->::bool => bool => bool) (P r)
- ((op <=::real => real => bool) r x))))
- ((op <=::real => real => bool) ((sup::(real => bool) => real) P)
- x)))"
+lemma REAL_SUP_LE_X: "ALL (P::real => bool) x::real.
+ Ex P & (ALL r::real. P r --> r <= x) --> sup P <= x"
by (import prob_extra REAL_SUP_LE_X)
-lemma REAL_X_LE_SUP: "(All::((real => bool) => bool) => bool)
- (%P::real => bool.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool) ((Ex::(real => bool) => bool) P)
- ((op &::bool => bool => bool)
- ((Ex::(real => bool) => bool)
- (%z::real.
- (All::(real => bool) => bool)
- (%r::real.
- (op -->::bool => bool => bool) (P r)
- ((op <=::real => real => bool) r z))))
- ((Ex::(real => bool) => bool)
- (%r::real.
- (op &::bool => bool => bool) (P r)
- ((op <=::real => real => bool) x r)))))
- ((op <=::real => real => bool) x
- ((sup::(real => bool) => real) P))))"
+lemma REAL_X_LE_SUP: "ALL (P::real => bool) x::real.
+ Ex P &
+ (EX z::real. ALL r::real. P r --> r <= z) &
+ (EX r::real. P r & x <= r) -->
+ x <= sup P"
by (import prob_extra REAL_X_LE_SUP)
lemma ABS_BETWEEN_LE: "ALL (x::real) (y::real) d::real.
@@ -409,21 +277,8 @@
lemma INV_SUC: "ALL n::nat. 0 < 1 / real (Suc n) & 1 / real (Suc n) <= 1"
by (import prob_extra INV_SUC)
-lemma ABS_UNIT_INTERVAL: "(All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) x (1::real))
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) y)
- ((op <=::real => real => bool) y (1::real)))))
- ((op <=::real => real => bool)
- ((abs::real => real) ((op -::real => real => real) x y))
- (1::real))))"
+lemma ABS_UNIT_INTERVAL: "ALL (x::real) y::real.
+ 0 <= x & x <= 1 & 0 <= y & y <= 1 --> abs (x - y) <= 1"
by (import prob_extra ABS_UNIT_INTERVAL)
lemma MEM_NIL: "ALL l::'a::type list. (ALL x::'a::type. ~ x mem l) = (l = [])"
@@ -442,32 +297,12 @@
lemma FILTER_FALSE: "ALL l::'a::type list. [x::'a::type:l. False] = []"
by (import prob_extra FILTER_FALSE)
-lemma FILTER_MEM: "(All::(('a::type => bool) => bool) => bool)
- (%P::'a::type => bool.
- (All::('a::type => bool) => bool)
- (%x::'a::type.
- (All::('a::type list => bool) => bool)
- (%l::'a::type list.
- (op -->::bool => bool => bool)
- ((op mem::'a::type => 'a::type list => bool) x
- ((filter::('a::type => bool)
- => 'a::type list => 'a::type list)
- P l))
- (P x))))"
+lemma FILTER_MEM: "ALL (P::'a::type => bool) (x::'a::type) l::'a::type list.
+ x mem filter P l --> P x"
by (import prob_extra FILTER_MEM)
-lemma MEM_FILTER: "(All::(('a::type => bool) => bool) => bool)
- (%P::'a::type => bool.
- (All::('a::type list => bool) => bool)
- (%l::'a::type list.
- (All::('a::type => bool) => bool)
- (%x::'a::type.
- (op -->::bool => bool => bool)
- ((op mem::'a::type => 'a::type list => bool) x
- ((filter::('a::type => bool)
- => 'a::type list => 'a::type list)
- P l))
- ((op mem::'a::type => 'a::type list => bool) x l))))"
+lemma MEM_FILTER: "ALL (P::'a::type => bool) (l::'a::type list) x::'a::type.
+ x mem filter P l --> x mem l"
by (import prob_extra MEM_FILTER)
lemma FILTER_OUT_ELT: "ALL (x::'a::type) l::'a::type list. x mem l | [y::'a::type:l. y ~= x] = l"
@@ -479,53 +314,23 @@
lemma IS_PREFIX_REFL: "ALL x::'a::type list. IS_PREFIX x x"
by (import prob_extra IS_PREFIX_REFL)
-lemma IS_PREFIX_ANTISYM: "(All::('a::type list => bool) => bool)
- (%x::'a::type list.
- (All::('a::type list => bool) => bool)
- (%y::'a::type list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((IS_PREFIX::'a::type list => 'a::type list => bool) y x)
- ((IS_PREFIX::'a::type list => 'a::type list => bool) x y))
- ((op =::'a::type list => 'a::type list => bool) x y)))"
+lemma IS_PREFIX_ANTISYM: "ALL (x::'a::type list) y::'a::type list.
+ IS_PREFIX y x & IS_PREFIX x y --> x = y"
by (import prob_extra IS_PREFIX_ANTISYM)
-lemma IS_PREFIX_TRANS: "(All::('a::type list => bool) => bool)
- (%x::'a::type list.
- (All::('a::type list => bool) => bool)
- (%y::'a::type list.
- (All::('a::type list => bool) => bool)
- (%z::'a::type list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((IS_PREFIX::'a::type list => 'a::type list => bool) x y)
- ((IS_PREFIX::'a::type list => 'a::type list => bool) y z))
- ((IS_PREFIX::'a::type list => 'a::type list => bool) x z))))"
+lemma IS_PREFIX_TRANS: "ALL (x::'a::type list) (y::'a::type list) z::'a::type list.
+ IS_PREFIX x y & IS_PREFIX y z --> IS_PREFIX x z"
by (import prob_extra IS_PREFIX_TRANS)
lemma IS_PREFIX_BUTLAST: "ALL (x::'a::type) y::'a::type list. IS_PREFIX (x # y) (butlast (x # y))"
by (import prob_extra IS_PREFIX_BUTLAST)
-lemma IS_PREFIX_LENGTH: "(All::('a::type list => bool) => bool)
- (%x::'a::type list.
- (All::('a::type list => bool) => bool)
- (%y::'a::type list.
- (op -->::bool => bool => bool)
- ((IS_PREFIX::'a::type list => 'a::type list => bool) y x)
- ((op <=::nat => nat => bool) ((size::'a::type list => nat) x)
- ((size::'a::type list => nat) y))))"
+lemma IS_PREFIX_LENGTH: "ALL (x::'a::type list) y::'a::type list.
+ IS_PREFIX y x --> length x <= length y"
by (import prob_extra IS_PREFIX_LENGTH)
-lemma IS_PREFIX_LENGTH_ANTI: "(All::('a::type list => bool) => bool)
- (%x::'a::type list.
- (All::('a::type list => bool) => bool)
- (%y::'a::type list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((IS_PREFIX::'a::type list => 'a::type list => bool) y x)
- ((op =::nat => nat => bool) ((size::'a::type list => nat) x)
- ((size::'a::type list => nat) y)))
- ((op =::'a::type list => 'a::type list => bool) x y)))"
+lemma IS_PREFIX_LENGTH_ANTI: "ALL (x::'a::type list) y::'a::type list.
+ IS_PREFIX y x & length x = length y --> x = y"
by (import prob_extra IS_PREFIX_LENGTH_ANTI)
lemma IS_PREFIX_SNOC: "ALL (x::'a::type) (y::'a::type list) z::'a::type list.
@@ -544,29 +349,10 @@
EX x::bool list. last (map (op # b) (h # t)) = b # x"
by (import prob_extra LAST_MAP_CONS)
-lemma EXISTS_LONGEST: "(All::('a::type list => bool) => bool)
- (%x::'a::type list.
- (All::('a::type list list => bool) => bool)
- (%y::'a::type list list.
- (Ex::('a::type list => bool) => bool)
- (%z::'a::type list.
- (op &::bool => bool => bool)
- ((op mem::'a::type list => 'a::type list list => bool) z
- ((op #::'a::type list
- => 'a::type list list => 'a::type list list)
- x y))
- ((All::('a::type list => bool) => bool)
- (%w::'a::type list.
- (op -->::bool => bool => bool)
- ((op mem::'a::type list
- => 'a::type list list => bool)
- w ((op #::'a::type list
- => 'a::type list list
-=> 'a::type list list)
- x y))
- ((op <=::nat => nat => bool)
- ((size::'a::type list => nat) w)
- ((size::'a::type list => nat) z)))))))"
+lemma EXISTS_LONGEST: "ALL (x::'a::type list) y::'a::type list list.
+ EX z::'a::type list.
+ z mem x # y &
+ (ALL w::'a::type list. w mem x # y --> length w <= length z)"
by (import prob_extra EXISTS_LONGEST)
lemma UNION_DEF_ALT: "ALL (s::'a::type => bool) t::'a::type => bool.
@@ -586,36 +372,10 @@
(pred_set.INTER s t = EMPTY) = (ALL x::'a::type. ~ s x | ~ t x)"
by (import prob_extra INTER_IS_EMPTY)
-lemma UNION_DISJOINT_SPLIT: "(All::(('a::type => bool) => bool) => bool)
- (%s::'a::type => bool.
- (All::(('a::type => bool) => bool) => bool)
- (%t::'a::type => bool.
- (All::(('a::type => bool) => bool) => bool)
- (%u::'a::type => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op =::('a::type => bool) => ('a::type => bool) => bool)
- ((pred_set.UNION::('a::type => bool)
-=> ('a::type => bool) => 'a::type => bool)
- s t)
- ((pred_set.UNION::('a::type => bool)
-=> ('a::type => bool) => 'a::type => bool)
- s u))
- ((op &::bool => bool => bool)
- ((op =::('a::type => bool)
- => ('a::type => bool) => bool)
- ((pred_set.INTER::('a::type => bool)
- => ('a::type => bool) => 'a::type => bool)
- s t)
- (EMPTY::'a::type => bool))
- ((op =::('a::type => bool)
- => ('a::type => bool) => bool)
- ((pred_set.INTER::('a::type => bool)
- => ('a::type => bool) => 'a::type => bool)
- s u)
- (EMPTY::'a::type => bool))))
- ((op =::('a::type => bool) => ('a::type => bool) => bool) t
- u))))"
+lemma UNION_DISJOINT_SPLIT: "ALL (s::'a::type => bool) (t::'a::type => bool) u::'a::type => bool.
+ pred_set.UNION s t = pred_set.UNION s u &
+ pred_set.INTER s t = EMPTY & pred_set.INTER s u = EMPTY -->
+ t = u"
by (import prob_extra UNION_DISJOINT_SPLIT)
lemma GSPEC_DEF_ALT: "ALL f::'a::type => 'b::type * bool.
@@ -770,39 +530,13 @@
lemma alg_order_curried_def: "ALL (x::bool list) x1::bool list. alg_order x x1 = alg_order_tupled (x, x1)"
by (import prob_canon alg_order_curried_def)
-lemma alg_order_ind: "(All::((bool list => bool list => bool) => bool) => bool)
- (%P::bool list => bool list => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((All::(bool => bool) => bool)
- (%x::bool.
- (All::(bool list => bool) => bool)
- (%xa::bool list.
- P ([]::bool list)
- ((op #::bool => bool list => bool list) x xa))))
- ((op &::bool => bool => bool) (P ([]::bool list) ([]::bool list))
- ((op &::bool => bool => bool)
- ((All::(bool => bool) => bool)
- (%x::bool.
- (All::(bool list => bool) => bool)
- (%xa::bool list.
- P ((op #::bool => bool list => bool list) x xa)
- ([]::bool list))))
- ((All::(bool => bool) => bool)
- (%x::bool.
- (All::(bool list => bool) => bool)
- (%xa::bool list.
- (All::(bool => bool) => bool)
- (%xb::bool.
- (All::(bool list => bool) => bool)
- (%xc::bool list.
- (op -->::bool => bool => bool) (P xa xc)
- (P ((op #::bool => bool list => bool list)
- x xa)
- ((op #::bool => bool list => bool list)
-xb xc))))))))))
- ((All::(bool list => bool) => bool)
- (%x::bool list. (All::(bool list => bool) => bool) (P x))))"
+lemma alg_order_ind: "ALL P::bool list => bool list => bool.
+ (ALL (x::bool) xa::bool list. P [] (x # xa)) &
+ P [] [] &
+ (ALL (x::bool) xa::bool list. P (x # xa) []) &
+ (ALL (x::bool) (xa::bool list) (xb::bool) xc::bool list.
+ P xa xc --> P (x # xa) (xb # xc)) -->
+ (ALL x::bool list. All (P x))"
by (import prob_canon alg_order_ind)
lemma alg_order_def: "alg_order [] ((v6::bool) # (v7::bool list)) = True &
@@ -843,32 +577,11 @@
alg_order v2 v6 & alg_sorted (v6 # v7))))"
by (import prob_canon alg_sorted_primitive_def)
-lemma alg_sorted_ind: "(All::((bool list list => bool) => bool) => bool)
- (%P::bool list list => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((All::(bool list => bool) => bool)
- (%x::bool list.
- (All::(bool list => bool) => bool)
- (%y::bool list.
- (All::(bool list list => bool) => bool)
- (%z::bool list list.
- (op -->::bool => bool => bool)
- (P ((op #::bool list
- => bool list list => bool list list)
- y z))
- (P ((op #::bool list
- => bool list list => bool list list)
- x ((op #::bool list
- => bool list list => bool list list)
- y z)))))))
- ((op &::bool => bool => bool)
- ((All::(bool list => bool) => bool)
- (%v::bool list.
- P ((op #::bool list => bool list list => bool list list) v
- ([]::bool list list))))
- (P ([]::bool list list))))
- ((All::(bool list list => bool) => bool) P))"
+lemma alg_sorted_ind: "ALL P::bool list list => bool.
+ (ALL (x::bool list) (y::bool list) z::bool list list.
+ P (y # z) --> P (x # y # z)) &
+ (ALL v::bool list. P [v]) & P [] -->
+ All P"
by (import prob_canon alg_sorted_ind)
lemma alg_sorted_def: "alg_sorted ((x::bool list) # (y::bool list) # (z::bool list list)) =
@@ -907,32 +620,11 @@
~ IS_PREFIX v6 v2 & alg_prefixfree (v6 # v7))))"
by (import prob_canon alg_prefixfree_primitive_def)
-lemma alg_prefixfree_ind: "(All::((bool list list => bool) => bool) => bool)
- (%P::bool list list => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((All::(bool list => bool) => bool)
- (%x::bool list.
- (All::(bool list => bool) => bool)
- (%y::bool list.
- (All::(bool list list => bool) => bool)
- (%z::bool list list.
- (op -->::bool => bool => bool)
- (P ((op #::bool list
- => bool list list => bool list list)
- y z))
- (P ((op #::bool list
- => bool list list => bool list list)
- x ((op #::bool list
- => bool list list => bool list list)
- y z)))))))
- ((op &::bool => bool => bool)
- ((All::(bool list => bool) => bool)
- (%v::bool list.
- P ((op #::bool list => bool list list => bool list list) v
- ([]::bool list list))))
- (P ([]::bool list list))))
- ((All::(bool list list => bool) => bool) P))"
+lemma alg_prefixfree_ind: "ALL P::bool list list => bool.
+ (ALL (x::bool list) (y::bool list) z::bool list list.
+ P (y # z) --> P (x # y # z)) &
+ (ALL v::bool list. P [v]) & P [] -->
+ All P"
by (import prob_canon alg_prefixfree_ind)
lemma alg_prefixfree_def: "alg_prefixfree ((x::bool list) # (y::bool list) # (z::bool list list)) =
@@ -971,32 +663,11 @@
~ alg_twin v2 v6 & alg_twinfree (v6 # v7))))"
by (import prob_canon alg_twinfree_primitive_def)
-lemma alg_twinfree_ind: "(All::((bool list list => bool) => bool) => bool)
- (%P::bool list list => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((All::(bool list => bool) => bool)
- (%x::bool list.
- (All::(bool list => bool) => bool)
- (%y::bool list.
- (All::(bool list list => bool) => bool)
- (%z::bool list list.
- (op -->::bool => bool => bool)
- (P ((op #::bool list
- => bool list list => bool list list)
- y z))
- (P ((op #::bool list
- => bool list list => bool list list)
- x ((op #::bool list
- => bool list list => bool list list)
- y z)))))))
- ((op &::bool => bool => bool)
- ((All::(bool list => bool) => bool)
- (%v::bool list.
- P ((op #::bool list => bool list list => bool list list) v
- ([]::bool list list))))
- (P ([]::bool list list))))
- ((All::(bool list list => bool) => bool) P))"
+lemma alg_twinfree_ind: "ALL P::bool list list => bool.
+ (ALL (x::bool list) (y::bool list) z::bool list list.
+ P (y # z) --> P (x # y # z)) &
+ (ALL v::bool list. P [v]) & P [] -->
+ All P"
by (import prob_canon alg_twinfree_ind)
lemma alg_twinfree_def: "alg_twinfree ((x::bool list) # (y::bool list) # (z::bool list list)) =
@@ -1097,20 +768,9 @@
alg_twin (h # t) (h # t') = alg_twin t t'"
by (import prob_canon ALG_TWIN_REDUCE)
-lemma ALG_TWINS_PREFIX: "(All::(bool list => bool) => bool)
- (%x::bool list.
- (All::(bool list => bool) => bool)
- (%l::bool list.
- (op -->::bool => bool => bool)
- ((IS_PREFIX::bool list => bool list => bool) x l)
- ((op |::bool => bool => bool)
- ((op =::bool list => bool list => bool) x l)
- ((op |::bool => bool => bool)
- ((IS_PREFIX::bool list => bool list => bool) x
- ((SNOC::bool => bool list => bool list) (True::bool) l))
- ((IS_PREFIX::bool list => bool list => bool) x
- ((SNOC::bool => bool list => bool list) (False::bool)
- l))))))"
+lemma ALG_TWINS_PREFIX: "ALL (x::bool list) l::bool list.
+ IS_PREFIX x l -->
+ x = l | IS_PREFIX x (SNOC True l) | IS_PREFIX x (SNOC False l)"
by (import prob_canon ALG_TWINS_PREFIX)
lemma ALG_ORDER_NIL: "ALL x::bool list. alg_order [] x & alg_order x [] = (x = [])"
@@ -1119,140 +779,47 @@
lemma ALG_ORDER_REFL: "ALL x::bool list. alg_order x x"
by (import prob_canon ALG_ORDER_REFL)
-lemma ALG_ORDER_ANTISYM: "(All::(bool list => bool) => bool)
- (%x::bool list.
- (All::(bool list => bool) => bool)
- (%y::bool list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((alg_order::bool list => bool list => bool) x y)
- ((alg_order::bool list => bool list => bool) y x))
- ((op =::bool list => bool list => bool) x y)))"
+lemma ALG_ORDER_ANTISYM: "ALL (x::bool list) y::bool list. alg_order x y & alg_order y x --> x = y"
by (import prob_canon ALG_ORDER_ANTISYM)
-lemma ALG_ORDER_TRANS: "(All::(bool list => bool) => bool)
- (%x::bool list.
- (All::(bool list => bool) => bool)
- (%y::bool list.
- (All::(bool list => bool) => bool)
- (%z::bool list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((alg_order::bool list => bool list => bool) x y)
- ((alg_order::bool list => bool list => bool) y z))
- ((alg_order::bool list => bool list => bool) x z))))"
+lemma ALG_ORDER_TRANS: "ALL (x::bool list) (y::bool list) z::bool list.
+ alg_order x y & alg_order y z --> alg_order x z"
by (import prob_canon ALG_ORDER_TRANS)
lemma ALG_ORDER_TOTAL: "ALL (x::bool list) y::bool list. alg_order x y | alg_order y x"
by (import prob_canon ALG_ORDER_TOTAL)
-lemma ALG_ORDER_PREFIX: "(All::(bool list => bool) => bool)
- (%x::bool list.
- (All::(bool list => bool) => bool)
- (%y::bool list.
- (op -->::bool => bool => bool)
- ((IS_PREFIX::bool list => bool list => bool) y x)
- ((alg_order::bool list => bool list => bool) x y)))"
+lemma ALG_ORDER_PREFIX: "ALL (x::bool list) y::bool list. IS_PREFIX y x --> alg_order x y"
by (import prob_canon ALG_ORDER_PREFIX)
-lemma ALG_ORDER_PREFIX_ANTI: "(All::(bool list => bool) => bool)
- (%x::bool list.
- (All::(bool list => bool) => bool)
- (%y::bool list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((alg_order::bool list => bool list => bool) x y)
- ((IS_PREFIX::bool list => bool list => bool) x y))
- ((op =::bool list => bool list => bool) x y)))"
+lemma ALG_ORDER_PREFIX_ANTI: "ALL (x::bool list) y::bool list. alg_order x y & IS_PREFIX x y --> x = y"
by (import prob_canon ALG_ORDER_PREFIX_ANTI)
-lemma ALG_ORDER_PREFIX_MONO: "(All::(bool list => bool) => bool)
- (%x::bool list.
- (All::(bool list => bool) => bool)
- (%y::bool list.
- (All::(bool list => bool) => bool)
- (%z::bool list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((alg_order::bool list => bool list => bool) x y)
- ((op &::bool => bool => bool)
- ((alg_order::bool list => bool list => bool) y z)
- ((IS_PREFIX::bool list => bool list => bool) z x)))
- ((IS_PREFIX::bool list => bool list => bool) y x))))"
+lemma ALG_ORDER_PREFIX_MONO: "ALL (x::bool list) (y::bool list) z::bool list.
+ alg_order x y & alg_order y z & IS_PREFIX z x --> IS_PREFIX y x"
by (import prob_canon ALG_ORDER_PREFIX_MONO)
-lemma ALG_ORDER_PREFIX_TRANS: "(All::(bool list => bool) => bool)
- (%x::bool list.
- (All::(bool list => bool) => bool)
- (%y::bool list.
- (All::(bool list => bool) => bool)
- (%z::bool list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((alg_order::bool list => bool list => bool) x y)
- ((IS_PREFIX::bool list => bool list => bool) y z))
- ((op |::bool => bool => bool)
- ((alg_order::bool list => bool list => bool) x z)
- ((IS_PREFIX::bool list => bool list => bool) x z)))))"
+lemma ALG_ORDER_PREFIX_TRANS: "ALL (x::bool list) (y::bool list) z::bool list.
+ alg_order x y & IS_PREFIX y z --> alg_order x z | IS_PREFIX x z"
by (import prob_canon ALG_ORDER_PREFIX_TRANS)
lemma ALG_ORDER_SNOC: "ALL (x::bool) l::bool list. ~ alg_order (SNOC x l) l"
by (import prob_canon ALG_ORDER_SNOC)
-lemma ALG_SORTED_MIN: "(All::(bool list => bool) => bool)
- (%h::bool list.
- (All::(bool list list => bool) => bool)
- (%t::bool list list.
- (op -->::bool => bool => bool)
- ((alg_sorted::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) h t))
- ((All::(bool list => bool) => bool)
- (%x::bool list.
- (op -->::bool => bool => bool)
- ((op mem::bool list => bool list list => bool) x t)
- ((alg_order::bool list => bool list => bool) h x)))))"
+lemma ALG_SORTED_MIN: "ALL (h::bool list) t::bool list list.
+ alg_sorted (h # t) --> (ALL x::bool list. x mem t --> alg_order h x)"
by (import prob_canon ALG_SORTED_MIN)
-lemma ALG_SORTED_DEF_ALT: "(All::(bool list => bool) => bool)
- (%h::bool list.
- (All::(bool list list => bool) => bool)
- (%t::bool list list.
- (op =::bool => bool => bool)
- ((alg_sorted::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) h t))
- ((op &::bool => bool => bool)
- ((All::(bool list => bool) => bool)
- (%x::bool list.
- (op -->::bool => bool => bool)
- ((op mem::bool list => bool list list => bool) x t)
- ((alg_order::bool list => bool list => bool) h x)))
- ((alg_sorted::bool list list => bool) t))))"
+lemma ALG_SORTED_DEF_ALT: "ALL (h::bool list) t::bool list list.
+ alg_sorted (h # t) =
+ ((ALL x::bool list. x mem t --> alg_order h x) & alg_sorted t)"
by (import prob_canon ALG_SORTED_DEF_ALT)
-lemma ALG_SORTED_TL: "(All::(bool list => bool) => bool)
- (%h::bool list.
- (All::(bool list list => bool) => bool)
- (%t::bool list list.
- (op -->::bool => bool => bool)
- ((alg_sorted::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) h t))
- ((alg_sorted::bool list list => bool) t)))"
+lemma ALG_SORTED_TL: "ALL (h::bool list) t::bool list list. alg_sorted (h # t) --> alg_sorted t"
by (import prob_canon ALG_SORTED_TL)
-lemma ALG_SORTED_MONO: "(All::(bool list => bool) => bool)
- (%x::bool list.
- (All::(bool list => bool) => bool)
- (%y::bool list.
- (All::(bool list list => bool) => bool)
- (%z::bool list list.
- (op -->::bool => bool => bool)
- ((alg_sorted::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) x
- ((op #::bool list => bool list list => bool list list) y
- z)))
- ((alg_sorted::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) x
- z)))))"
+lemma ALG_SORTED_MONO: "ALL (x::bool list) (y::bool list) z::bool list list.
+ alg_sorted (x # y # z) --> alg_sorted (x # z)"
by (import prob_canon ALG_SORTED_MONO)
lemma ALG_SORTED_TLS: "ALL (l::bool list list) b::bool. alg_sorted (map (op # b) l) = alg_sorted l"
@@ -1268,69 +835,22 @@
(alg_sorted (h # t) & alg_sorted (h' # t') & alg_order (last (h # t)) h')"
by (import prob_canon ALG_SORTED_APPEND)
-lemma ALG_SORTED_FILTER: "(All::((bool list => bool) => bool) => bool)
- (%P::bool list => bool.
- (All::(bool list list => bool) => bool)
- (%b::bool list list.
- (op -->::bool => bool => bool)
- ((alg_sorted::bool list list => bool) b)
- ((alg_sorted::bool list list => bool)
- ((filter::(bool list => bool)
- => bool list list => bool list list)
- P b))))"
+lemma ALG_SORTED_FILTER: "ALL (P::bool list => bool) b::bool list list.
+ alg_sorted b --> alg_sorted (filter P b)"
by (import prob_canon ALG_SORTED_FILTER)
-lemma ALG_PREFIXFREE_TL: "(All::(bool list => bool) => bool)
- (%h::bool list.
- (All::(bool list list => bool) => bool)
- (%t::bool list list.
- (op -->::bool => bool => bool)
- ((alg_prefixfree::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) h t))
- ((alg_prefixfree::bool list list => bool) t)))"
+lemma ALG_PREFIXFREE_TL: "ALL (h::bool list) t::bool list list.
+ alg_prefixfree (h # t) --> alg_prefixfree t"
by (import prob_canon ALG_PREFIXFREE_TL)
-lemma ALG_PREFIXFREE_MONO: "(All::(bool list => bool) => bool)
- (%x::bool list.
- (All::(bool list => bool) => bool)
- (%y::bool list.
- (All::(bool list list => bool) => bool)
- (%z::bool list list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((alg_sorted::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) x
- ((op #::bool list => bool list list => bool list list)
- y z)))
- ((alg_prefixfree::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) x
- ((op #::bool list => bool list list => bool list list)
- y z))))
- ((alg_prefixfree::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) x
- z)))))"
+lemma ALG_PREFIXFREE_MONO: "ALL (x::bool list) (y::bool list) z::bool list list.
+ alg_sorted (x # y # z) & alg_prefixfree (x # y # z) -->
+ alg_prefixfree (x # z)"
by (import prob_canon ALG_PREFIXFREE_MONO)
-lemma ALG_PREFIXFREE_ELT: "(All::(bool list => bool) => bool)
- (%h::bool list.
- (All::(bool list list => bool) => bool)
- (%t::bool list list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((alg_sorted::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) h t))
- ((alg_prefixfree::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) h t)))
- ((All::(bool list => bool) => bool)
- (%x::bool list.
- (op -->::bool => bool => bool)
- ((op mem::bool list => bool list list => bool) x t)
- ((op &::bool => bool => bool)
- ((Not::bool => bool)
- ((IS_PREFIX::bool list => bool list => bool) x h))
- ((Not::bool => bool)
- ((IS_PREFIX::bool list => bool list => bool) h
- x)))))))"
+lemma ALG_PREFIXFREE_ELT: "ALL (h::bool list) t::bool list list.
+ alg_sorted (h # t) & alg_prefixfree (h # t) -->
+ (ALL x::bool list. x mem t --> ~ IS_PREFIX x h & ~ IS_PREFIX h x)"
by (import prob_canon ALG_PREFIXFREE_ELT)
lemma ALG_PREFIXFREE_TLS: "ALL (l::bool list list) b::bool.
@@ -1348,105 +868,32 @@
alg_prefixfree (h' # t') & ~ IS_PREFIX h' (last (h # t)))"
by (import prob_canon ALG_PREFIXFREE_APPEND)
-lemma ALG_PREFIXFREE_FILTER: "(All::((bool list => bool) => bool) => bool)
- (%P::bool list => bool.
- (All::(bool list list => bool) => bool)
- (%b::bool list list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((alg_sorted::bool list list => bool) b)
- ((alg_prefixfree::bool list list => bool) b))
- ((alg_prefixfree::bool list list => bool)
- ((filter::(bool list => bool)
- => bool list list => bool list list)
- P b))))"
+lemma ALG_PREFIXFREE_FILTER: "ALL (P::bool list => bool) b::bool list list.
+ alg_sorted b & alg_prefixfree b --> alg_prefixfree (filter P b)"
by (import prob_canon ALG_PREFIXFREE_FILTER)
-lemma ALG_TWINFREE_TL: "(All::(bool list => bool) => bool)
- (%h::bool list.
- (All::(bool list list => bool) => bool)
- (%t::bool list list.
- (op -->::bool => bool => bool)
- ((alg_twinfree::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) h t))
- ((alg_twinfree::bool list list => bool) t)))"
+lemma ALG_TWINFREE_TL: "ALL (h::bool list) t::bool list list.
+ alg_twinfree (h # t) --> alg_twinfree t"
by (import prob_canon ALG_TWINFREE_TL)
lemma ALG_TWINFREE_TLS: "ALL (l::bool list list) b::bool.
alg_twinfree (map (op # b) l) = alg_twinfree l"
by (import prob_canon ALG_TWINFREE_TLS)
-lemma ALG_TWINFREE_STEP1: "(All::(bool list list => bool) => bool)
- (%l1::bool list list.
- (All::(bool list list => bool) => bool)
- (%l2::bool list list.
- (op -->::bool => bool => bool)
- ((alg_twinfree::bool list list => bool)
- ((op @::bool list list => bool list list => bool list list)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list) (True::bool)) l1)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list) (False::bool))
- l2)))
- ((op &::bool => bool => bool)
- ((alg_twinfree::bool list list => bool) l1)
- ((alg_twinfree::bool list list => bool) l2))))"
+lemma ALG_TWINFREE_STEP1: "ALL (l1::bool list list) l2::bool list list.
+ alg_twinfree (map (op # True) l1 @ map (op # False) l2) -->
+ alg_twinfree l1 & alg_twinfree l2"
by (import prob_canon ALG_TWINFREE_STEP1)
-lemma ALG_TWINFREE_STEP2: "(All::(bool list list => bool) => bool)
- (%l1::bool list list.
- (All::(bool list list => bool) => bool)
- (%l2::bool list list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op |::bool => bool => bool)
- ((Not::bool => bool)
- ((op mem::bool list => bool list list => bool)
- ([]::bool list) l1))
- ((Not::bool => bool)
- ((op mem::bool list => bool list list => bool)
- ([]::bool list) l2)))
- ((op &::bool => bool => bool)
- ((alg_twinfree::bool list list => bool) l1)
- ((alg_twinfree::bool list list => bool) l2)))
- ((alg_twinfree::bool list list => bool)
- ((op @::bool list list => bool list list => bool list list)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list) (True::bool)) l1)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list) (False::bool))
- l2)))))"
+lemma ALG_TWINFREE_STEP2: "ALL (l1::bool list list) l2::bool list list.
+ (~ [] mem l1 | ~ [] mem l2) & alg_twinfree l1 & alg_twinfree l2 -->
+ alg_twinfree (map (op # True) l1 @ map (op # False) l2)"
by (import prob_canon ALG_TWINFREE_STEP2)
-lemma ALG_TWINFREE_STEP: "(All::(bool list list => bool) => bool)
- (%l1::bool list list.
- (All::(bool list list => bool) => bool)
- (%l2::bool list list.
- (op -->::bool => bool => bool)
- ((op |::bool => bool => bool)
- ((Not::bool => bool)
- ((op mem::bool list => bool list list => bool)
- ([]::bool list) l1))
- ((Not::bool => bool)
- ((op mem::bool list => bool list list => bool)
- ([]::bool list) l2)))
- ((op =::bool => bool => bool)
- ((alg_twinfree::bool list list => bool)
- ((op @::bool list list => bool list list => bool list list)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list) (True::bool)) l1)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list) (False::bool))
- l2)))
- ((op &::bool => bool => bool)
- ((alg_twinfree::bool list list => bool) l1)
- ((alg_twinfree::bool list list => bool) l2)))))"
+lemma ALG_TWINFREE_STEP: "ALL (l1::bool list list) l2::bool list list.
+ ~ [] mem l1 | ~ [] mem l2 -->
+ alg_twinfree (map (op # True) l1 @ map (op # False) l2) =
+ (alg_twinfree l1 & alg_twinfree l2)"
by (import prob_canon ALG_TWINFREE_STEP)
lemma ALG_LONGEST_HD: "ALL (h::bool list) t::bool list list. length h <= alg_longest (h # t)"
@@ -1467,124 +914,41 @@
lemma ALG_CANON_PREFS_HD: "ALL (l::bool list) b::bool list list. hd (alg_canon_prefs l b) = l"
by (import prob_canon ALG_CANON_PREFS_HD)
-lemma ALG_CANON_PREFS_DELETES: "(All::(bool list => bool) => bool)
- (%l::bool list.
- (All::(bool list list => bool) => bool)
- (%b::bool list list.
- (All::(bool list => bool) => bool)
- (%x::bool list.
- (op -->::bool => bool => bool)
- ((op mem::bool list => bool list list => bool) x
- ((alg_canon_prefs::bool list
- => bool list list => bool list list)
- l b))
- ((op mem::bool list => bool list list => bool) x
- ((op #::bool list => bool list list => bool list list) l
- b)))))"
+lemma ALG_CANON_PREFS_DELETES: "ALL (l::bool list) (b::bool list list) x::bool list.
+ x mem alg_canon_prefs l b --> x mem l # b"
by (import prob_canon ALG_CANON_PREFS_DELETES)
-lemma ALG_CANON_PREFS_SORTED: "(All::(bool list => bool) => bool)
- (%l::bool list.
- (All::(bool list list => bool) => bool)
- (%b::bool list list.
- (op -->::bool => bool => bool)
- ((alg_sorted::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) l b))
- ((alg_sorted::bool list list => bool)
- ((alg_canon_prefs::bool list
- => bool list list => bool list list)
- l b))))"
+lemma ALG_CANON_PREFS_SORTED: "ALL (l::bool list) b::bool list list.
+ alg_sorted (l # b) --> alg_sorted (alg_canon_prefs l b)"
by (import prob_canon ALG_CANON_PREFS_SORTED)
-lemma ALG_CANON_PREFS_PREFIXFREE: "(All::(bool list => bool) => bool)
- (%l::bool list.
- (All::(bool list list => bool) => bool)
- (%b::bool list list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((alg_sorted::bool list list => bool) b)
- ((alg_prefixfree::bool list list => bool) b))
- ((alg_prefixfree::bool list list => bool)
- ((alg_canon_prefs::bool list
- => bool list list => bool list list)
- l b))))"
+lemma ALG_CANON_PREFS_PREFIXFREE: "ALL (l::bool list) b::bool list list.
+ alg_sorted b & alg_prefixfree b --> alg_prefixfree (alg_canon_prefs l b)"
by (import prob_canon ALG_CANON_PREFS_PREFIXFREE)
-lemma ALG_CANON_PREFS_CONSTANT: "(All::(bool list => bool) => bool)
- (%l::bool list.
- (All::(bool list list => bool) => bool)
- (%b::bool list list.
- (op -->::bool => bool => bool)
- ((alg_prefixfree::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) l b))
- ((op =::bool list list => bool list list => bool)
- ((alg_canon_prefs::bool list
- => bool list list => bool list list)
- l b)
- ((op #::bool list => bool list list => bool list list) l b))))"
+lemma ALG_CANON_PREFS_CONSTANT: "ALL (l::bool list) b::bool list list.
+ alg_prefixfree (l # b) --> alg_canon_prefs l b = l # b"
by (import prob_canon ALG_CANON_PREFS_CONSTANT)
lemma ALG_CANON_FIND_HD: "ALL (l::bool list) (h::bool list) t::bool list list.
hd (alg_canon_find l (h # t)) = l | hd (alg_canon_find l (h # t)) = h"
by (import prob_canon ALG_CANON_FIND_HD)
-lemma ALG_CANON_FIND_DELETES: "(All::(bool list => bool) => bool)
- (%l::bool list.
- (All::(bool list list => bool) => bool)
- (%b::bool list list.
- (All::(bool list => bool) => bool)
- (%x::bool list.
- (op -->::bool => bool => bool)
- ((op mem::bool list => bool list list => bool) x
- ((alg_canon_find::bool list
- => bool list list => bool list list)
- l b))
- ((op mem::bool list => bool list list => bool) x
- ((op #::bool list => bool list list => bool list list) l
- b)))))"
+lemma ALG_CANON_FIND_DELETES: "ALL (l::bool list) (b::bool list list) x::bool list.
+ x mem alg_canon_find l b --> x mem l # b"
by (import prob_canon ALG_CANON_FIND_DELETES)
-lemma ALG_CANON_FIND_SORTED: "(All::(bool list => bool) => bool)
- (%l::bool list.
- (All::(bool list list => bool) => bool)
- (%b::bool list list.
- (op -->::bool => bool => bool)
- ((alg_sorted::bool list list => bool) b)
- ((alg_sorted::bool list list => bool)
- ((alg_canon_find::bool list
- => bool list list => bool list list)
- l b))))"
+lemma ALG_CANON_FIND_SORTED: "ALL (l::bool list) b::bool list list.
+ alg_sorted b --> alg_sorted (alg_canon_find l b)"
by (import prob_canon ALG_CANON_FIND_SORTED)
-lemma ALG_CANON_FIND_PREFIXFREE: "(All::(bool list => bool) => bool)
- (%l::bool list.
- (All::(bool list list => bool) => bool)
- (%b::bool list list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((alg_sorted::bool list list => bool) b)
- ((alg_prefixfree::bool list list => bool) b))
- ((alg_prefixfree::bool list list => bool)
- ((alg_canon_find::bool list
- => bool list list => bool list list)
- l b))))"
+lemma ALG_CANON_FIND_PREFIXFREE: "ALL (l::bool list) b::bool list list.
+ alg_sorted b & alg_prefixfree b --> alg_prefixfree (alg_canon_find l b)"
by (import prob_canon ALG_CANON_FIND_PREFIXFREE)
-lemma ALG_CANON_FIND_CONSTANT: "(All::(bool list => bool) => bool)
- (%l::bool list.
- (All::(bool list list => bool) => bool)
- (%b::bool list list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((alg_sorted::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) l b))
- ((alg_prefixfree::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) l b)))
- ((op =::bool list list => bool list list => bool)
- ((alg_canon_find::bool list
- => bool list list => bool list list)
- l b)
- ((op #::bool list => bool list list => bool list list) l b))))"
+lemma ALG_CANON_FIND_CONSTANT: "ALL (l::bool list) b::bool list list.
+ alg_sorted (l # b) & alg_prefixfree (l # b) -->
+ alg_canon_find l b = l # b"
by (import prob_canon ALG_CANON_FIND_CONSTANT)
lemma ALG_CANON1_SORTED: "ALL x::bool list list. alg_sorted (alg_canon1 x)"
@@ -1593,180 +957,48 @@
lemma ALG_CANON1_PREFIXFREE: "ALL l::bool list list. alg_prefixfree (alg_canon1 l)"
by (import prob_canon ALG_CANON1_PREFIXFREE)
-lemma ALG_CANON1_CONSTANT: "(All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool) ((alg_sorted::bool list list => bool) l)
- ((alg_prefixfree::bool list list => bool) l))
- ((op =::bool list list => bool list list => bool)
- ((alg_canon1::bool list list => bool list list) l) l))"
+lemma ALG_CANON1_CONSTANT: "ALL l::bool list list. alg_sorted l & alg_prefixfree l --> alg_canon1 l = l"
by (import prob_canon ALG_CANON1_CONSTANT)
-lemma ALG_CANON_MERGE_SORTED_PREFIXFREE_TWINFREE: "(All::(bool list => bool) => bool)
- (%l::bool list.
- (All::(bool list list => bool) => bool)
- (%b::bool list list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((alg_sorted::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) l b))
- ((op &::bool => bool => bool)
- ((alg_prefixfree::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) l
- b))
- ((alg_twinfree::bool list list => bool) b)))
- ((op &::bool => bool => bool)
- ((alg_sorted::bool list list => bool)
- ((alg_canon_merge::bool list
- => bool list list => bool list list)
- l b))
- ((op &::bool => bool => bool)
- ((alg_prefixfree::bool list list => bool)
- ((alg_canon_merge::bool list
- => bool list list => bool list list)
- l b))
- ((alg_twinfree::bool list list => bool)
- ((alg_canon_merge::bool list
- => bool list list => bool list list)
- l b))))))"
+lemma ALG_CANON_MERGE_SORTED_PREFIXFREE_TWINFREE: "ALL (l::bool list) b::bool list list.
+ alg_sorted (l # b) & alg_prefixfree (l # b) & alg_twinfree b -->
+ alg_sorted (alg_canon_merge l b) &
+ alg_prefixfree (alg_canon_merge l b) & alg_twinfree (alg_canon_merge l b)"
by (import prob_canon ALG_CANON_MERGE_SORTED_PREFIXFREE_TWINFREE)
-lemma ALG_CANON_MERGE_PREFIXFREE_PRESERVE: "(All::(bool list => bool) => bool)
- (%l::bool list.
- (All::(bool list list => bool) => bool)
- (%b::bool list list.
- (All::(bool list => bool) => bool)
- (%h::bool list.
- (op -->::bool => bool => bool)
- ((All::(bool list => bool) => bool)
- (%x::bool list.
- (op -->::bool => bool => bool)
- ((op mem::bool list => bool list list => bool) x
- ((op #::bool list
- => bool list list => bool list list)
- l b))
- ((op &::bool => bool => bool)
- ((Not::bool => bool)
- ((IS_PREFIX::bool list => bool list => bool) h
- x))
- ((Not::bool => bool)
- ((IS_PREFIX::bool list => bool list => bool) x
- h)))))
- ((All::(bool list => bool) => bool)
- (%x::bool list.
- (op -->::bool => bool => bool)
- ((op mem::bool list => bool list list => bool) x
- ((alg_canon_merge::bool list
- => bool list list => bool list list)
- l b))
- ((op &::bool => bool => bool)
- ((Not::bool => bool)
- ((IS_PREFIX::bool list => bool list => bool) h
- x))
- ((Not::bool => bool)
- ((IS_PREFIX::bool list => bool list => bool) x
- h))))))))"
+lemma ALG_CANON_MERGE_PREFIXFREE_PRESERVE: "ALL (l::bool list) (b::bool list list) h::bool list.
+ (ALL x::bool list. x mem l # b --> ~ IS_PREFIX h x & ~ IS_PREFIX x h) -->
+ (ALL x::bool list.
+ x mem alg_canon_merge l b --> ~ IS_PREFIX h x & ~ IS_PREFIX x h)"
by (import prob_canon ALG_CANON_MERGE_PREFIXFREE_PRESERVE)
-lemma ALG_CANON_MERGE_SHORTENS: "(All::(bool list => bool) => bool)
- (%l::bool list.
- (All::(bool list list => bool) => bool)
- (%b::bool list list.
- (All::(bool list => bool) => bool)
- (%x::bool list.
- (op -->::bool => bool => bool)
- ((op mem::bool list => bool list list => bool) x
- ((alg_canon_merge::bool list
- => bool list list => bool list list)
- l b))
- ((Ex::(bool list => bool) => bool)
- (%y::bool list.
- (op &::bool => bool => bool)
- ((op mem::bool list => bool list list => bool) y
- ((op #::bool list
- => bool list list => bool list list)
- l b))
- ((IS_PREFIX::bool list => bool list => bool) y
- x))))))"
+lemma ALG_CANON_MERGE_SHORTENS: "ALL (l::bool list) (b::bool list list) x::bool list.
+ x mem alg_canon_merge l b -->
+ (EX y::bool list. y mem l # b & IS_PREFIX y x)"
by (import prob_canon ALG_CANON_MERGE_SHORTENS)
-lemma ALG_CANON_MERGE_CONSTANT: "(All::(bool list => bool) => bool)
- (%l::bool list.
- (All::(bool list list => bool) => bool)
- (%b::bool list list.
- (op -->::bool => bool => bool)
- ((alg_twinfree::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) l b))
- ((op =::bool list list => bool list list => bool)
- ((alg_canon_merge::bool list
- => bool list list => bool list list)
- l b)
- ((op #::bool list => bool list list => bool list list) l b))))"
+lemma ALG_CANON_MERGE_CONSTANT: "ALL (l::bool list) b::bool list list.
+ alg_twinfree (l # b) --> alg_canon_merge l b = l # b"
by (import prob_canon ALG_CANON_MERGE_CONSTANT)
-lemma ALG_CANON2_PREFIXFREE_PRESERVE: "(All::(bool list list => bool) => bool)
- (%x::bool list list.
- (All::(bool list => bool) => bool)
- (%xa::bool list.
- (op -->::bool => bool => bool)
- ((All::(bool list => bool) => bool)
- (%xb::bool list.
- (op -->::bool => bool => bool)
- ((op mem::bool list => bool list list => bool) xb x)
- ((op &::bool => bool => bool)
- ((Not::bool => bool)
- ((IS_PREFIX::bool list => bool list => bool) xa xb))
- ((Not::bool => bool)
- ((IS_PREFIX::bool list => bool list => bool) xb
- xa)))))
- ((All::(bool list => bool) => bool)
- (%xb::bool list.
- (op -->::bool => bool => bool)
- ((op mem::bool list => bool list list => bool) xb
- ((alg_canon2::bool list list => bool list list) x))
- ((op &::bool => bool => bool)
- ((Not::bool => bool)
- ((IS_PREFIX::bool list => bool list => bool) xa xb))
- ((Not::bool => bool)
- ((IS_PREFIX::bool list => bool list => bool) xb
- xa)))))))"
+lemma ALG_CANON2_PREFIXFREE_PRESERVE: "ALL (x::bool list list) xa::bool list.
+ (ALL xb::bool list.
+ xb mem x --> ~ IS_PREFIX xa xb & ~ IS_PREFIX xb xa) -->
+ (ALL xb::bool list.
+ xb mem alg_canon2 x --> ~ IS_PREFIX xa xb & ~ IS_PREFIX xb xa)"
by (import prob_canon ALG_CANON2_PREFIXFREE_PRESERVE)
-lemma ALG_CANON2_SHORTENS: "(All::(bool list list => bool) => bool)
- (%x::bool list list.
- (All::(bool list => bool) => bool)
- (%xa::bool list.
- (op -->::bool => bool => bool)
- ((op mem::bool list => bool list list => bool) xa
- ((alg_canon2::bool list list => bool list list) x))
- ((Ex::(bool list => bool) => bool)
- (%y::bool list.
- (op &::bool => bool => bool)
- ((op mem::bool list => bool list list => bool) y x)
- ((IS_PREFIX::bool list => bool list => bool) y xa)))))"
+lemma ALG_CANON2_SHORTENS: "ALL (x::bool list list) xa::bool list.
+ xa mem alg_canon2 x --> (EX y::bool list. y mem x & IS_PREFIX y xa)"
by (import prob_canon ALG_CANON2_SHORTENS)
-lemma ALG_CANON2_SORTED_PREFIXFREE_TWINFREE: "(All::(bool list list => bool) => bool)
- (%x::bool list list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool) ((alg_sorted::bool list list => bool) x)
- ((alg_prefixfree::bool list list => bool) x))
- ((op &::bool => bool => bool)
- ((alg_sorted::bool list list => bool)
- ((alg_canon2::bool list list => bool list list) x))
- ((op &::bool => bool => bool)
- ((alg_prefixfree::bool list list => bool)
- ((alg_canon2::bool list list => bool list list) x))
- ((alg_twinfree::bool list list => bool)
- ((alg_canon2::bool list list => bool list list) x)))))"
+lemma ALG_CANON2_SORTED_PREFIXFREE_TWINFREE: "ALL x::bool list list.
+ alg_sorted x & alg_prefixfree x -->
+ alg_sorted (alg_canon2 x) &
+ alg_prefixfree (alg_canon2 x) & alg_twinfree (alg_canon2 x)"
by (import prob_canon ALG_CANON2_SORTED_PREFIXFREE_TWINFREE)
-lemma ALG_CANON2_CONSTANT: "(All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((alg_twinfree::bool list list => bool) l)
- ((op =::bool list list => bool list list => bool)
- ((alg_canon2::bool list list => bool list list) l) l))"
+lemma ALG_CANON2_CONSTANT: "ALL l::bool list list. alg_twinfree l --> alg_canon2 l = l"
by (import prob_canon ALG_CANON2_CONSTANT)
lemma ALG_CANON_SORTED_PREFIXFREE_TWINFREE: "ALL l::bool list list.
@@ -1774,15 +1006,8 @@
alg_prefixfree (alg_canon l) & alg_twinfree (alg_canon l)"
by (import prob_canon ALG_CANON_SORTED_PREFIXFREE_TWINFREE)
-lemma ALG_CANON_CONSTANT: "(All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool) ((alg_sorted::bool list list => bool) l)
- ((op &::bool => bool => bool)
- ((alg_prefixfree::bool list list => bool) l)
- ((alg_twinfree::bool list list => bool) l)))
- ((op =::bool list list => bool list list => bool)
- ((alg_canon::bool list list => bool list list) l) l))"
+lemma ALG_CANON_CONSTANT: "ALL l::bool list list.
+ alg_sorted l & alg_prefixfree l & alg_twinfree l --> alg_canon l = l"
by (import prob_canon ALG_CANON_CONSTANT)
lemma ALG_CANON_IDEMPOT: "ALL l::bool list list. alg_canon (alg_canon l) = alg_canon l"
@@ -1800,14 +1025,8 @@
alg_canon [[]] = [[]] & (ALL x::bool list. alg_canon [x] = [x])"
by (import prob_canon ALG_CANON_BASIC)
-lemma ALGEBRA_CANON_TL: "(All::(bool list => bool) => bool)
- (%h::bool list.
- (All::(bool list list => bool) => bool)
- (%t::bool list list.
- (op -->::bool => bool => bool)
- ((algebra_canon::bool list list => bool)
- ((op #::bool list => bool list list => bool list list) h t))
- ((algebra_canon::bool list list => bool) t)))"
+lemma ALGEBRA_CANON_TL: "ALL (h::bool list) t::bool list list.
+ algebra_canon (h # t) --> algebra_canon t"
by (import prob_canon ALGEBRA_CANON_TL)
lemma ALGEBRA_CANON_NIL_MEM: "ALL l::bool list list. (algebra_canon l & [] mem l) = (l = [[]])"
@@ -1817,211 +1036,52 @@
algebra_canon (map (op # b) l) = algebra_canon l"
by (import prob_canon ALGEBRA_CANON_TLS)
-lemma ALGEBRA_CANON_STEP1: "(All::(bool list list => bool) => bool)
- (%l1::bool list list.
- (All::(bool list list => bool) => bool)
- (%l2::bool list list.
- (op -->::bool => bool => bool)
- ((algebra_canon::bool list list => bool)
- ((op @::bool list list => bool list list => bool list list)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list) (True::bool)) l1)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list) (False::bool))
- l2)))
- ((op &::bool => bool => bool)
- ((algebra_canon::bool list list => bool) l1)
- ((algebra_canon::bool list list => bool) l2))))"
+lemma ALGEBRA_CANON_STEP1: "ALL (l1::bool list list) l2::bool list list.
+ algebra_canon (map (op # True) l1 @ map (op # False) l2) -->
+ algebra_canon l1 & algebra_canon l2"
by (import prob_canon ALGEBRA_CANON_STEP1)
-lemma ALGEBRA_CANON_STEP2: "(All::(bool list list => bool) => bool)
- (%l1::bool list list.
- (All::(bool list list => bool) => bool)
- (%l2::bool list list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op |::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::bool list list => bool list list => bool) l1
- ((op #::bool list => bool list list => bool list list)
- ([]::bool list) ([]::bool list list))))
- ((Not::bool => bool)
- ((op =::bool list list => bool list list => bool) l2
- ((op #::bool list => bool list list => bool list list)
- ([]::bool list) ([]::bool list list)))))
- ((op &::bool => bool => bool)
- ((algebra_canon::bool list list => bool) l1)
- ((algebra_canon::bool list list => bool) l2)))
- ((algebra_canon::bool list list => bool)
- ((op @::bool list list => bool list list => bool list list)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list) (True::bool)) l1)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list) (False::bool))
- l2)))))"
+lemma ALGEBRA_CANON_STEP2: "ALL (l1::bool list list) l2::bool list list.
+ (l1 ~= [[]] | l2 ~= [[]]) & algebra_canon l1 & algebra_canon l2 -->
+ algebra_canon (map (op # True) l1 @ map (op # False) l2)"
by (import prob_canon ALGEBRA_CANON_STEP2)
-lemma ALGEBRA_CANON_STEP: "(All::(bool list list => bool) => bool)
- (%l1::bool list list.
- (All::(bool list list => bool) => bool)
- (%l2::bool list list.
- (op -->::bool => bool => bool)
- ((op |::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::bool list list => bool list list => bool) l1
- ((op #::bool list => bool list list => bool list list)
- ([]::bool list) ([]::bool list list))))
- ((Not::bool => bool)
- ((op =::bool list list => bool list list => bool) l2
- ((op #::bool list => bool list list => bool list list)
- ([]::bool list) ([]::bool list list)))))
- ((op =::bool => bool => bool)
- ((algebra_canon::bool list list => bool)
- ((op @::bool list list => bool list list => bool list list)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list) (True::bool)) l1)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list) (False::bool))
- l2)))
- ((op &::bool => bool => bool)
- ((algebra_canon::bool list list => bool) l1)
- ((algebra_canon::bool list list => bool) l2)))))"
+lemma ALGEBRA_CANON_STEP: "ALL (l1::bool list list) l2::bool list list.
+ l1 ~= [[]] | l2 ~= [[]] -->
+ algebra_canon (map (op # True) l1 @ map (op # False) l2) =
+ (algebra_canon l1 & algebra_canon l2)"
by (import prob_canon ALGEBRA_CANON_STEP)
-lemma ALGEBRA_CANON_CASES_THM: "(All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((algebra_canon::bool list list => bool) l)
- ((op |::bool => bool => bool)
- ((op =::bool list list => bool list list => bool) l
- ([]::bool list list))
- ((op |::bool => bool => bool)
- ((op =::bool list list => bool list list => bool) l
- ((op #::bool list => bool list list => bool list list)
- ([]::bool list) ([]::bool list list)))
- ((Ex::(bool list list => bool) => bool)
- (%l1::bool list list.
- (Ex::(bool list list => bool) => bool)
- (%l2::bool list list.
- (op &::bool => bool => bool)
- ((algebra_canon::bool list list => bool) l1)
- ((op &::bool => bool => bool)
- ((algebra_canon::bool list list => bool) l2)
- ((op =::bool list list => bool list list => bool) l
- ((op @::bool list list
- => bool list list => bool list list)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (True::bool))
- l1)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (False::bool))
- l2))))))))))"
+lemma ALGEBRA_CANON_CASES_THM: "ALL l::bool list list.
+ algebra_canon l -->
+ l = [] |
+ l = [[]] |
+ (EX (l1::bool list list) l2::bool list list.
+ algebra_canon l1 &
+ algebra_canon l2 & l = map (op # True) l1 @ map (op # False) l2)"
by (import prob_canon ALGEBRA_CANON_CASES_THM)
-lemma ALGEBRA_CANON_CASES: "(All::((bool list list => bool) => bool) => bool)
- (%P::bool list list => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool) (P ([]::bool list list))
- ((op &::bool => bool => bool)
- (P ((op #::bool list => bool list list => bool list list)
- ([]::bool list) ([]::bool list list)))
- ((All::(bool list list => bool) => bool)
- (%l1::bool list list.
- (All::(bool list list => bool) => bool)
- (%l2::bool list list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((algebra_canon::bool list list => bool) l1)
- ((op &::bool => bool => bool)
- ((algebra_canon::bool list list => bool) l2)
- ((algebra_canon::bool list list => bool)
- ((op @::bool list list
- => bool list list => bool list list)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (True::bool))
- l1)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (False::bool))
- l2)))))
- (P ((op @::bool list list
- => bool list list => bool list list)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (True::bool))
- l1)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (False::bool))
- l2))))))))
- ((All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((algebra_canon::bool list list => bool) l) (P l))))"
+lemma ALGEBRA_CANON_CASES: "ALL P::bool list list => bool.
+ P [] &
+ P [[]] &
+ (ALL (l1::bool list list) l2::bool list list.
+ algebra_canon l1 &
+ algebra_canon l2 &
+ algebra_canon (map (op # True) l1 @ map (op # False) l2) -->
+ P (map (op # True) l1 @ map (op # False) l2)) -->
+ (ALL l::bool list list. algebra_canon l --> P l)"
by (import prob_canon ALGEBRA_CANON_CASES)
-lemma ALGEBRA_CANON_INDUCTION: "(All::((bool list list => bool) => bool) => bool)
- (%P::bool list list => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool) (P ([]::bool list list))
- ((op &::bool => bool => bool)
- (P ((op #::bool list => bool list list => bool list list)
- ([]::bool list) ([]::bool list list)))
- ((All::(bool list list => bool) => bool)
- (%l1::bool list list.
- (All::(bool list list => bool) => bool)
- (%l2::bool list list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((algebra_canon::bool list list => bool) l1)
- ((op &::bool => bool => bool)
- ((algebra_canon::bool list list => bool) l2)
- ((op &::bool => bool => bool) (P l1)
- ((op &::bool => bool => bool) (P l2)
- ((algebra_canon::bool list list => bool)
- ((op @::bool list list
- => bool list list => bool list list)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
-(True::bool))
- l1)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
-(False::bool))
- l2)))))))
- (P ((op @::bool list list
- => bool list list => bool list list)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (True::bool))
- l1)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (False::bool))
- l2))))))))
- ((All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((algebra_canon::bool list list => bool) l) (P l))))"
+lemma ALGEBRA_CANON_INDUCTION: "ALL P::bool list list => bool.
+ P [] &
+ P [[]] &
+ (ALL (l1::bool list list) l2::bool list list.
+ algebra_canon l1 &
+ algebra_canon l2 &
+ P l1 &
+ P l2 & algebra_canon (map (op # True) l1 @ map (op # False) l2) -->
+ P (map (op # True) l1 @ map (op # False) l2)) -->
+ (ALL l::bool list list. algebra_canon l --> P l)"
by (import prob_canon ALGEBRA_CANON_INDUCTION)
lemma MEM_NIL_STEP: "ALL (l1::bool list list) l2::bool list list.
@@ -2032,25 +1092,10 @@
(alg_sorted l & alg_prefixfree l & [] mem l) = (l = [[]])"
by (import prob_canon ALG_SORTED_PREFIXFREE_MEM_NIL)
-lemma ALG_SORTED_PREFIXFREE_EQUALITY: "(All::(bool list list => bool) => bool)
- (%l::bool list list.
- (All::(bool list list => bool) => bool)
- (%l'::bool list list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((All::(bool list => bool) => bool)
- (%x::bool list.
- (op =::bool => bool => bool)
- ((op mem::bool list => bool list list => bool) x l)
- ((op mem::bool list => bool list list => bool) x l')))
- ((op &::bool => bool => bool)
- ((alg_sorted::bool list list => bool) l)
- ((op &::bool => bool => bool)
- ((alg_sorted::bool list list => bool) l')
- ((op &::bool => bool => bool)
- ((alg_prefixfree::bool list list => bool) l)
- ((alg_prefixfree::bool list list => bool) l')))))
- ((op =::bool list list => bool list list => bool) l l')))"
+lemma ALG_SORTED_PREFIXFREE_EQUALITY: "ALL (l::bool list list) l'::bool list list.
+ (ALL x::bool list. x mem l = x mem l') &
+ alg_sorted l & alg_sorted l' & alg_prefixfree l & alg_prefixfree l' -->
+ l = l'"
by (import prob_canon ALG_SORTED_PREFIXFREE_EQUALITY)
;end_setup
@@ -2187,19 +1232,8 @@
lemma ALG_EMBED_POPULATED: "ALL b::bool list. Ex (alg_embed b)"
by (import prob_algebra ALG_EMBED_POPULATED)
-lemma ALG_EMBED_PREFIX: "(All::(bool list => bool) => bool)
- (%b::bool list.
- (All::(bool list => bool) => bool)
- (%c::bool list.
- (All::((nat => bool) => bool) => bool)
- (%s::nat => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((alg_embed::bool list => (nat => bool) => bool) b s)
- ((alg_embed::bool list => (nat => bool) => bool) c s))
- ((op |::bool => bool => bool)
- ((IS_PREFIX::bool list => bool list => bool) b c)
- ((IS_PREFIX::bool list => bool list => bool) c b)))))"
+lemma ALG_EMBED_PREFIX: "ALL (b::bool list) (c::bool list) s::nat => bool.
+ alg_embed b s & alg_embed c s --> IS_PREFIX b c | IS_PREFIX c b"
by (import prob_algebra ALG_EMBED_PREFIX)
lemma ALG_EMBED_PREFIX_SUBSET: "ALL (b::bool list) c::bool list.
@@ -2216,17 +1250,8 @@
(ALL b::bool. algebra_embed [[b]] = (%s::nat => bool. SHD s = b))"
by (import prob_algebra ALGEBRA_EMBED_BASIC)
-lemma ALGEBRA_EMBED_MEM: "(All::(bool list list => bool) => bool)
- (%b::bool list list.
- (All::((nat => bool) => bool) => bool)
- (%x::nat => bool.
- (op -->::bool => bool => bool)
- ((algebra_embed::bool list list => (nat => bool) => bool) b x)
- ((Ex::(bool list => bool) => bool)
- (%l::bool list.
- (op &::bool => bool => bool)
- ((op mem::bool list => bool list list => bool) l b)
- ((alg_embed::bool list => (nat => bool) => bool) l x)))))"
+lemma ALGEBRA_EMBED_MEM: "ALL (b::bool list list) x::nat => bool.
+ algebra_embed b x --> (EX l::bool list. l mem b & alg_embed l x)"
by (import prob_algebra ALGEBRA_EMBED_MEM)
lemma ALGEBRA_EMBED_APPEND: "ALL (l1::bool list list) l2::bool list list.
@@ -2260,47 +1285,20 @@
lemma ALG_CANON_EMBED: "ALL l::bool list list. algebra_embed (alg_canon l) = algebra_embed l"
by (import prob_algebra ALG_CANON_EMBED)
-lemma ALGEBRA_CANON_UNIV: "(All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((algebra_canon::bool list list => bool) l)
- ((op -->::bool => bool => bool)
- ((op =::((nat => bool) => bool) => ((nat => bool) => bool) => bool)
- ((algebra_embed::bool list list => (nat => bool) => bool) l)
- (pred_set.UNIV::(nat => bool) => bool))
- ((op =::bool list list => bool list list => bool) l
- ((op #::bool list => bool list list => bool list list)
- ([]::bool list) ([]::bool list list)))))"
+lemma ALGEBRA_CANON_UNIV: "ALL l::bool list list.
+ algebra_canon l --> algebra_embed l = pred_set.UNIV --> l = [[]]"
by (import prob_algebra ALGEBRA_CANON_UNIV)
lemma ALG_CANON_REP: "ALL (b::bool list list) c::bool list list.
(alg_canon b = alg_canon c) = (algebra_embed b = algebra_embed c)"
by (import prob_algebra ALG_CANON_REP)
-lemma ALGEBRA_CANON_EMBED_EMPTY: "(All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((algebra_canon::bool list list => bool) l)
- ((op =::bool => bool => bool)
- ((All::((nat => bool) => bool) => bool)
- (%v::nat => bool.
- (Not::bool => bool)
- ((algebra_embed::bool list list => (nat => bool) => bool) l
- v)))
- ((op =::bool list list => bool list list => bool) l
- ([]::bool list list))))"
+lemma ALGEBRA_CANON_EMBED_EMPTY: "ALL l::bool list list.
+ algebra_canon l --> (ALL v::nat => bool. ~ algebra_embed l v) = (l = [])"
by (import prob_algebra ALGEBRA_CANON_EMBED_EMPTY)
-lemma ALGEBRA_CANON_EMBED_UNIV: "(All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((algebra_canon::bool list list => bool) l)
- ((op =::bool => bool => bool)
- ((All::((nat => bool) => bool) => bool)
- ((algebra_embed::bool list list => (nat => bool) => bool) l))
- ((op =::bool list list => bool list list => bool) l
- ((op #::bool list => bool list list => bool list list)
- ([]::bool list) ([]::bool list list)))))"
+lemma ALGEBRA_CANON_EMBED_UNIV: "ALL l::bool list list.
+ algebra_canon l --> All (algebra_embed l) = (l = [[]])"
by (import prob_algebra ALGEBRA_CANON_EMBED_UNIV)
lemma MEASURABLE_ALGEBRA: "ALL b::bool list list. measurable (algebra_embed b)"
@@ -2321,34 +1319,12 @@
lemma MEASURABLE_COMPL: "ALL s::(nat => bool) => bool. measurable (COMPL s) = measurable s"
by (import prob_algebra MEASURABLE_COMPL)
-lemma MEASURABLE_UNION: "(All::(((nat => bool) => bool) => bool) => bool)
- (%s::(nat => bool) => bool.
- (All::(((nat => bool) => bool) => bool) => bool)
- (%t::(nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((measurable::((nat => bool) => bool) => bool) s)
- ((measurable::((nat => bool) => bool) => bool) t))
- ((measurable::((nat => bool) => bool) => bool)
- ((pred_set.UNION::((nat => bool) => bool)
- => ((nat => bool) => bool)
- => (nat => bool) => bool)
- s t))))"
+lemma MEASURABLE_UNION: "ALL (s::(nat => bool) => bool) t::(nat => bool) => bool.
+ measurable s & measurable t --> measurable (pred_set.UNION s t)"
by (import prob_algebra MEASURABLE_UNION)
-lemma MEASURABLE_INTER: "(All::(((nat => bool) => bool) => bool) => bool)
- (%s::(nat => bool) => bool.
- (All::(((nat => bool) => bool) => bool) => bool)
- (%t::(nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((measurable::((nat => bool) => bool) => bool) s)
- ((measurable::((nat => bool) => bool) => bool) t))
- ((measurable::((nat => bool) => bool) => bool)
- ((pred_set.INTER::((nat => bool) => bool)
- => ((nat => bool) => bool)
- => (nat => bool) => bool)
- s t))))"
+lemma MEASURABLE_INTER: "ALL (s::(nat => bool) => bool) t::(nat => bool) => bool.
+ measurable s & measurable t --> measurable (pred_set.INTER s t)"
by (import prob_algebra MEASURABLE_INTER)
lemma MEASURABLE_STL: "ALL p::(nat => bool) => bool. measurable (p o STL) = measurable p"
@@ -2497,97 +1473,35 @@
algebra_measure [[]] = 1 & (ALL b::bool. algebra_measure [[b]] = 1 / 2)"
by (import prob ALGEBRA_MEASURE_BASIC)
-lemma ALGEBRA_CANON_MEASURE_MAX: "(All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((algebra_canon::bool list list => bool) l)
- ((op <=::real => real => bool)
- ((alg_measure::bool list list => real) l) (1::real)))"
+lemma ALGEBRA_CANON_MEASURE_MAX: "ALL l::bool list list. algebra_canon l --> alg_measure l <= 1"
by (import prob ALGEBRA_CANON_MEASURE_MAX)
lemma ALGEBRA_MEASURE_MAX: "ALL l::bool list list. algebra_measure l <= 1"
by (import prob ALGEBRA_MEASURE_MAX)
-lemma ALGEBRA_MEASURE_MONO_EMBED: "(All::(bool list list => bool) => bool)
- (%x::bool list list.
- (All::(bool list list => bool) => bool)
- (%xa::bool list list.
- (op -->::bool => bool => bool)
- ((SUBSET::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- ((algebra_embed::bool list list => (nat => bool) => bool) x)
- ((algebra_embed::bool list list => (nat => bool) => bool) xa))
- ((op <=::real => real => bool)
- ((algebra_measure::bool list list => real) x)
- ((algebra_measure::bool list list => real) xa))))"
+lemma ALGEBRA_MEASURE_MONO_EMBED: "ALL (x::bool list list) xa::bool list list.
+ SUBSET (algebra_embed x) (algebra_embed xa) -->
+ algebra_measure x <= algebra_measure xa"
by (import prob ALGEBRA_MEASURE_MONO_EMBED)
-lemma ALG_MEASURE_COMPL: "(All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((algebra_canon::bool list list => bool) l)
- ((All::(bool list list => bool) => bool)
- (%c::bool list list.
- (op -->::bool => bool => bool)
- ((algebra_canon::bool list list => bool) c)
- ((op -->::bool => bool => bool)
- ((op =::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- ((COMPL::((nat => bool) => bool) => (nat => bool) => bool)
- ((algebra_embed::bool list list => (nat => bool) => bool)
- l))
- ((algebra_embed::bool list list => (nat => bool) => bool)
- c))
- ((op =::real => real => bool)
- ((op +::real => real => real)
- ((alg_measure::bool list list => real) l)
- ((alg_measure::bool list list => real) c))
- (1::real))))))"
+lemma ALG_MEASURE_COMPL: "ALL l::bool list list.
+ algebra_canon l -->
+ (ALL c::bool list list.
+ algebra_canon c -->
+ COMPL (algebra_embed l) = algebra_embed c -->
+ alg_measure l + alg_measure c = 1)"
by (import prob ALG_MEASURE_COMPL)
-lemma ALG_MEASURE_ADDITIVE: "(All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((algebra_canon::bool list list => bool) l)
- ((All::(bool list list => bool) => bool)
- (%c::bool list list.
- (op -->::bool => bool => bool)
- ((algebra_canon::bool list list => bool) c)
- ((All::(bool list list => bool) => bool)
- (%d::bool list list.
- (op -->::bool => bool => bool)
- ((algebra_canon::bool list list => bool) d)
- ((op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op =::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- ((pred_set.INTER::((nat => bool) => bool)
- => ((nat => bool) => bool) => (nat => bool) => bool)
- ((algebra_embed::bool list list
- => (nat => bool) => bool)
- c)
- ((algebra_embed::bool list list
- => (nat => bool) => bool)
- d))
- (EMPTY::(nat => bool) => bool))
- ((op =::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- ((algebra_embed::bool list list
- => (nat => bool) => bool)
- l)
- ((pred_set.UNION::((nat => bool) => bool)
- => ((nat => bool) => bool) => (nat => bool) => bool)
- ((algebra_embed::bool list list
- => (nat => bool) => bool)
- c)
- ((algebra_embed::bool list list
- => (nat => bool) => bool)
- d))))
- ((op =::real => real => bool)
- ((alg_measure::bool list list => real) l)
- ((op +::real => real => real)
- ((alg_measure::bool list list => real) c)
- ((alg_measure::bool list list => real) d)))))))))"
+lemma ALG_MEASURE_ADDITIVE: "ALL l::bool list list.
+ algebra_canon l -->
+ (ALL c::bool list list.
+ algebra_canon c -->
+ (ALL d::bool list list.
+ algebra_canon d -->
+ pred_set.INTER (algebra_embed c) (algebra_embed d) = EMPTY &
+ algebra_embed l =
+ pred_set.UNION (algebra_embed c) (algebra_embed d) -->
+ alg_measure l = alg_measure c + alg_measure d))"
by (import prob ALG_MEASURE_ADDITIVE)
lemma PROB_ALGEBRA: "ALL l::bool list list. prob (algebra_embed l) = algebra_measure l"
@@ -2598,42 +1512,12 @@
(ALL b::bool. prob (%s::nat => bool. SHD s = b) = 1 / 2)"
by (import prob PROB_BASIC)
-lemma PROB_ADDITIVE: "(All::(((nat => bool) => bool) => bool) => bool)
- (%s::(nat => bool) => bool.
- (All::(((nat => bool) => bool) => bool) => bool)
- (%t::(nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((measurable::((nat => bool) => bool) => bool) s)
- ((op &::bool => bool => bool)
- ((measurable::((nat => bool) => bool) => bool) t)
- ((op =::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- ((pred_set.INTER::((nat => bool) => bool)
- => ((nat => bool) => bool)
-=> (nat => bool) => bool)
- s t)
- (EMPTY::(nat => bool) => bool))))
- ((op =::real => real => bool)
- ((prob::((nat => bool) => bool) => real)
- ((pred_set.UNION::((nat => bool) => bool)
- => ((nat => bool) => bool)
- => (nat => bool) => bool)
- s t))
- ((op +::real => real => real)
- ((prob::((nat => bool) => bool) => real) s)
- ((prob::((nat => bool) => bool) => real) t)))))"
+lemma PROB_ADDITIVE: "ALL (s::(nat => bool) => bool) t::(nat => bool) => bool.
+ measurable s & measurable t & pred_set.INTER s t = EMPTY -->
+ prob (pred_set.UNION s t) = prob s + prob t"
by (import prob PROB_ADDITIVE)
-lemma PROB_COMPL: "(All::(((nat => bool) => bool) => bool) => bool)
- (%s::(nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((measurable::((nat => bool) => bool) => bool) s)
- ((op =::real => real => bool)
- ((prob::((nat => bool) => bool) => real)
- ((COMPL::((nat => bool) => bool) => (nat => bool) => bool) s))
- ((op -::real => real => real) (1::real)
- ((prob::((nat => bool) => bool) => real) s))))"
+lemma PROB_COMPL: "ALL s::(nat => bool) => bool. measurable s --> prob (COMPL s) = 1 - prob s"
by (import prob PROB_COMPL)
lemma PROB_SUP_EXISTS1: "ALL s::(nat => bool) => bool.
@@ -2641,160 +1525,51 @@
algebra_measure b = x & SUBSET (algebra_embed b) s"
by (import prob PROB_SUP_EXISTS1)
-lemma PROB_SUP_EXISTS2: "(All::(((nat => bool) => bool) => bool) => bool)
- (%s::(nat => bool) => bool.
- (Ex::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%r::real.
- (op -->::bool => bool => bool)
- ((Ex::(bool list list => bool) => bool)
- (%b::bool list list.
- (op &::bool => bool => bool)
- ((op =::real => real => bool)
- ((algebra_measure::bool list list => real) b) r)
- ((SUBSET::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- ((algebra_embed::bool list list
- => (nat => bool) => bool)
- b)
- s)))
- ((op <=::real => real => bool) r x))))"
+lemma PROB_SUP_EXISTS2: "ALL s::(nat => bool) => bool.
+ EX x::real.
+ ALL r::real.
+ (EX b::bool list list.
+ algebra_measure b = r & SUBSET (algebra_embed b) s) -->
+ r <= x"
by (import prob PROB_SUP_EXISTS2)
-lemma PROB_LE_X: "(All::(((nat => bool) => bool) => bool) => bool)
- (%s::(nat => bool) => bool.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((All::(((nat => bool) => bool) => bool) => bool)
- (%s'::(nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((measurable::((nat => bool) => bool) => bool) s')
- ((SUBSET::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- s' s))
- ((op <=::real => real => bool)
- ((prob::((nat => bool) => bool) => real) s') x)))
- ((op <=::real => real => bool)
- ((prob::((nat => bool) => bool) => real) s) x)))"
+lemma PROB_LE_X: "ALL (s::(nat => bool) => bool) x::real.
+ (ALL s'::(nat => bool) => bool.
+ measurable s' & SUBSET s' s --> prob s' <= x) -->
+ prob s <= x"
by (import prob PROB_LE_X)
-lemma X_LE_PROB: "(All::(((nat => bool) => bool) => bool) => bool)
- (%s::(nat => bool) => bool.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((Ex::(((nat => bool) => bool) => bool) => bool)
- (%s'::(nat => bool) => bool.
- (op &::bool => bool => bool)
- ((measurable::((nat => bool) => bool) => bool) s')
- ((op &::bool => bool => bool)
- ((SUBSET::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- s' s)
- ((op <=::real => real => bool) x
- ((prob::((nat => bool) => bool) => real) s')))))
- ((op <=::real => real => bool) x
- ((prob::((nat => bool) => bool) => real) s))))"
+lemma X_LE_PROB: "ALL (s::(nat => bool) => bool) x::real.
+ (EX s'::(nat => bool) => bool.
+ measurable s' & SUBSET s' s & x <= prob s') -->
+ x <= prob s"
by (import prob X_LE_PROB)
-lemma PROB_SUBSET_MONO: "(All::(((nat => bool) => bool) => bool) => bool)
- (%s::(nat => bool) => bool.
- (All::(((nat => bool) => bool) => bool) => bool)
- (%t::(nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((SUBSET::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- s t)
- ((op <=::real => real => bool)
- ((prob::((nat => bool) => bool) => real) s)
- ((prob::((nat => bool) => bool) => real) t))))"
+lemma PROB_SUBSET_MONO: "ALL (s::(nat => bool) => bool) t::(nat => bool) => bool.
+ SUBSET s t --> prob s <= prob t"
by (import prob PROB_SUBSET_MONO)
lemma PROB_ALG: "ALL x::bool list. prob (alg_embed x) = (1 / 2) ^ length x"
by (import prob PROB_ALG)
-lemma PROB_STL: "(All::(((nat => bool) => bool) => bool) => bool)
- (%p::(nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((measurable::((nat => bool) => bool) => bool) p)
- ((op =::real => real => bool)
- ((prob::((nat => bool) => bool) => real)
- ((op o::((nat => bool) => bool)
- => ((nat => bool) => nat => bool)
- => (nat => bool) => bool)
- p (STL::(nat => bool) => nat => bool)))
- ((prob::((nat => bool) => bool) => real) p)))"
+lemma PROB_STL: "ALL p::(nat => bool) => bool. measurable p --> prob (p o STL) = prob p"
by (import prob PROB_STL)
-lemma PROB_SDROP: "(All::(nat => bool) => bool)
- (%n::nat.
- (All::(((nat => bool) => bool) => bool) => bool)
- (%p::(nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((measurable::((nat => bool) => bool) => bool) p)
- ((op =::real => real => bool)
- ((prob::((nat => bool) => bool) => real)
- ((op o::((nat => bool) => bool)
- => ((nat => bool) => nat => bool)
- => (nat => bool) => bool)
- p ((SDROP::nat => (nat => bool) => nat => bool) n)))
- ((prob::((nat => bool) => bool) => real) p))))"
+lemma PROB_SDROP: "ALL (n::nat) p::(nat => bool) => bool.
+ measurable p --> prob (p o SDROP n) = prob p"
by (import prob PROB_SDROP)
-lemma PROB_INTER_HALVES: "(All::(((nat => bool) => bool) => bool) => bool)
- (%p::(nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((measurable::((nat => bool) => bool) => bool) p)
- ((op =::real => real => bool)
- ((op +::real => real => real)
- ((prob::((nat => bool) => bool) => real)
- ((pred_set.INTER::((nat => bool) => bool)
- => ((nat => bool) => bool)
- => (nat => bool) => bool)
- (%x::nat => bool.
- (op =::bool => bool => bool)
- ((SHD::(nat => bool) => bool) x) (True::bool))
- p))
- ((prob::((nat => bool) => bool) => real)
- ((pred_set.INTER::((nat => bool) => bool)
- => ((nat => bool) => bool)
- => (nat => bool) => bool)
- (%x::nat => bool.
- (op =::bool => bool => bool)
- ((SHD::(nat => bool) => bool) x) (False::bool))
- p)))
- ((prob::((nat => bool) => bool) => real) p)))"
+lemma PROB_INTER_HALVES: "ALL p::(nat => bool) => bool.
+ measurable p -->
+ prob (pred_set.INTER (%x::nat => bool. SHD x = True) p) +
+ prob (pred_set.INTER (%x::nat => bool. SHD x = False) p) =
+ prob p"
by (import prob PROB_INTER_HALVES)
-lemma PROB_INTER_SHD: "(All::(bool => bool) => bool)
- (%b::bool.
- (All::(((nat => bool) => bool) => bool) => bool)
- (%p::(nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((measurable::((nat => bool) => bool) => bool) p)
- ((op =::real => real => bool)
- ((prob::((nat => bool) => bool) => real)
- ((pred_set.INTER::((nat => bool) => bool)
- => ((nat => bool) => bool)
- => (nat => bool) => bool)
- (%x::nat => bool.
- (op =::bool => bool => bool)
- ((SHD::(nat => bool) => bool) x) b)
- ((op o::((nat => bool) => bool)
- => ((nat => bool) => nat => bool)
- => (nat => bool) => bool)
- p (STL::(nat => bool) => nat => bool))))
- ((op *::real => real => real)
- ((op /::real => real => real) (1::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))
- ((prob::((nat => bool) => bool) => real) p)))))"
+lemma PROB_INTER_SHD: "ALL (b::bool) p::(nat => bool) => bool.
+ measurable p -->
+ prob (pred_set.INTER (%x::nat => bool. SHD x = b) (p o STL)) =
+ 1 / 2 * prob p"
by (import prob PROB_INTER_SHD)
lemma ALGEBRA_MEASURE_POS: "ALL l::bool list list. 0 <= algebra_measure l"
@@ -2818,21 +1593,8 @@
lemma PROB_SHD: "ALL b::bool. prob (%s::nat => bool. SHD s = b) = 1 / 2"
by (import prob PROB_SHD)
-lemma PROB_COMPL_LE1: "(All::(((nat => bool) => bool) => bool) => bool)
- (%p::(nat => bool) => bool.
- (All::(real => bool) => bool)
- (%r::real.
- (op -->::bool => bool => bool)
- ((measurable::((nat => bool) => bool) => bool) p)
- ((op =::bool => bool => bool)
- ((op <=::real => real => bool)
- ((prob::((nat => bool) => bool) => real)
- ((COMPL::((nat => bool) => bool) => (nat => bool) => bool)
- p))
- r)
- ((op <=::real => real => bool)
- ((op -::real => real => real) (1::real) r)
- ((prob::((nat => bool) => bool) => real) p)))))"
+lemma PROB_COMPL_LE1: "ALL (p::(nat => bool) => bool) r::real.
+ measurable p --> (prob (COMPL p) <= r) = (1 - r <= prob p)"
by (import prob PROB_COMPL_LE1)
;end_setup
@@ -2981,103 +1743,34 @@
(let c::bool list = alg_cover l s in (r c, SDROP (length c) s))))"
by (import prob_indep indep_def)
-lemma INDEP_SET_BASIC: "(All::(((nat => bool) => bool) => bool) => bool)
- (%p::(nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((measurable::((nat => bool) => bool) => bool) p)
- ((op &::bool => bool => bool)
- ((indep_set::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- (EMPTY::(nat => bool) => bool) p)
- ((indep_set::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- (pred_set.UNIV::(nat => bool) => bool) p)))"
+lemma INDEP_SET_BASIC: "ALL p::(nat => bool) => bool.
+ measurable p --> indep_set EMPTY p & indep_set pred_set.UNIV p"
by (import prob_indep INDEP_SET_BASIC)
lemma INDEP_SET_SYM: "ALL (p::(nat => bool) => bool) q::(nat => bool) => bool.
indep_set p q = indep_set p q"
by (import prob_indep INDEP_SET_SYM)
-lemma INDEP_SET_DISJOINT_DECOMP: "(All::(((nat => bool) => bool) => bool) => bool)
- (%p::(nat => bool) => bool.
- (All::(((nat => bool) => bool) => bool) => bool)
- (%q::(nat => bool) => bool.
- (All::(((nat => bool) => bool) => bool) => bool)
- (%r::(nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((indep_set::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- p r)
- ((op &::bool => bool => bool)
- ((indep_set::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- q r)
- ((op =::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- ((pred_set.INTER::((nat => bool) => bool)
- => ((nat => bool) => bool) => (nat => bool) => bool)
- p q)
- (EMPTY::(nat => bool) => bool))))
- ((indep_set::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- ((pred_set.UNION::((nat => bool) => bool)
- => ((nat => bool) => bool)
- => (nat => bool) => bool)
- p q)
- r))))"
+lemma INDEP_SET_DISJOINT_DECOMP: "ALL (p::(nat => bool) => bool) (q::(nat => bool) => bool)
+ r::(nat => bool) => bool.
+ indep_set p r & indep_set q r & pred_set.INTER p q = EMPTY -->
+ indep_set (pred_set.UNION p q) r"
by (import prob_indep INDEP_SET_DISJOINT_DECOMP)
lemma ALG_COVER_SET_BASIC: "~ alg_cover_set [] & alg_cover_set [[]] & alg_cover_set [[True], [False]]"
by (import prob_indep ALG_COVER_SET_BASIC)
-lemma ALG_COVER_WELL_DEFINED: "(All::(bool list list => bool) => bool)
- (%l::bool list list.
- (All::((nat => bool) => bool) => bool)
- (%x::nat => bool.
- (op -->::bool => bool => bool)
- ((alg_cover_set::bool list list => bool) l)
- ((op &::bool => bool => bool)
- ((op mem::bool list => bool list list => bool)
- ((alg_cover::bool list list => (nat => bool) => bool list) l
- x)
- l)
- ((alg_embed::bool list => (nat => bool) => bool)
- ((alg_cover::bool list list => (nat => bool) => bool list) l
- x)
- x))))"
+lemma ALG_COVER_WELL_DEFINED: "ALL (l::bool list list) x::nat => bool.
+ alg_cover_set l --> alg_cover l x mem l & alg_embed (alg_cover l x) x"
by (import prob_indep ALG_COVER_WELL_DEFINED)
lemma ALG_COVER_UNIV: "alg_cover [[]] = K []"
by (import prob_indep ALG_COVER_UNIV)
-lemma MAP_CONS_TL_FILTER: "(All::(bool list list => bool) => bool)
- (%l::bool list list.
- (All::(bool => bool) => bool)
- (%b::bool.
- (op -->::bool => bool => bool)
- ((Not::bool => bool)
- ((op mem::bool list => bool list list => bool) ([]::bool list)
- l))
- ((op =::bool list list => bool list list => bool)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list) b)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- (tl::bool list => bool list)
- ((filter::(bool list => bool)
- => bool list list => bool list list)
- (%x::bool list.
- (op =::bool => bool => bool)
- ((hd::bool list => bool) x) b)
- l)))
- ((filter::(bool list => bool)
- => bool list list => bool list list)
- (%x::bool list.
- (op =::bool => bool => bool) ((hd::bool list => bool) x)
- b)
- l))))"
+lemma MAP_CONS_TL_FILTER: "ALL (l::bool list list) b::bool.
+ ~ [] mem l -->
+ map (op # b) (map tl [x::bool list:l. hd x = b]) =
+ [x::bool list:l. hd x = b]"
by (import prob_indep MAP_CONS_TL_FILTER)
lemma ALG_COVER_SET_CASES_THM: "ALL l::bool list list.
@@ -3088,409 +1781,100 @@
alg_cover_set xa & l = map (op # True) x @ map (op # False) xa))"
by (import prob_indep ALG_COVER_SET_CASES_THM)
-lemma ALG_COVER_SET_CASES: "(All::((bool list list => bool) => bool) => bool)
- (%P::bool list list => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- (P ((op #::bool list => bool list list => bool list list)
- ([]::bool list) ([]::bool list list)))
- ((All::(bool list list => bool) => bool)
- (%l1::bool list list.
- (All::(bool list list => bool) => bool)
- (%l2::bool list list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((alg_cover_set::bool list list => bool) l1)
- ((op &::bool => bool => bool)
- ((alg_cover_set::bool list list => bool) l2)
- ((alg_cover_set::bool list list => bool)
- ((op @::bool list list
- => bool list list => bool list list)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (True::bool))
- l1)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (False::bool))
- l2)))))
- (P ((op @::bool list list
- => bool list list => bool list list)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (True::bool))
- l1)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (False::bool))
- l2)))))))
- ((All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((alg_cover_set::bool list list => bool) l) (P l))))"
+lemma ALG_COVER_SET_CASES: "ALL P::bool list list => bool.
+ P [[]] &
+ (ALL (l1::bool list list) l2::bool list list.
+ alg_cover_set l1 &
+ alg_cover_set l2 &
+ alg_cover_set (map (op # True) l1 @ map (op # False) l2) -->
+ P (map (op # True) l1 @ map (op # False) l2)) -->
+ (ALL l::bool list list. alg_cover_set l --> P l)"
by (import prob_indep ALG_COVER_SET_CASES)
-lemma ALG_COVER_SET_INDUCTION: "(All::((bool list list => bool) => bool) => bool)
- (%P::bool list list => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- (P ((op #::bool list => bool list list => bool list list)
- ([]::bool list) ([]::bool list list)))
- ((All::(bool list list => bool) => bool)
- (%l1::bool list list.
- (All::(bool list list => bool) => bool)
- (%l2::bool list list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((alg_cover_set::bool list list => bool) l1)
- ((op &::bool => bool => bool)
- ((alg_cover_set::bool list list => bool) l2)
- ((op &::bool => bool => bool) (P l1)
- ((op &::bool => bool => bool) (P l2)
- ((alg_cover_set::bool list list => bool)
- ((op @::bool list list
-=> bool list list => bool list list)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (True::bool))
- l1)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (False::bool))
- l2)))))))
- (P ((op @::bool list list
- => bool list list => bool list list)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (True::bool))
- l1)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (False::bool))
- l2)))))))
- ((All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((alg_cover_set::bool list list => bool) l) (P l))))"
+lemma ALG_COVER_SET_INDUCTION: "ALL P::bool list list => bool.
+ P [[]] &
+ (ALL (l1::bool list list) l2::bool list list.
+ alg_cover_set l1 &
+ alg_cover_set l2 &
+ P l1 &
+ P l2 & alg_cover_set (map (op # True) l1 @ map (op # False) l2) -->
+ P (map (op # True) l1 @ map (op # False) l2)) -->
+ (ALL l::bool list list. alg_cover_set l --> P l)"
by (import prob_indep ALG_COVER_SET_INDUCTION)
-lemma ALG_COVER_EXISTS_UNIQUE: "(All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((alg_cover_set::bool list list => bool) l)
- ((All::((nat => bool) => bool) => bool)
- (%s::nat => bool.
- (Ex1::(bool list => bool) => bool)
- (%x::bool list.
- (op &::bool => bool => bool)
- ((op mem::bool list => bool list list => bool) x l)
- ((alg_embed::bool list => (nat => bool) => bool) x s)))))"
+lemma ALG_COVER_EXISTS_UNIQUE: "ALL l::bool list list.
+ alg_cover_set l -->
+ (ALL s::nat => bool. EX! x::bool list. x mem l & alg_embed x s)"
by (import prob_indep ALG_COVER_EXISTS_UNIQUE)
-lemma ALG_COVER_UNIQUE: "(All::(bool list list => bool) => bool)
- (%l::bool list list.
- (All::(bool list => bool) => bool)
- (%x::bool list.
- (All::((nat => bool) => bool) => bool)
- (%s::nat => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((alg_cover_set::bool list list => bool) l)
- ((op &::bool => bool => bool)
- ((op mem::bool list => bool list list => bool) x l)
- ((alg_embed::bool list => (nat => bool) => bool) x s)))
- ((op =::bool list => bool list => bool)
- ((alg_cover::bool list list => (nat => bool) => bool list)
- l s)
- x))))"
+lemma ALG_COVER_UNIQUE: "ALL (l::bool list list) (x::bool list) s::nat => bool.
+ alg_cover_set l & x mem l & alg_embed x s --> alg_cover l s = x"
by (import prob_indep ALG_COVER_UNIQUE)
-lemma ALG_COVER_STEP: "(All::(bool list list => bool) => bool)
- (%l1::bool list list.
- (All::(bool list list => bool) => bool)
- (%l2::bool list list.
- (All::(bool => bool) => bool)
- (%h::bool.
- (All::((nat => bool) => bool) => bool)
- (%t::nat => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((alg_cover_set::bool list list => bool) l1)
- ((alg_cover_set::bool list list => bool) l2))
- ((op =::bool list => bool list => bool)
- ((alg_cover::bool list list
- => (nat => bool) => bool list)
- ((op @::bool list list
- => bool list list => bool list list)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (True::bool))
- l1)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (False::bool))
- l2))
- ((SCONS::bool => (nat => bool) => nat => bool) h
- t))
- ((If::bool => bool list => bool list => bool list) h
- ((op #::bool => bool list => bool list)
- (True::bool)
- ((alg_cover::bool list list
- => (nat => bool) => bool list)
- l1 t))
- ((op #::bool => bool list => bool list)
- (False::bool)
- ((alg_cover::bool list list
- => (nat => bool) => bool list)
- l2 t))))))))"
+lemma ALG_COVER_STEP: "ALL (l1::bool list list) (l2::bool list list) (h::bool) t::nat => bool.
+ alg_cover_set l1 & alg_cover_set l2 -->
+ alg_cover (map (op # True) l1 @ map (op # False) l2) (SCONS h t) =
+ (if h then True # alg_cover l1 t else False # alg_cover l2 t)"
by (import prob_indep ALG_COVER_STEP)
-lemma ALG_COVER_HEAD: "(All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((alg_cover_set::bool list list => bool) l)
- ((All::((bool list => bool) => bool) => bool)
- (%f::bool list => bool.
- (op =::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- ((op o::(bool list => bool)
- => ((nat => bool) => bool list)
- => (nat => bool) => bool)
- f ((alg_cover::bool list list => (nat => bool) => bool list)
- l))
- ((algebra_embed::bool list list => (nat => bool) => bool)
- ((filter::(bool list => bool)
- => bool list list => bool list list)
- f l)))))"
+lemma ALG_COVER_HEAD: "ALL l::bool list list.
+ alg_cover_set l -->
+ (ALL f::bool list => bool. f o alg_cover l = algebra_embed (filter f l))"
by (import prob_indep ALG_COVER_HEAD)
-lemma ALG_COVER_TAIL_STEP: "(All::(bool list list => bool) => bool)
- (%l1::bool list list.
- (All::(bool list list => bool) => bool)
- (%l2::bool list list.
- (All::(((nat => bool) => bool) => bool) => bool)
- (%q::(nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((alg_cover_set::bool list list => bool) l1)
- ((alg_cover_set::bool list list => bool) l2))
- ((op =::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- ((op o::((nat => bool) => bool)
- => ((nat => bool) => nat => bool)
- => (nat => bool) => bool)
- q (%x::nat => bool.
- (SDROP::nat => (nat => bool) => nat => bool)
- ((size::bool list => nat)
- ((alg_cover::bool list list
- => (nat => bool) => bool list)
- ((op @::bool list list
- => bool list list => bool list list)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (True::bool))
- l1)
- ((map::(bool list => bool list)
- => bool list list => bool list list)
- ((op #::bool => bool list => bool list)
- (False::bool))
- l2))
- x))
- x))
- ((pred_set.UNION::((nat => bool) => bool)
- => ((nat => bool) => bool)
- => (nat => bool) => bool)
- ((pred_set.INTER::((nat => bool) => bool)
-=> ((nat => bool) => bool) => (nat => bool) => bool)
- (%x::nat => bool.
- (op =::bool => bool => bool)
- ((SHD::(nat => bool) => bool) x) (True::bool))
- ((op o::((nat => bool) => bool)
- => ((nat => bool) => nat => bool)
- => (nat => bool) => bool)
- q ((op o::((nat => bool) => nat => bool)
- => ((nat => bool) => nat => bool)
- => (nat => bool) => nat => bool)
- (%x::nat => bool.
- (SDROP::nat => (nat => bool) => nat => bool)
- ((size::bool list => nat)
- ((alg_cover::bool list list
- => (nat => bool) => bool list)
- l1 x))
- x)
- (STL::(nat => bool) => nat => bool))))
- ((pred_set.INTER::((nat => bool) => bool)
-=> ((nat => bool) => bool) => (nat => bool) => bool)
- (%x::nat => bool.
- (op =::bool => bool => bool)
- ((SHD::(nat => bool) => bool) x) (False::bool))
- ((op o::((nat => bool) => bool)
- => ((nat => bool) => nat => bool)
- => (nat => bool) => bool)
- q ((op o::((nat => bool) => nat => bool)
- => ((nat => bool) => nat => bool)
- => (nat => bool) => nat => bool)
- (%x::nat => bool.
- (SDROP::nat => (nat => bool) => nat => bool)
- ((size::bool list => nat)
- ((alg_cover::bool list list
- => (nat => bool) => bool list)
- l2 x))
- x)
- (STL::(nat => bool) => nat => bool)))))))))"
+lemma ALG_COVER_TAIL_STEP: "ALL (l1::bool list list) (l2::bool list list) q::(nat => bool) => bool.
+ alg_cover_set l1 & alg_cover_set l2 -->
+ q o
+ (%x::nat => bool.
+ SDROP
+ (length (alg_cover (map (op # True) l1 @ map (op # False) l2) x))
+ x) =
+ pred_set.UNION
+ (pred_set.INTER (%x::nat => bool. SHD x = True)
+ (q o ((%x::nat => bool. SDROP (length (alg_cover l1 x)) x) o STL)))
+ (pred_set.INTER (%x::nat => bool. SHD x = False)
+ (q o ((%x::nat => bool. SDROP (length (alg_cover l2 x)) x) o STL)))"
by (import prob_indep ALG_COVER_TAIL_STEP)
-lemma ALG_COVER_TAIL_MEASURABLE: "(All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((alg_cover_set::bool list list => bool) l)
- ((All::(((nat => bool) => bool) => bool) => bool)
- (%q::(nat => bool) => bool.
- (op =::bool => bool => bool)
- ((measurable::((nat => bool) => bool) => bool)
- ((op o::((nat => bool) => bool)
- => ((nat => bool) => nat => bool)
- => (nat => bool) => bool)
- q (%x::nat => bool.
- (SDROP::nat => (nat => bool) => nat => bool)
- ((size::bool list => nat)
- ((alg_cover::bool list list
- => (nat => bool) => bool list)
- l x))
- x)))
- ((measurable::((nat => bool) => bool) => bool) q))))"
+lemma ALG_COVER_TAIL_MEASURABLE: "ALL l::bool list list.
+ alg_cover_set l -->
+ (ALL q::(nat => bool) => bool.
+ measurable
+ (q o (%x::nat => bool. SDROP (length (alg_cover l x)) x)) =
+ measurable q)"
by (import prob_indep ALG_COVER_TAIL_MEASURABLE)
-lemma ALG_COVER_TAIL_PROB: "(All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((alg_cover_set::bool list list => bool) l)
- ((All::(((nat => bool) => bool) => bool) => bool)
- (%q::(nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((measurable::((nat => bool) => bool) => bool) q)
- ((op =::real => real => bool)
- ((prob::((nat => bool) => bool) => real)
- ((op o::((nat => bool) => bool)
- => ((nat => bool) => nat => bool)
- => (nat => bool) => bool)
- q (%x::nat => bool.
- (SDROP::nat => (nat => bool) => nat => bool)
- ((size::bool list => nat)
- ((alg_cover::bool list list
- => (nat => bool) => bool list)
- l x))
- x)))
- ((prob::((nat => bool) => bool) => real) q)))))"
+lemma ALG_COVER_TAIL_PROB: "ALL l::bool list list.
+ alg_cover_set l -->
+ (ALL q::(nat => bool) => bool.
+ measurable q -->
+ prob (q o (%x::nat => bool. SDROP (length (alg_cover l x)) x)) =
+ prob q)"
by (import prob_indep ALG_COVER_TAIL_PROB)
-lemma INDEP_INDEP_SET_LEMMA: "(All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((alg_cover_set::bool list list => bool) l)
- ((All::(((nat => bool) => bool) => bool) => bool)
- (%q::(nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((measurable::((nat => bool) => bool) => bool) q)
- ((All::(bool list => bool) => bool)
- (%x::bool list.
- (op -->::bool => bool => bool)
- ((op mem::bool list => bool list list => bool) x l)
- ((op =::real => real => bool)
- ((prob::((nat => bool) => bool) => real)
- ((pred_set.INTER::((nat => bool) => bool)
- => ((nat => bool) => bool) => (nat => bool) => bool)
- ((alg_embed::bool list => (nat => bool) => bool)
- x)
- ((op o::((nat => bool) => bool)
- => ((nat => bool) => nat => bool)
- => (nat => bool) => bool)
- q (%x::nat => bool.
- (SDROP::nat
- => (nat => bool) => nat => bool)
- ((size::bool list => nat)
- ((alg_cover::bool list list
- => (nat => bool) => bool list)
- l x))
- x))))
- ((op *::real => real => real)
- ((op ^::real => nat => real)
- ((op /::real => real => real) (1::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin)
- (Numeral.Pls::bin) (bit.B1::bit))
- (bit.B0::bit))))
- ((size::bool list => nat) x))
- ((prob::((nat => bool) => bool) => real) q))))))))"
+lemma INDEP_INDEP_SET_LEMMA: "ALL l::bool list list.
+ alg_cover_set l -->
+ (ALL q::(nat => bool) => bool.
+ measurable q -->
+ (ALL x::bool list.
+ x mem l -->
+ prob
+ (pred_set.INTER (alg_embed x)
+ (q o (%x::nat => bool. SDROP (length (alg_cover l x)) x))) =
+ (1 / 2) ^ length x * prob q))"
by (import prob_indep INDEP_INDEP_SET_LEMMA)
-lemma INDEP_SET_LIST: "(All::(((nat => bool) => bool) => bool) => bool)
- (%q::(nat => bool) => bool.
- (All::(bool list list => bool) => bool)
- (%l::bool list list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((alg_sorted::bool list list => bool) l)
- ((op &::bool => bool => bool)
- ((alg_prefixfree::bool list list => bool) l)
- ((op &::bool => bool => bool)
- ((measurable::((nat => bool) => bool) => bool) q)
- ((All::(bool list => bool) => bool)
- (%x::bool list.
- (op -->::bool => bool => bool)
- ((op mem::bool list => bool list list => bool) x l)
- ((indep_set::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- ((alg_embed::bool list => (nat => bool) => bool)
- x)
- q))))))
- ((indep_set::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- ((algebra_embed::bool list list => (nat => bool) => bool) l)
- q)))"
+lemma INDEP_SET_LIST: "ALL (q::(nat => bool) => bool) l::bool list list.
+ alg_sorted l &
+ alg_prefixfree l &
+ measurable q &
+ (ALL x::bool list. x mem l --> indep_set (alg_embed x) q) -->
+ indep_set (algebra_embed l) q"
by (import prob_indep INDEP_SET_LIST)
-lemma INDEP_INDEP_SET: "(All::(((nat => bool) => 'a::type * (nat => bool)) => bool) => bool)
- (%f::(nat => bool) => 'a::type * (nat => bool).
- (All::(('a::type => bool) => bool) => bool)
- (%p::'a::type => bool.
- (All::(((nat => bool) => bool) => bool) => bool)
- (%q::(nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((indep::((nat => bool) => 'a::type * (nat => bool))
- => bool)
- f)
- ((measurable::((nat => bool) => bool) => bool) q))
- ((indep_set::((nat => bool) => bool)
- => ((nat => bool) => bool) => bool)
- ((op o::('a::type => bool)
- => ((nat => bool) => 'a::type)
- => (nat => bool) => bool)
- p ((op o::('a::type * (nat => bool) => 'a::type)
- => ((nat => bool) => 'a::type * (nat => bool))
- => (nat => bool) => 'a::type)
- (fst::'a::type * (nat => bool) => 'a::type) f))
- ((op o::((nat => bool) => bool)
- => ((nat => bool) => nat => bool)
- => (nat => bool) => bool)
- q ((op o::('a::type * (nat => bool) => nat => bool)
- => ((nat => bool) => 'a::type * (nat => bool))
- => (nat => bool) => nat => bool)
- (snd::'a::type * (nat => bool) => nat => bool)
- f))))))"
+lemma INDEP_INDEP_SET: "ALL (f::(nat => bool) => 'a::type * (nat => bool)) (p::'a::type => bool)
+ q::(nat => bool) => bool.
+ indep f & measurable q --> indep_set (p o (fst o f)) (q o (snd o f))"
by (import prob_indep INDEP_INDEP_SET)
lemma INDEP_UNIT: "ALL x::'a::type. indep (UNIT x)"
@@ -3503,144 +1887,35 @@
BIND SDEST (%k::bool. f o SCONS k) = f"
by (import prob_indep BIND_STEP)
-lemma INDEP_BIND_SDEST: "(All::((bool => (nat => bool) => 'a::type * (nat => bool)) => bool) => bool)
- (%f::bool => (nat => bool) => 'a::type * (nat => bool).
- (op -->::bool => bool => bool)
- ((All::(bool => bool) => bool)
- (%x::bool.
- (indep::((nat => bool) => 'a::type * (nat => bool)) => bool)
- (f x)))
- ((indep::((nat => bool) => 'a::type * (nat => bool)) => bool)
- ((BIND::((nat => bool) => bool * (nat => bool))
- => (bool => (nat => bool) => 'a::type * (nat => bool))
- => (nat => bool) => 'a::type * (nat => bool))
- (SDEST::(nat => bool) => bool * (nat => bool)) f)))"
+lemma INDEP_BIND_SDEST: "ALL f::bool => (nat => bool) => 'a::type * (nat => bool).
+ (ALL x::bool. indep (f x)) --> indep (BIND SDEST f)"
by (import prob_indep INDEP_BIND_SDEST)
-lemma INDEP_BIND: "(All::(((nat => bool) => 'a::type * (nat => bool)) => bool) => bool)
- (%f::(nat => bool) => 'a::type * (nat => bool).
- (All::(('a::type => (nat => bool) => 'b::type * (nat => bool)) => bool)
- => bool)
- (%g::'a::type => (nat => bool) => 'b::type * (nat => bool).
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((indep::((nat => bool) => 'a::type * (nat => bool)) => bool)
- f)
- ((All::('a::type => bool) => bool)
- (%x::'a::type.
- (indep::((nat => bool) => 'b::type * (nat => bool))
- => bool)
- (g x))))
- ((indep::((nat => bool) => 'b::type * (nat => bool)) => bool)
- ((BIND::((nat => bool) => 'a::type * (nat => bool))
- => ('a::type
- => (nat => bool) => 'b::type * (nat => bool))
- => (nat => bool) => 'b::type * (nat => bool))
- f g))))"
+lemma INDEP_BIND: "ALL (f::(nat => bool) => 'a::type * (nat => bool))
+ g::'a::type => (nat => bool) => 'b::type * (nat => bool).
+ indep f & (ALL x::'a::type. indep (g x)) --> indep (BIND f g)"
by (import prob_indep INDEP_BIND)
-lemma INDEP_PROB: "(All::(((nat => bool) => 'a::type * (nat => bool)) => bool) => bool)
- (%f::(nat => bool) => 'a::type * (nat => bool).
- (All::(('a::type => bool) => bool) => bool)
- (%p::'a::type => bool.
- (All::(((nat => bool) => bool) => bool) => bool)
- (%q::(nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((indep::((nat => bool) => 'a::type * (nat => bool))
- => bool)
- f)
- ((measurable::((nat => bool) => bool) => bool) q))
- ((op =::real => real => bool)
- ((prob::((nat => bool) => bool) => real)
- ((pred_set.INTER::((nat => bool) => bool)
-=> ((nat => bool) => bool) => (nat => bool) => bool)
- ((op o::('a::type => bool)
- => ((nat => bool) => 'a::type)
- => (nat => bool) => bool)
- p ((op o::('a::type * (nat => bool) => 'a::type)
- => ((nat => bool)
-=> 'a::type * (nat => bool))
- => (nat => bool) => 'a::type)
- (fst::'a::type * (nat => bool) => 'a::type) f))
- ((op o::((nat => bool) => bool)
- => ((nat => bool) => nat => bool)
- => (nat => bool) => bool)
- q ((op o::('a::type * (nat => bool) => nat => bool)
- => ((nat => bool)
-=> 'a::type * (nat => bool))
- => (nat => bool) => nat => bool)
- (snd::'a::type * (nat => bool) => nat => bool)
- f))))
- ((op *::real => real => real)
- ((prob::((nat => bool) => bool) => real)
- ((op o::('a::type => bool)
- => ((nat => bool) => 'a::type)
- => (nat => bool) => bool)
- p ((op o::('a::type * (nat => bool) => 'a::type)
- => ((nat => bool)
-=> 'a::type * (nat => bool))
- => (nat => bool) => 'a::type)
- (fst::'a::type * (nat => bool) => 'a::type) f)))
- ((prob::((nat => bool) => bool) => real) q))))))"
+lemma INDEP_PROB: "ALL (f::(nat => bool) => 'a::type * (nat => bool)) (p::'a::type => bool)
+ q::(nat => bool) => bool.
+ indep f & measurable q -->
+ prob (pred_set.INTER (p o (fst o f)) (q o (snd o f))) =
+ prob (p o (fst o f)) * prob q"
by (import prob_indep INDEP_PROB)
-lemma INDEP_MEASURABLE1: "(All::(((nat => bool) => 'a::type * (nat => bool)) => bool) => bool)
- (%f::(nat => bool) => 'a::type * (nat => bool).
- (All::(('a::type => bool) => bool) => bool)
- (%p::'a::type => bool.
- (op -->::bool => bool => bool)
- ((indep::((nat => bool) => 'a::type * (nat => bool)) => bool) f)
- ((measurable::((nat => bool) => bool) => bool)
- ((op o::('a::type => bool)
- => ((nat => bool) => 'a::type)
- => (nat => bool) => bool)
- p ((op o::('a::type * (nat => bool) => 'a::type)
- => ((nat => bool) => 'a::type * (nat => bool))
- => (nat => bool) => 'a::type)
- (fst::'a::type * (nat => bool) => 'a::type) f)))))"
+lemma INDEP_MEASURABLE1: "ALL (f::(nat => bool) => 'a::type * (nat => bool)) p::'a::type => bool.
+ indep f --> measurable (p o (fst o f))"
by (import prob_indep INDEP_MEASURABLE1)
-lemma INDEP_MEASURABLE2: "(All::(((nat => bool) => 'a::type * (nat => bool)) => bool) => bool)
- (%f::(nat => bool) => 'a::type * (nat => bool).
- (All::(((nat => bool) => bool) => bool) => bool)
- (%q::(nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((indep::((nat => bool) => 'a::type * (nat => bool)) => bool)
- f)
- ((measurable::((nat => bool) => bool) => bool) q))
- ((measurable::((nat => bool) => bool) => bool)
- ((op o::((nat => bool) => bool)
- => ((nat => bool) => nat => bool)
- => (nat => bool) => bool)
- q ((op o::('a::type * (nat => bool) => nat => bool)
- => ((nat => bool) => 'a::type * (nat => bool))
- => (nat => bool) => nat => bool)
- (snd::'a::type * (nat => bool) => nat => bool) f)))))"
+lemma INDEP_MEASURABLE2: "ALL (f::(nat => bool) => 'a::type * (nat => bool)) q::(nat => bool) => bool.
+ indep f & measurable q --> measurable (q o (snd o f))"
by (import prob_indep INDEP_MEASURABLE2)
-lemma PROB_INDEP_BOUND: "(All::(((nat => bool) => nat * (nat => bool)) => bool) => bool)
- (%f::(nat => bool) => nat * (nat => bool).
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((indep::((nat => bool) => nat * (nat => bool)) => bool) f)
- ((op =::real => real => bool)
- ((prob::((nat => bool) => bool) => real)
- (%s::nat => bool.
- (op <::nat => nat => bool)
- ((fst::nat * (nat => bool) => nat) (f s))
- ((Suc::nat => nat) n)))
- ((op +::real => real => real)
- ((prob::((nat => bool) => bool) => real)
- (%s::nat => bool.
- (op <::nat => nat => bool)
- ((fst::nat * (nat => bool) => nat) (f s)) n))
- ((prob::((nat => bool) => bool) => real)
- (%s::nat => bool.
- (op =::nat => nat => bool)
- ((fst::nat * (nat => bool) => nat) (f s)) n))))))"
+lemma PROB_INDEP_BOUND: "ALL (f::(nat => bool) => nat * (nat => bool)) n::nat.
+ indep f -->
+ prob (%s::nat => bool. fst (f s) < Suc n) =
+ prob (%s::nat => bool. fst (f s) < n) +
+ prob (%s::nat => bool. fst (f s) = n)"
by (import prob_indep PROB_INDEP_BOUND)
;end_setup
@@ -3668,21 +1943,8 @@
unif_bound (Suc (v::nat)) = Suc (unif_bound (Suc v div 2))"
by (import prob_uniform unif_bound_def)
-lemma unif_bound_ind: "(All::((nat => bool) => bool) => bool)
- (%P::nat => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool) (P (0::nat))
- ((All::(nat => bool) => bool)
- (%v::nat.
- (op -->::bool => bool => bool)
- (P ((op div::nat => nat => nat) ((Suc::nat => nat) v)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))
- (P ((Suc::nat => nat) v)))))
- ((All::(nat => bool) => bool) P))"
+lemma unif_bound_ind: "ALL P::nat => bool.
+ P 0 & (ALL v::nat. P (Suc v div 2) --> P (Suc v)) --> All P"
by (import prob_uniform unif_bound_ind)
constdefs
@@ -3725,223 +1987,57 @@
in (if SHD s' then 2 * m + 1 else 2 * m, STL s'))"
by (import prob_uniform unif_def)
-lemma unif_ind: "(All::((nat => (nat => bool) => bool) => bool) => bool)
- (%P::nat => (nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((All::((nat => bool) => bool) => bool) (P (0::nat)))
- ((All::(nat => bool) => bool)
- (%v2::nat.
- (All::((nat => bool) => bool) => bool)
- (%s::nat => bool.
- (op -->::bool => bool => bool)
- (P ((op div::nat => nat => nat) ((Suc::nat => nat) v2)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))
- s)
- (P ((Suc::nat => nat) v2) s)))))
- ((All::(nat => bool) => bool)
- (%v::nat. (All::((nat => bool) => bool) => bool) (P v))))"
+lemma unif_ind: "ALL P::nat => (nat => bool) => bool.
+ All (P 0) &
+ (ALL (v2::nat) s::nat => bool. P (Suc v2 div 2) s --> P (Suc v2) s) -->
+ (ALL v::nat. All (P v))"
by (import prob_uniform unif_ind)
constdefs
uniform_tupled :: "nat * nat * (nat => bool) => nat * (nat => bool)"
- "(op ==::(nat * nat * (nat => bool) => nat * (nat => bool))
- => (nat * nat * (nat => bool) => nat * (nat => bool)) => prop)
- (uniform_tupled::nat * nat * (nat => bool) => nat * (nat => bool))
- ((WFREC::(nat * nat * (nat => bool) => nat * nat * (nat => bool) => bool)
- => ((nat * nat * (nat => bool) => nat * (nat => bool))
- => nat * nat * (nat => bool) => nat * (nat => bool))
- => nat * nat * (nat => bool) => nat * (nat => bool))
- ((Eps::((nat * nat * (nat => bool) => nat * nat * (nat => bool) => bool)
- => bool)
- => nat * nat * (nat => bool) => nat * nat * (nat => bool) => bool)
- (%R::nat * nat * (nat => bool) => nat * nat * (nat => bool) => bool.
- (op &::bool => bool => bool)
- ((WF::(nat * nat * (nat => bool)
- => nat * nat * (nat => bool) => bool)
- => bool)
- R)
- ((All::(nat => bool) => bool)
- (%t::nat.
- (All::((nat => bool) => bool) => bool)
- (%s::nat => bool.
- (All::(nat => bool) => bool)
- (%n::nat.
- (All::(nat => bool) => bool)
- (%res::nat.
- (All::((nat => bool) => bool) => bool)
- (%s'::nat => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op =::nat * (nat => bool) => nat * (nat => bool) => bool)
- ((Pair::nat => (nat => bool) => nat * (nat => bool)) res s')
- ((unif::nat => (nat => bool) => nat * (nat => bool)) n s))
- ((Not::bool => bool)
- ((op <::nat => nat => bool) res ((Suc::nat => nat) n))))
- (R
- ((Pair::nat => nat * (nat => bool) => nat * nat * (nat => bool)) t
- ((Pair::nat => (nat => bool) => nat * (nat => bool))
- ((Suc::nat => nat) n) s'))
- ((Pair::nat => nat * (nat => bool) => nat * nat * (nat => bool))
- ((Suc::nat => nat) t)
- ((Pair::nat => (nat => bool) => nat * (nat => bool))
- ((Suc::nat => nat) n) s)))))))))))
- (%uniform_tupled::nat * nat * (nat => bool) => nat * (nat => bool).
- (split::(nat => nat * (nat => bool) => nat * (nat => bool))
- => nat * nat * (nat => bool) => nat * (nat => bool))
- (%(v::nat) v1::nat * (nat => bool).
- (nat_case::nat * (nat => bool)
- => (nat => nat * (nat => bool))
- => nat => nat * (nat => bool))
- ((split::(nat => (nat => bool) => nat * (nat => bool))
- => nat * (nat => bool) => nat * (nat => bool))
- (%(v3::nat) v4::nat => bool.
- (nat_case::nat * (nat => bool)
- => (nat => nat * (nat => bool))
- => nat => nat * (nat => bool))
- (ARB::nat * (nat => bool))
- (%v5::nat.
- (Pair::nat => (nat => bool) => nat * (nat => bool))
- (0::nat) v4)
- v3)
- v1)
- (%v2::nat.
- (split::(nat => (nat => bool) => nat * (nat => bool))
- => nat * (nat => bool) => nat * (nat => bool))
- (%(v7::nat) v8::nat => bool.
- (nat_case::nat * (nat => bool)
- => (nat => nat * (nat => bool))
- => nat => nat * (nat => bool))
- (ARB::nat * (nat => bool))
- (%v9::nat.
- (Let::nat * (nat => bool)
- => (nat * (nat => bool)
- => nat * (nat => bool))
- => nat * (nat => bool))
- ((unif::nat
- => (nat => bool) => nat * (nat => bool))
- v9 v8)
- ((split::(nat
-=> (nat => bool) => nat * (nat => bool))
- => nat * (nat => bool)
- => nat * (nat => bool))
- (%(res::nat) s'::nat => bool.
- (If::bool
- => nat * (nat => bool) => nat * (nat => bool) => nat * (nat => bool))
- ((op <::nat => nat => bool) res
- ((Suc::nat => nat) v9))
- ((Pair::nat
- => (nat => bool) => nat * (nat => bool))
- res s')
- (uniform_tupled
- ((Pair::nat
- => nat * (nat => bool) => nat * nat * (nat => bool))
- v2 ((Pair::nat => (nat => bool) => nat * (nat => bool))
- ((Suc::nat => nat) v9) s'))))))
- v7)
- v1)
- v)))"
+ "uniform_tupled ==
+WFREC
+ (SOME R::nat * nat * (nat => bool) => nat * nat * (nat => bool) => bool.
+ WF R &
+ (ALL (t::nat) (s::nat => bool) (n::nat) (res::nat) s'::nat => bool.
+ (res, s') = unif n s & ~ res < Suc n -->
+ R (t, Suc n, s') (Suc t, Suc n, s)))
+ (%(uniform_tupled::nat * nat * (nat => bool) => nat * (nat => bool))
+ (v::nat, v1::nat * (nat => bool)).
+ case v of
+ 0 => (%(v3::nat, v4::nat => bool).
+ case v3 of 0 => ARB | Suc (v5::nat) => (0, v4))
+ v1
+ | Suc (v2::nat) =>
+ (%(v7::nat, v8::nat => bool).
+ case v7 of 0 => ARB
+ | Suc (v9::nat) =>
+ let (res::nat, s'::nat => bool) = unif v9 v8
+ in if res < Suc v9 then (res, s')
+ else uniform_tupled (v2, Suc v9, s'))
+ v1)"
-lemma uniform_tupled_primitive_def: "(op =::(nat * nat * (nat => bool) => nat * (nat => bool))
- => (nat * nat * (nat => bool) => nat * (nat => bool)) => bool)
- (uniform_tupled::nat * nat * (nat => bool) => nat * (nat => bool))
- ((WFREC::(nat * nat * (nat => bool) => nat * nat * (nat => bool) => bool)
- => ((nat * nat * (nat => bool) => nat * (nat => bool))
- => nat * nat * (nat => bool) => nat * (nat => bool))
- => nat * nat * (nat => bool) => nat * (nat => bool))
- ((Eps::((nat * nat * (nat => bool) => nat * nat * (nat => bool) => bool)
- => bool)
- => nat * nat * (nat => bool) => nat * nat * (nat => bool) => bool)
- (%R::nat * nat * (nat => bool) => nat * nat * (nat => bool) => bool.
- (op &::bool => bool => bool)
- ((WF::(nat * nat * (nat => bool)
- => nat * nat * (nat => bool) => bool)
- => bool)
- R)
- ((All::(nat => bool) => bool)
- (%t::nat.
- (All::((nat => bool) => bool) => bool)
- (%s::nat => bool.
- (All::(nat => bool) => bool)
- (%n::nat.
- (All::(nat => bool) => bool)
- (%res::nat.
- (All::((nat => bool) => bool) => bool)
- (%s'::nat => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op =::nat * (nat => bool) => nat * (nat => bool) => bool)
- ((Pair::nat => (nat => bool) => nat * (nat => bool)) res s')
- ((unif::nat => (nat => bool) => nat * (nat => bool)) n s))
- ((Not::bool => bool)
- ((op <::nat => nat => bool) res ((Suc::nat => nat) n))))
- (R
- ((Pair::nat => nat * (nat => bool) => nat * nat * (nat => bool)) t
- ((Pair::nat => (nat => bool) => nat * (nat => bool))
- ((Suc::nat => nat) n) s'))
- ((Pair::nat => nat * (nat => bool) => nat * nat * (nat => bool))
- ((Suc::nat => nat) t)
- ((Pair::nat => (nat => bool) => nat * (nat => bool))
- ((Suc::nat => nat) n) s)))))))))))
- (%uniform_tupled::nat * nat * (nat => bool) => nat * (nat => bool).
- (split::(nat => nat * (nat => bool) => nat * (nat => bool))
- => nat * nat * (nat => bool) => nat * (nat => bool))
- (%(v::nat) v1::nat * (nat => bool).
- (nat_case::nat * (nat => bool)
- => (nat => nat * (nat => bool))
- => nat => nat * (nat => bool))
- ((split::(nat => (nat => bool) => nat * (nat => bool))
- => nat * (nat => bool) => nat * (nat => bool))
- (%(v3::nat) v4::nat => bool.
- (nat_case::nat * (nat => bool)
- => (nat => nat * (nat => bool))
- => nat => nat * (nat => bool))
- (ARB::nat * (nat => bool))
- (%v5::nat.
- (Pair::nat => (nat => bool) => nat * (nat => bool))
- (0::nat) v4)
- v3)
- v1)
- (%v2::nat.
- (split::(nat => (nat => bool) => nat * (nat => bool))
- => nat * (nat => bool) => nat * (nat => bool))
- (%(v7::nat) v8::nat => bool.
- (nat_case::nat * (nat => bool)
- => (nat => nat * (nat => bool))
- => nat => nat * (nat => bool))
- (ARB::nat * (nat => bool))
- (%v9::nat.
- (Let::nat * (nat => bool)
- => (nat * (nat => bool)
- => nat * (nat => bool))
- => nat * (nat => bool))
- ((unif::nat
- => (nat => bool) => nat * (nat => bool))
- v9 v8)
- ((split::(nat
-=> (nat => bool) => nat * (nat => bool))
- => nat * (nat => bool)
- => nat * (nat => bool))
- (%(res::nat) s'::nat => bool.
- (If::bool
- => nat * (nat => bool) => nat * (nat => bool) => nat * (nat => bool))
- ((op <::nat => nat => bool) res
- ((Suc::nat => nat) v9))
- ((Pair::nat
- => (nat => bool) => nat * (nat => bool))
- res s')
- (uniform_tupled
- ((Pair::nat
- => nat * (nat => bool) => nat * nat * (nat => bool))
- v2 ((Pair::nat => (nat => bool) => nat * (nat => bool))
- ((Suc::nat => nat) v9) s'))))))
- v7)
- v1)
- v)))"
+lemma uniform_tupled_primitive_def: "uniform_tupled =
+WFREC
+ (SOME R::nat * nat * (nat => bool) => nat * nat * (nat => bool) => bool.
+ WF R &
+ (ALL (t::nat) (s::nat => bool) (n::nat) (res::nat) s'::nat => bool.
+ (res, s') = unif n s & ~ res < Suc n -->
+ R (t, Suc n, s') (Suc t, Suc n, s)))
+ (%(uniform_tupled::nat * nat * (nat => bool) => nat * (nat => bool))
+ (v::nat, v1::nat * (nat => bool)).
+ case v of
+ 0 => (%(v3::nat, v4::nat => bool).
+ case v3 of 0 => ARB | Suc (v5::nat) => (0, v4))
+ v1
+ | Suc (v2::nat) =>
+ (%(v7::nat, v8::nat => bool).
+ case v7 of 0 => ARB
+ | Suc (v9::nat) =>
+ let (res::nat, s'::nat => bool) = unif v9 v8
+ in if res < Suc v9 then (res, s')
+ else uniform_tupled (v2, Suc v9, s'))
+ v1)"
by (import prob_uniform uniform_tupled_primitive_def)
consts
@@ -3954,46 +2050,15 @@
uniform x x1 x2 = uniform_tupled (x, x1, x2)"
by (import prob_uniform uniform_curried_def)
-lemma uniform_ind: "(All::((nat => nat => (nat => bool) => bool) => bool) => bool)
- (%P::nat => nat => (nat => bool) => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((All::(nat => bool) => bool)
- (%x::nat.
- (All::((nat => bool) => bool) => bool)
- (P ((Suc::nat => nat) x) (0::nat))))
- ((op &::bool => bool => bool)
- ((All::((nat => bool) => bool) => bool) (P (0::nat) (0::nat)))
- ((op &::bool => bool => bool)
- ((All::(nat => bool) => bool)
- (%x::nat.
- (All::((nat => bool) => bool) => bool)
- (P (0::nat) ((Suc::nat => nat) x))))
- ((All::(nat => bool) => bool)
- (%x::nat.
- (All::(nat => bool) => bool)
- (%xa::nat.
- (All::((nat => bool) => bool) => bool)
- (%xb::nat => bool.
- (op -->::bool => bool => bool)
- ((All::(nat => bool) => bool)
- (%xc::nat.
- (All::((nat => bool) => bool) => bool)
- (%xd::nat => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op =::nat * (nat => bool) => nat * (nat => bool) => bool)
- ((Pair::nat => (nat => bool) => nat * (nat => bool)) xc xd)
- ((unif::nat => (nat => bool) => nat * (nat => bool)) xa xb))
- ((Not::bool => bool)
- ((op <::nat => nat => bool) xc ((Suc::nat => nat) xa))))
- (P x ((Suc::nat => nat) xa) xd))))
- (P ((Suc::nat => nat) x) ((Suc::nat => nat) xa)
- xb))))))))
- ((All::(nat => bool) => bool)
- (%x::nat.
- (All::(nat => bool) => bool)
- (%xa::nat. (All::((nat => bool) => bool) => bool) (P x xa)))))"
+lemma uniform_ind: "ALL P::nat => nat => (nat => bool) => bool.
+ (ALL x::nat. All (P (Suc x) 0)) &
+ All (P 0 0) &
+ (ALL x::nat. All (P 0 (Suc x))) &
+ (ALL (x::nat) (xa::nat) xb::nat => bool.
+ (ALL (xc::nat) xd::nat => bool.
+ (xc, xd) = unif xa xb & ~ xc < Suc xa --> P x (Suc xa) xd) -->
+ P (Suc x) (Suc xa) xb) -->
+ (ALL (x::nat) xa::nat. All (P x xa))"
by (import prob_uniform uniform_ind)
lemma uniform_def: "uniform 0 (Suc (n::nat)) (s::nat => bool) = (0, s) &
@@ -4011,23 +2076,7 @@
lemma UNIF_BOUND_LOWER_SUC: "ALL n::nat. Suc n <= 2 ^ unif_bound n"
by (import prob_uniform UNIF_BOUND_LOWER_SUC)
-lemma UNIF_BOUND_UPPER: "(All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((Not::bool => bool) ((op =::nat => nat => bool) n (0::nat)))
- ((op <=::nat => nat => bool)
- ((op ^::nat => nat => nat)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin) (bit.B1::bit))
- (bit.B0::bit)))
- ((unif_bound::nat => nat) n))
- ((op *::nat => nat => nat)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin) (bit.B1::bit))
- (bit.B0::bit)))
- n)))"
+lemma UNIF_BOUND_UPPER: "ALL n::nat. n ~= 0 --> 2 ^ unif_bound n <= 2 * n"
by (import prob_uniform UNIF_BOUND_UPPER)
lemma UNIF_BOUND_UPPER_SUC: "ALL n::nat. 2 ^ unif_bound n <= Suc (2 * n)"
@@ -4068,36 +2117,10 @@
((k < 2 ^ unif_bound n) = (k' < 2 ^ unif_bound n))"
by (import prob_uniform PROB_UNIF_PAIR)
-lemma PROB_UNIF_BOUND: "(All::(nat => bool) => bool)
- (%n::nat.
- (All::(nat => bool) => bool)
- (%k::nat.
- (op -->::bool => bool => bool)
- ((op <=::nat => nat => bool) k
- ((op ^::nat => nat => nat)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))
- ((unif_bound::nat => nat) n)))
- ((op =::real => real => bool)
- ((prob::((nat => bool) => bool) => real)
- (%s::nat => bool.
- (op <::nat => nat => bool)
- ((fst::nat * (nat => bool) => nat)
- ((unif::nat => (nat => bool) => nat * (nat => bool)) n
- s))
- k))
- ((op *::real => real => real) ((real::nat => real) k)
- ((op ^::real => nat => real)
- ((op /::real => real => real) (1::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))
- ((unif_bound::nat => nat) n))))))"
+lemma PROB_UNIF_BOUND: "ALL (n::nat) k::nat.
+ k <= 2 ^ unif_bound n -->
+ prob (%s::nat => bool. fst (unif n s) < k) =
+ real k * (1 / 2) ^ unif_bound n"
by (import prob_uniform PROB_UNIF_BOUND)
lemma PROB_UNIF_GOOD: "ALL n::nat. 1 / 2 <= prob (%s::nat => bool. fst (unif n s) < Suc n)"
@@ -4177,108 +2200,24 @@
((Suc::nat => nat) m)))))))"
by (import prob_uniform PROB_UNIFORM_UPPER_BOUND)
-lemma PROB_UNIFORM_PAIR_SUC: "(All::(nat => bool) => bool)
- (%t::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (All::(nat => bool) => bool)
- (%k::nat.
- (All::(nat => bool) => bool)
- (%k'::nat.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::nat => nat => bool) k ((Suc::nat => nat) n))
- ((op <::nat => nat => bool) k'
- ((Suc::nat => nat) n)))
- ((op <=::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real)
- ((prob::((nat => bool) => bool) => real)
- (%s::nat => bool.
- (op =::nat => nat => bool)
- ((fst::nat * (nat => bool) => nat)
- ((uniform::nat
- => nat => (nat => bool) => nat * (nat => bool))
-t ((Suc::nat => nat) n) s))
- k))
- ((prob::((nat => bool) => bool) => real)
- (%s::nat => bool.
- (op =::nat => nat => bool)
- ((fst::nat * (nat => bool) => nat)
- ((uniform::nat
- => nat => (nat => bool) => nat * (nat => bool))
-t ((Suc::nat => nat) n) s))
- k'))))
- ((op ^::real => nat => real)
- ((op /::real => real => real) (1::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin)
- (Numeral.Pls::bin) (bit.B1::bit))
- (bit.B0::bit))))
- t))))))"
+lemma PROB_UNIFORM_PAIR_SUC: "ALL (t::nat) (n::nat) (k::nat) k'::nat.
+ k < Suc n & k' < Suc n -->
+ abs (prob (%s::nat => bool. fst (uniform t (Suc n) s) = k) -
+ prob (%s::nat => bool. fst (uniform t (Suc n) s) = k'))
+ <= (1 / 2) ^ t"
by (import prob_uniform PROB_UNIFORM_PAIR_SUC)
-lemma PROB_UNIFORM_SUC: "(All::(nat => bool) => bool)
- (%t::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (All::(nat => bool) => bool)
- (%k::nat.
- (op -->::bool => bool => bool)
- ((op <::nat => nat => bool) k ((Suc::nat => nat) n))
- ((op <=::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real)
- ((prob::((nat => bool) => bool) => real)
- (%s::nat => bool.
- (op =::nat => nat => bool)
- ((fst::nat * (nat => bool) => nat)
- ((uniform::nat
- => nat => (nat => bool) => nat * (nat => bool))
- t ((Suc::nat => nat) n) s))
- k))
- ((op /::real => real => real) (1::real)
- ((real::nat => real) ((Suc::nat => nat) n)))))
- ((op ^::real => nat => real)
- ((op /::real => real => real) (1::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))
- t)))))"
+lemma PROB_UNIFORM_SUC: "ALL (t::nat) (n::nat) k::nat.
+ k < Suc n -->
+ abs (prob (%s::nat => bool. fst (uniform t (Suc n) s) = k) -
+ 1 / real (Suc n))
+ <= (1 / 2) ^ t"
by (import prob_uniform PROB_UNIFORM_SUC)
-lemma PROB_UNIFORM: "(All::(nat => bool) => bool)
- (%t::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (All::(nat => bool) => bool)
- (%k::nat.
- (op -->::bool => bool => bool)
- ((op <::nat => nat => bool) k n)
- ((op <=::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real)
- ((prob::((nat => bool) => bool) => real)
- (%s::nat => bool.
- (op =::nat => nat => bool)
- ((fst::nat * (nat => bool) => nat)
- ((uniform::nat
- => nat => (nat => bool) => nat * (nat => bool))
- t n s))
- k))
- ((op /::real => real => real) (1::real)
- ((real::nat => real) n))))
- ((op ^::real => nat => real)
- ((op /::real => real => real) (1::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))
- t)))))"
+lemma PROB_UNIFORM: "ALL (t::nat) (n::nat) k::nat.
+ k < n -->
+ abs (prob (%s::nat => bool. fst (uniform t n s) = k) - 1 / real n)
+ <= (1 / 2) ^ t"
by (import prob_uniform PROB_UNIFORM)
;end_setup
--- a/src/HOL/Import/HOL/HOL4Real.thy Wed Sep 28 11:50:15 2005 +0200
+++ b/src/HOL/Import/HOL/HOL4Real.thy Wed Sep 28 13:17:23 2005 +0200
@@ -1323,228 +1323,88 @@
;setup_theory seq
consts
- "-->" :: "(nat => real) => real => bool" ("-->")
+ "hol4-->" :: "(nat => real) => real => bool" ("hol4-->")
defs
- "-->_def": "--> == %(x::nat => real) x0::real. tends x x0 (mtop mr1, nat_ge)"
-
-lemma tends_num_real: "ALL (x::nat => real) x0::real. --> x x0 = tends x x0 (mtop mr1, nat_ge)"
+ "hol4-->_def": "hol4--> == %(x::nat => real) x0::real. tends x x0 (mtop mr1, nat_ge)"
+
+lemma tends_num_real: "ALL (x::nat => real) x0::real. hol4--> x x0 = tends x x0 (mtop mr1, nat_ge)"
by (import seq tends_num_real)
-lemma SEQ: "(All::((nat => real) => bool) => bool)
- (%x::nat => real.
- (All::(real => bool) => bool)
- (%x0::real.
- (op =::bool => bool => bool)
- ((-->::(nat => real) => real => bool) x x0)
- ((All::(real => bool) => bool)
- (%e::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool) (0::real) e)
- ((Ex::(nat => bool) => bool)
- (%N::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op <=::nat => nat => bool) N n)
- ((op <::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real) (x n) x0))
- e))))))))"
+lemma SEQ: "ALL (x::nat => real) x0::real.
+ hol4--> x x0 =
+ (ALL e>0. EX N::nat. ALL n::nat. N <= n --> abs (x n - x0) < e)"
by (import seq SEQ)
-lemma SEQ_CONST: "ALL k::real. --> (%x::nat. k) k"
+lemma SEQ_CONST: "ALL k::real. hol4--> (%x::nat. k) k"
by (import seq SEQ_CONST)
-lemma SEQ_ADD: "(All::((nat => real) => bool) => bool)
- (%x::nat => real.
- (All::(real => bool) => bool)
- (%x0::real.
- (All::((nat => real) => bool) => bool)
- (%y::nat => real.
- (All::(real => bool) => bool)
- (%y0::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((-->::(nat => real) => real => bool) x x0)
- ((-->::(nat => real) => real => bool) y y0))
- ((-->::(nat => real) => real => bool)
- (%n::nat. (op +::real => real => real) (x n) (y n))
- ((op +::real => real => real) x0 y0))))))"
+lemma SEQ_ADD: "ALL (x::nat => real) (x0::real) (y::nat => real) y0::real.
+ hol4--> x x0 & hol4--> y y0 --> hol4--> (%n::nat. x n + y n) (x0 + y0)"
by (import seq SEQ_ADD)
-lemma SEQ_MUL: "(All::((nat => real) => bool) => bool)
- (%x::nat => real.
- (All::(real => bool) => bool)
- (%x0::real.
- (All::((nat => real) => bool) => bool)
- (%y::nat => real.
- (All::(real => bool) => bool)
- (%y0::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((-->::(nat => real) => real => bool) x x0)
- ((-->::(nat => real) => real => bool) y y0))
- ((-->::(nat => real) => real => bool)
- (%n::nat. (op *::real => real => real) (x n) (y n))
- ((op *::real => real => real) x0 y0))))))"
+lemma SEQ_MUL: "ALL (x::nat => real) (x0::real) (y::nat => real) y0::real.
+ hol4--> x x0 & hol4--> y y0 --> hol4--> (%n::nat. x n * y n) (x0 * y0)"
by (import seq SEQ_MUL)
-lemma SEQ_NEG: "ALL (x::nat => real) x0::real. --> x x0 = --> (%n::nat. - x n) (- x0)"
+lemma SEQ_NEG: "ALL (x::nat => real) x0::real.
+ hol4--> x x0 = hol4--> (%n::nat. - x n) (- x0)"
by (import seq SEQ_NEG)
-lemma SEQ_INV: "(All::((nat => real) => bool) => bool)
- (%x::nat => real.
- (All::(real => bool) => bool)
- (%x0::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((-->::(nat => real) => real => bool) x x0)
- ((Not::bool => bool)
- ((op =::real => real => bool) x0 (0::real))))
- ((-->::(nat => real) => real => bool)
- (%n::nat. (inverse::real => real) (x n))
- ((inverse::real => real) x0))))"
+lemma SEQ_INV: "ALL (x::nat => real) x0::real.
+ hol4--> x x0 & x0 ~= 0 --> hol4--> (%n::nat. inverse (x n)) (inverse x0)"
by (import seq SEQ_INV)
-lemma SEQ_SUB: "(All::((nat => real) => bool) => bool)
- (%x::nat => real.
- (All::(real => bool) => bool)
- (%x0::real.
- (All::((nat => real) => bool) => bool)
- (%y::nat => real.
- (All::(real => bool) => bool)
- (%y0::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((-->::(nat => real) => real => bool) x x0)
- ((-->::(nat => real) => real => bool) y y0))
- ((-->::(nat => real) => real => bool)
- (%n::nat. (op -::real => real => real) (x n) (y n))
- ((op -::real => real => real) x0 y0))))))"
+lemma SEQ_SUB: "ALL (x::nat => real) (x0::real) (y::nat => real) y0::real.
+ hol4--> x x0 & hol4--> y y0 --> hol4--> (%n::nat. x n - y n) (x0 - y0)"
by (import seq SEQ_SUB)
-lemma SEQ_DIV: "(All::((nat => real) => bool) => bool)
- (%x::nat => real.
- (All::(real => bool) => bool)
- (%x0::real.
- (All::((nat => real) => bool) => bool)
- (%y::nat => real.
- (All::(real => bool) => bool)
- (%y0::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((-->::(nat => real) => real => bool) x x0)
- ((op &::bool => bool => bool)
- ((-->::(nat => real) => real => bool) y y0)
- ((Not::bool => bool)
- ((op =::real => real => bool) y0 (0::real)))))
- ((-->::(nat => real) => real => bool)
- (%n::nat. (op /::real => real => real) (x n) (y n))
- ((op /::real => real => real) x0 y0))))))"
+lemma SEQ_DIV: "ALL (x::nat => real) (x0::real) (y::nat => real) y0::real.
+ hol4--> x x0 & hol4--> y y0 & y0 ~= 0 -->
+ hol4--> (%n::nat. x n / y n) (x0 / y0)"
by (import seq SEQ_DIV)
-lemma SEQ_UNIQ: "(All::((nat => real) => bool) => bool)
- (%x::nat => real.
- (All::(real => bool) => bool)
- (%x1::real.
- (All::(real => bool) => bool)
- (%x2::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((-->::(nat => real) => real => bool) x x1)
- ((-->::(nat => real) => real => bool) x x2))
- ((op =::real => real => bool) x1 x2))))"
+lemma SEQ_UNIQ: "ALL (x::nat => real) (x1::real) x2::real.
+ hol4--> x x1 & hol4--> x x2 --> x1 = x2"
by (import seq SEQ_UNIQ)
constdefs
convergent :: "(nat => real) => bool"
- "convergent == %f::nat => real. Ex (--> f)"
-
-lemma convergent: "ALL f::nat => real. convergent f = Ex (--> f)"
+ "convergent == %f::nat => real. Ex (hol4--> f)"
+
+lemma convergent: "ALL f::nat => real. convergent f = Ex (hol4--> f)"
by (import seq convergent)
constdefs
cauchy :: "(nat => real) => bool"
- "(op ==::((nat => real) => bool) => ((nat => real) => bool) => prop)
- (cauchy::(nat => real) => bool)
- (%f::nat => real.
- (All::(real => bool) => bool)
- (%e::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool) (0::real) e)
- ((Ex::(nat => bool) => bool)
- (%N::nat.
- (All::(nat => bool) => bool)
- (%m::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::nat => nat => bool) N m)
- ((op <=::nat => nat => bool) N n))
- ((op <::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real) (f m) (f n)))
- e)))))))"
-
-lemma cauchy: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (op =::bool => bool => bool) ((cauchy::(nat => real) => bool) f)
- ((All::(real => bool) => bool)
- (%e::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool) (0::real) e)
- ((Ex::(nat => bool) => bool)
- (%N::nat.
- (All::(nat => bool) => bool)
- (%m::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::nat => nat => bool) N m)
- ((op <=::nat => nat => bool) N n))
- ((op <::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real) (f m)
- (f n)))
- e))))))))"
+ "cauchy ==
+%f::nat => real.
+ ALL e>0.
+ EX N::nat.
+ ALL (m::nat) n::nat. N <= m & N <= n --> abs (f m - f n) < e"
+
+lemma cauchy: "ALL f::nat => real.
+ cauchy f =
+ (ALL e>0.
+ EX N::nat.
+ ALL (m::nat) n::nat. N <= m & N <= n --> abs (f m - f n) < e)"
by (import seq cauchy)
constdefs
lim :: "(nat => real) => real"
- "lim == %f::nat => real. Eps (--> f)"
-
-lemma lim: "ALL f::nat => real. lim f = Eps (--> f)"
+ "lim == %f::nat => real. Eps (hol4--> f)"
+
+lemma lim: "ALL f::nat => real. lim f = Eps (hol4--> f)"
by (import seq lim)
-lemma SEQ_LIM: "ALL f::nat => real. convergent f = --> f (lim f)"
+lemma SEQ_LIM: "ALL f::nat => real. convergent f = hol4--> f (lim f)"
by (import seq SEQ_LIM)
constdefs
subseq :: "(nat => nat) => bool"
- "(op ==::((nat => nat) => bool) => ((nat => nat) => bool) => prop)
- (subseq::(nat => nat) => bool)
- (%f::nat => nat.
- (All::(nat => bool) => bool)
- (%m::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op <::nat => nat => bool) m n)
- ((op <::nat => nat => bool) (f m) (f n)))))"
-
-lemma subseq: "(All::((nat => nat) => bool) => bool)
- (%f::nat => nat.
- (op =::bool => bool => bool) ((subseq::(nat => nat) => bool) f)
- ((All::(nat => bool) => bool)
- (%m::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op <::nat => nat => bool) m n)
- ((op <::nat => nat => bool) (f m) (f n))))))"
+ "subseq == %f::nat => nat. ALL (m::nat) n::nat. m < n --> f m < f n"
+
+lemma subseq: "ALL f::nat => nat. subseq f = (ALL (m::nat) n::nat. m < n --> f m < f n)"
by (import seq subseq)
lemma SUBSEQ_SUC: "ALL f::nat => nat. subseq f = (ALL n::nat. f n < f (Suc n))"
@@ -1554,43 +1414,15 @@
mono :: "(nat => real) => bool"
defs
- mono_def: "(op ==::((nat => real) => bool) => ((nat => real) => bool) => prop)
- (seq.mono::(nat => real) => bool)
- (%f::nat => real.
- (op |::bool => bool => bool)
- ((All::(nat => bool) => bool)
- (%m::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op <=::nat => nat => bool) m n)
- ((op <=::real => real => bool) (f m) (f n)))))
- ((All::(nat => bool) => bool)
- (%m::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op <=::nat => nat => bool) m n)
- ((op <=::real => real => bool) (f n) (f m))))))"
-
-lemma mono: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (op =::bool => bool => bool) ((seq.mono::(nat => real) => bool) f)
- ((op |::bool => bool => bool)
- ((All::(nat => bool) => bool)
- (%m::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op <=::nat => nat => bool) m n)
- ((op <=::real => real => bool) (f m) (f n)))))
- ((All::(nat => bool) => bool)
- (%m::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op <=::nat => nat => bool) m n)
- ((op <=::real => real => bool) (f n) (f m)))))))"
+ mono_def: "seq.mono ==
+%f::nat => real.
+ (ALL (m::nat) n::nat. m <= n --> f m <= f n) |
+ (ALL (m::nat) n::nat. m <= n --> f n <= f m)"
+
+lemma mono: "ALL f::nat => real.
+ seq.mono f =
+ ((ALL (m::nat) n::nat. m <= n --> f m <= f n) |
+ (ALL (m::nat) n::nat. m <= n --> f n <= f m))"
by (import seq mono)
lemma MONO_SUC: "ALL f::nat => real.
@@ -1616,58 +1448,17 @@
bounded (mr1, nat_ge) s = (EX k::real. ALL n::nat. abs (s n) < k)"
by (import seq SEQ_BOUNDED)
-lemma SEQ_BOUNDED_2: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::(real => bool) => bool)
- (%k::real.
- (All::(real => bool) => bool)
- (%k'::real.
- (op -->::bool => bool => bool)
- ((All::(nat => bool) => bool)
- (%n::nat.
- (op &::bool => bool => bool)
- ((op <=::real => real => bool) k (f n))
- ((op <=::real => real => bool) (f n) k')))
- ((bounded::real metric * (nat => nat => bool)
- => (nat => real) => bool)
- ((Pair::real metric
- => (nat => nat => bool)
- => real metric * (nat => nat => bool))
- (mr1::real metric) (nat_ge::nat => nat => bool))
- f))))"
+lemma SEQ_BOUNDED_2: "ALL (f::nat => real) (k::real) k'::real.
+ (ALL n::nat. k <= f n & f n <= k') --> bounded (mr1, nat_ge) f"
by (import seq SEQ_BOUNDED_2)
-lemma SEQ_CBOUNDED: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (op -->::bool => bool => bool) ((cauchy::(nat => real) => bool) f)
- ((bounded::real metric * (nat => nat => bool)
- => (nat => real) => bool)
- ((Pair::real metric
- => (nat => nat => bool)
- => real metric * (nat => nat => bool))
- (mr1::real metric) (nat_ge::nat => nat => bool))
- f))"
+lemma SEQ_CBOUNDED: "ALL f::nat => real. cauchy f --> bounded (mr1, nat_ge) f"
by (import seq SEQ_CBOUNDED)
-lemma SEQ_ICONV: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((bounded::real metric * (nat => nat => bool)
- => (nat => real) => bool)
- ((Pair::real metric
- => (nat => nat => bool)
- => real metric * (nat => nat => bool))
- (mr1::real metric) (nat_ge::nat => nat => bool))
- f)
- ((All::(nat => bool) => bool)
- (%m::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op <=::nat => nat => bool) n m)
- ((op <=::real => real => bool) (f n) (f m))))))
- ((convergent::(nat => real) => bool) f))"
+lemma SEQ_ICONV: "ALL f::nat => real.
+ bounded (mr1, nat_ge) f &
+ (ALL (m::nat) n::nat. n <= m --> f n <= f m) -->
+ convergent f"
by (import seq SEQ_ICONV)
lemma SEQ_NEG_CONV: "ALL f::nat => real. convergent f = convergent (%n::nat. - f n)"
@@ -1677,264 +1468,87 @@
bounded (mr1, nat_ge) (%n::nat. - f n) = bounded (mr1, nat_ge) f"
by (import seq SEQ_NEG_BOUNDED)
-lemma SEQ_BCONV: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((bounded::real metric * (nat => nat => bool)
- => (nat => real) => bool)
- ((Pair::real metric
- => (nat => nat => bool)
- => real metric * (nat => nat => bool))
- (mr1::real metric) (nat_ge::nat => nat => bool))
- f)
- ((seq.mono::(nat => real) => bool) f))
- ((convergent::(nat => real) => bool) f))"
+lemma SEQ_BCONV: "ALL f::nat => real. bounded (mr1, nat_ge) f & seq.mono f --> convergent f"
by (import seq SEQ_BCONV)
lemma SEQ_MONOSUB: "ALL s::nat => real. EX f::nat => nat. subseq f & seq.mono (%n::nat. s (f n))"
by (import seq SEQ_MONOSUB)
-lemma SEQ_SBOUNDED: "(All::((nat => real) => bool) => bool)
- (%s::nat => real.
- (All::((nat => nat) => bool) => bool)
- (%f::nat => nat.
- (op -->::bool => bool => bool)
- ((bounded::real metric * (nat => nat => bool)
- => (nat => real) => bool)
- ((Pair::real metric
- => (nat => nat => bool)
- => real metric * (nat => nat => bool))
- (mr1::real metric) (nat_ge::nat => nat => bool))
- s)
- ((bounded::real metric * (nat => nat => bool)
- => (nat => real) => bool)
- ((Pair::real metric
- => (nat => nat => bool)
- => real metric * (nat => nat => bool))
- (mr1::real metric) (nat_ge::nat => nat => bool))
- (%n::nat. s (f n)))))"
+lemma SEQ_SBOUNDED: "ALL (s::nat => real) f::nat => nat.
+ bounded (mr1, nat_ge) s --> bounded (mr1, nat_ge) (%n::nat. s (f n))"
by (import seq SEQ_SBOUNDED)
-lemma SEQ_SUBLE: "(All::((nat => nat) => bool) => bool)
- (%f::nat => nat.
- (op -->::bool => bool => bool) ((subseq::(nat => nat) => bool) f)
- ((All::(nat => bool) => bool)
- (%n::nat. (op <=::nat => nat => bool) n (f n))))"
+lemma SEQ_SUBLE: "ALL f::nat => nat. subseq f --> (ALL n::nat. n <= f n)"
by (import seq SEQ_SUBLE)
-lemma SEQ_DIRECT: "(All::((nat => nat) => bool) => bool)
- (%f::nat => nat.
- (op -->::bool => bool => bool) ((subseq::(nat => nat) => bool) f)
- ((All::(nat => bool) => bool)
- (%N1::nat.
- (All::(nat => bool) => bool)
- (%N2::nat.
- (Ex::(nat => bool) => bool)
- (%x::nat.
- (op &::bool => bool => bool)
- ((op <=::nat => nat => bool) N1 x)
- ((op <=::nat => nat => bool) N2 (f x)))))))"
+lemma SEQ_DIRECT: "ALL f::nat => nat.
+ subseq f --> (ALL (N1::nat) N2::nat. EX x::nat. N1 <= x & N2 <= f x)"
by (import seq SEQ_DIRECT)
lemma SEQ_CAUCHY: "ALL f::nat => real. cauchy f = convergent f"
by (import seq SEQ_CAUCHY)
-lemma SEQ_LE: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::((nat => real) => bool) => bool)
- (%g::nat => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%m::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((-->::(nat => real) => real => bool) f l)
- ((op &::bool => bool => bool)
- ((-->::(nat => real) => real => bool) g m)
- ((Ex::(nat => bool) => bool)
- (%x::nat.
- (All::(nat => bool) => bool)
- (%xa::nat.
- (op -->::bool => bool => bool)
- ((op <=::nat => nat => bool) x xa)
- ((op <=::real => real => bool) (f xa)
- (g xa)))))))
- ((op <=::real => real => bool) l m)))))"
+lemma SEQ_LE: "ALL (f::nat => real) (g::nat => real) (l::real) m::real.
+ hol4--> f l &
+ hol4--> g m & (EX x::nat. ALL xa::nat. x <= xa --> f xa <= g xa) -->
+ l <= m"
by (import seq SEQ_LE)
-lemma SEQ_SUC: "ALL (f::nat => real) l::real. --> f l = --> (%n::nat. f (Suc n)) l"
+lemma SEQ_SUC: "ALL (f::nat => real) l::real. hol4--> f l = hol4--> (%n::nat. f (Suc n)) l"
by (import seq SEQ_SUC)
-lemma SEQ_ABS: "ALL f::nat => real. --> (%n::nat. abs (f n)) 0 = --> f 0"
+lemma SEQ_ABS: "ALL f::nat => real. hol4--> (%n::nat. abs (f n)) 0 = hol4--> f 0"
by (import seq SEQ_ABS)
-lemma SEQ_ABS_IMP: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::(real => bool) => bool)
- (%l::real.
- (op -->::bool => bool => bool)
- ((-->::(nat => real) => real => bool) f l)
- ((-->::(nat => real) => real => bool)
- (%n::nat. (abs::real => real) (f n)) ((abs::real => real) l))))"
+lemma SEQ_ABS_IMP: "ALL (f::nat => real) l::real.
+ hol4--> f l --> hol4--> (%n::nat. abs (f n)) (abs l)"
by (import seq SEQ_ABS_IMP)
-lemma SEQ_INV0: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (op -->::bool => bool => bool)
- ((All::(real => bool) => bool)
- (%y::real.
- (Ex::(nat => bool) => bool)
- (%N::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op <=::nat => nat => bool) N n)
- ((op <::real => real => bool) y (f n))))))
- ((-->::(nat => real) => real => bool)
- (%n::nat. (inverse::real => real) (f n)) (0::real)))"
+lemma SEQ_INV0: "ALL f::nat => real.
+ (ALL y::real. EX N::nat. ALL n::nat. N <= n --> y < f n) -->
+ hol4--> (%n::nat. inverse (f n)) 0"
by (import seq SEQ_INV0)
-lemma SEQ_POWER_ABS: "(All::(real => bool) => bool)
- (%c::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool) ((abs::real => real) c) (1::real))
- ((-->::(nat => real) => real => bool)
- ((op ^::real => nat => real) ((abs::real => real) c)) (0::real)))"
+lemma SEQ_POWER_ABS: "ALL c::real. abs c < 1 --> hol4--> (op ^ (abs c)) 0"
by (import seq SEQ_POWER_ABS)
-lemma SEQ_POWER: "(All::(real => bool) => bool)
- (%c::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool) ((abs::real => real) c) (1::real))
- ((-->::(nat => real) => real => bool) ((op ^::real => nat => real) c)
- (0::real)))"
+lemma SEQ_POWER: "ALL c::real. abs c < 1 --> hol4--> (op ^ c) 0"
by (import seq SEQ_POWER)
-lemma NEST_LEMMA: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::((nat => real) => bool) => bool)
- (%g::nat => real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((All::(nat => bool) => bool)
- (%n::nat.
- (op <=::real => real => bool) (f n)
- (f ((Suc::nat => nat) n))))
- ((op &::bool => bool => bool)
- ((All::(nat => bool) => bool)
- (%n::nat.
- (op <=::real => real => bool) (g ((Suc::nat => nat) n))
- (g n)))
- ((All::(nat => bool) => bool)
- (%n::nat. (op <=::real => real => bool) (f n) (g n)))))
- ((Ex::(real => bool) => bool)
- (%l::real.
- (Ex::(real => bool) => bool)
- (%m::real.
- (op &::bool => bool => bool)
- ((op <=::real => real => bool) l m)
- ((op &::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((All::(nat => bool) => bool)
- (%n::nat.
- (op <=::real => real => bool) (f n) l))
- ((-->::(nat => real) => real => bool) f l))
- ((op &::bool => bool => bool)
- ((All::(nat => bool) => bool)
- (%n::nat.
- (op <=::real => real => bool) m (g n)))
- ((-->::(nat => real) => real => bool) g m))))))))"
+lemma NEST_LEMMA: "ALL (f::nat => real) g::nat => real.
+ (ALL n::nat. f n <= f (Suc n)) &
+ (ALL n::nat. g (Suc n) <= g n) & (ALL n::nat. f n <= g n) -->
+ (EX (l::real) m::real.
+ l <= m &
+ ((ALL n::nat. f n <= l) & hol4--> f l) &
+ (ALL n::nat. m <= g n) & hol4--> g m)"
by (import seq NEST_LEMMA)
-lemma NEST_LEMMA_UNIQ: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::((nat => real) => bool) => bool)
- (%g::nat => real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((All::(nat => bool) => bool)
- (%n::nat.
- (op <=::real => real => bool) (f n)
- (f ((Suc::nat => nat) n))))
- ((op &::bool => bool => bool)
- ((All::(nat => bool) => bool)
- (%n::nat.
- (op <=::real => real => bool) (g ((Suc::nat => nat) n))
- (g n)))
- ((op &::bool => bool => bool)
- ((All::(nat => bool) => bool)
- (%n::nat. (op <=::real => real => bool) (f n) (g n)))
- ((-->::(nat => real) => real => bool)
- (%n::nat. (op -::real => real => real) (f n) (g n))
- (0::real)))))
- ((Ex::(real => bool) => bool)
- (%x::real.
- (op &::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((All::(nat => bool) => bool)
- (%n::nat. (op <=::real => real => bool) (f n) x))
- ((-->::(nat => real) => real => bool) f x))
- ((op &::bool => bool => bool)
- ((All::(nat => bool) => bool)
- (%n::nat. (op <=::real => real => bool) x (g n)))
- ((-->::(nat => real) => real => bool) g x))))))"
+lemma NEST_LEMMA_UNIQ: "ALL (f::nat => real) g::nat => real.
+ (ALL n::nat. f n <= f (Suc n)) &
+ (ALL n::nat. g (Suc n) <= g n) &
+ (ALL n::nat. f n <= g n) & hol4--> (%n::nat. f n - g n) 0 -->
+ (EX x::real.
+ ((ALL n::nat. f n <= x) & hol4--> f x) &
+ (ALL n::nat. x <= g n) & hol4--> g x)"
by (import seq NEST_LEMMA_UNIQ)
-lemma BOLZANO_LEMMA: "(All::((real * real => bool) => bool) => bool)
- (%P::real * real => bool.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (All::(real => bool) => bool)
- (%c::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a b)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) b c)
- ((op &::bool => bool => bool)
- (P ((Pair::real => real => real * real) a b))
- (P ((Pair::real => real => real * real) b
- c)))))
- (P ((Pair::real => real => real * real) a c))))))
- ((All::(real => bool) => bool)
- (%x::real.
- (Ex::(real => bool) => bool)
- (%d::real.
- (op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) d)
- ((All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a x)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) x b)
- ((op <::real => real => bool)
-((op -::real => real => real) b a) d)))
- (P ((Pair::real => real => real * real) a
- b)))))))))
- ((All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool) a b)
- (P ((Pair::real => real => real * real) a b))))))"
+lemma BOLZANO_LEMMA: "ALL P::real * real => bool.
+ (ALL (a::real) (b::real) c::real.
+ a <= b & b <= c & P (a, b) & P (b, c) --> P (a, c)) &
+ (ALL x::real.
+ EX d>0.
+ ALL (a::real) b::real.
+ a <= x & x <= b & b - a < d --> P (a, b)) -->
+ (ALL (a::real) b::real. a <= b --> P (a, b))"
by (import seq BOLZANO_LEMMA)
constdefs
sums :: "(nat => real) => real => bool"
- "sums == %f::nat => real. --> (%n::nat. real.sum (0, n) f)"
-
-lemma sums: "ALL (f::nat => real) s::real. sums f s = --> (%n::nat. real.sum (0, n) f) s"
+ "sums == %f::nat => real. hol4--> (%n::nat. real.sum (0, n) f)"
+
+lemma sums: "ALL (f::nat => real) s::real.
+ sums f s = hol4--> (%n::nat. real.sum (0, n) f) s"
by (import seq sums)
constdefs
@@ -1951,386 +1565,109 @@
lemma suminf: "ALL f::nat => real. suminf f = Eps (sums f)"
by (import seq suminf)
-lemma SUM_SUMMABLE: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::(real => bool) => bool)
- (%l::real.
- (op -->::bool => bool => bool)
- ((sums::(nat => real) => real => bool) f l)
- ((summable::(nat => real) => bool) f)))"
+lemma SUM_SUMMABLE: "ALL (f::nat => real) l::real. sums f l --> summable f"
by (import seq SUM_SUMMABLE)
-lemma SUMMABLE_SUM: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (op -->::bool => bool => bool) ((summable::(nat => real) => bool) f)
- ((sums::(nat => real) => real => bool) f
- ((suminf::(nat => real) => real) f)))"
+lemma SUMMABLE_SUM: "ALL f::nat => real. summable f --> sums f (suminf f)"
by (import seq SUMMABLE_SUM)
-lemma SUM_UNIQ: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((sums::(nat => real) => real => bool) f x)
- ((op =::real => real => bool) x
- ((suminf::(nat => real) => real) f))))"
+lemma SUM_UNIQ: "ALL (f::nat => real) x::real. sums f x --> x = suminf f"
by (import seq SUM_UNIQ)
-lemma SER_0: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((All::(nat => bool) => bool)
- (%m::nat.
- (op -->::bool => bool => bool)
- ((op <=::nat => nat => bool) n m)
- ((op =::real => real => bool) (f m) (0::real))))
- ((sums::(nat => real) => real => bool) f
- ((real.sum::nat * nat => (nat => real) => real)
- ((Pair::nat => nat => nat * nat) (0::nat) n) f))))"
+lemma SER_0: "ALL (f::nat => real) n::nat.
+ (ALL m::nat. n <= m --> f m = 0) --> sums f (real.sum (0, n) f)"
by (import seq SER_0)
-lemma SER_POS_LE: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((summable::(nat => real) => bool) f)
- ((All::(nat => bool) => bool)
- (%m::nat.
- (op -->::bool => bool => bool)
- ((op <=::nat => nat => bool) n m)
- ((op <=::real => real => bool) (0::real) (f m)))))
- ((op <=::real => real => bool)
- ((real.sum::nat * nat => (nat => real) => real)
- ((Pair::nat => nat => nat * nat) (0::nat) n) f)
- ((suminf::(nat => real) => real) f))))"
+lemma SER_POS_LE: "ALL (f::nat => real) n::nat.
+ summable f & (ALL m::nat. n <= m --> 0 <= f m) -->
+ real.sum (0, n) f <= suminf f"
by (import seq SER_POS_LE)
-lemma SER_POS_LT: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((summable::(nat => real) => bool) f)
- ((All::(nat => bool) => bool)
- (%m::nat.
- (op -->::bool => bool => bool)
- ((op <=::nat => nat => bool) n m)
- ((op <::real => real => bool) (0::real) (f m)))))
- ((op <::real => real => bool)
- ((real.sum::nat * nat => (nat => real) => real)
- ((Pair::nat => nat => nat * nat) (0::nat) n) f)
- ((suminf::(nat => real) => real) f))))"
+lemma SER_POS_LT: "ALL (f::nat => real) n::nat.
+ summable f & (ALL m::nat. n <= m --> 0 < f m) -->
+ real.sum (0, n) f < suminf f"
by (import seq SER_POS_LT)
-lemma SER_GROUP: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::(nat => bool) => bool)
- (%k::nat.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((summable::(nat => real) => bool) f)
- ((op <::nat => nat => bool) (0::nat) k))
- ((sums::(nat => real) => real => bool)
- (%n::nat.
- (real.sum::nat * nat => (nat => real) => real)
- ((Pair::nat => nat => nat * nat)
- ((op *::nat => nat => nat) n k) k)
- f)
- ((suminf::(nat => real) => real) f))))"
+lemma SER_GROUP: "ALL (f::nat => real) k::nat.
+ summable f & 0 < k --> sums (%n::nat. real.sum (n * k, k) f) (suminf f)"
by (import seq SER_GROUP)
-lemma SER_PAIR: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (op -->::bool => bool => bool) ((summable::(nat => real) => bool) f)
- ((sums::(nat => real) => real => bool)
- (%n::nat.
- (real.sum::nat * nat => (nat => real) => real)
- ((Pair::nat => nat => nat * nat)
- ((op *::nat => nat => nat)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))
- n)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))
- f)
- ((suminf::(nat => real) => real) f)))"
+lemma SER_PAIR: "ALL f::nat => real.
+ summable f --> sums (%n::nat. real.sum (2 * n, 2) f) (suminf f)"
by (import seq SER_PAIR)
-lemma SER_OFFSET: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (op -->::bool => bool => bool) ((summable::(nat => real) => bool) f)
- ((All::(nat => bool) => bool)
- (%k::nat.
- (sums::(nat => real) => real => bool)
- (%n::nat. f ((op +::nat => nat => nat) n k))
- ((op -::real => real => real)
- ((suminf::(nat => real) => real) f)
- ((real.sum::nat * nat => (nat => real) => real)
- ((Pair::nat => nat => nat * nat) (0::nat) k) f)))))"
+lemma SER_OFFSET: "ALL f::nat => real.
+ summable f -->
+ (ALL k::nat. sums (%n::nat. f (n + k)) (suminf f - real.sum (0, k) f))"
by (import seq SER_OFFSET)
-lemma SER_POS_LT_PAIR: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((summable::(nat => real) => bool) f)
- ((All::(nat => bool) => bool)
- (%d::nat.
- (op <::real => real => bool) (0::real)
- ((op +::real => real => real)
- (f ((op +::nat => nat => nat) n
- ((op *::nat => nat => nat)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin)
- (Numeral.Pls::bin) (bit.B1::bit))
- (bit.B0::bit)))
- d)))
- (f ((op +::nat => nat => nat) n
- ((op +::nat => nat => nat)
- ((op *::nat => nat => nat)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin)
- (Numeral.Pls::bin) (bit.B1::bit))
- (bit.B0::bit)))
- d)
- (1::nat))))))))
- ((op <::real => real => bool)
- ((real.sum::nat * nat => (nat => real) => real)
- ((Pair::nat => nat => nat * nat) (0::nat) n) f)
- ((suminf::(nat => real) => real) f))))"
+lemma SER_POS_LT_PAIR: "ALL (f::nat => real) n::nat.
+ summable f & (ALL d::nat. 0 < f (n + 2 * d) + f (n + (2 * d + 1))) -->
+ real.sum (0, n) f < suminf f"
by (import seq SER_POS_LT_PAIR)
-lemma SER_ADD: "(All::((nat => real) => bool) => bool)
- (%x::nat => real.
- (All::(real => bool) => bool)
- (%x0::real.
- (All::((nat => real) => bool) => bool)
- (%y::nat => real.
- (All::(real => bool) => bool)
- (%y0::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((sums::(nat => real) => real => bool) x x0)
- ((sums::(nat => real) => real => bool) y y0))
- ((sums::(nat => real) => real => bool)
- (%n::nat. (op +::real => real => real) (x n) (y n))
- ((op +::real => real => real) x0 y0))))))"
+lemma SER_ADD: "ALL (x::nat => real) (x0::real) (y::nat => real) y0::real.
+ sums x x0 & sums y y0 --> sums (%n::nat. x n + y n) (x0 + y0)"
by (import seq SER_ADD)
-lemma SER_CMUL: "(All::((nat => real) => bool) => bool)
- (%x::nat => real.
- (All::(real => bool) => bool)
- (%x0::real.
- (All::(real => bool) => bool)
- (%c::real.
- (op -->::bool => bool => bool)
- ((sums::(nat => real) => real => bool) x x0)
- ((sums::(nat => real) => real => bool)
- (%n::nat. (op *::real => real => real) c (x n))
- ((op *::real => real => real) c x0)))))"
+lemma SER_CMUL: "ALL (x::nat => real) (x0::real) c::real.
+ sums x x0 --> sums (%n::nat. c * x n) (c * x0)"
by (import seq SER_CMUL)
-lemma SER_NEG: "(All::((nat => real) => bool) => bool)
- (%x::nat => real.
- (All::(real => bool) => bool)
- (%x0::real.
- (op -->::bool => bool => bool)
- ((sums::(nat => real) => real => bool) x x0)
- ((sums::(nat => real) => real => bool)
- (%xa::nat. (uminus::real => real) (x xa))
- ((uminus::real => real) x0))))"
+lemma SER_NEG: "ALL (x::nat => real) x0::real. sums x x0 --> sums (%xa::nat. - x xa) (- x0)"
by (import seq SER_NEG)
-lemma SER_SUB: "(All::((nat => real) => bool) => bool)
- (%x::nat => real.
- (All::(real => bool) => bool)
- (%x0::real.
- (All::((nat => real) => bool) => bool)
- (%y::nat => real.
- (All::(real => bool) => bool)
- (%y0::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((sums::(nat => real) => real => bool) x x0)
- ((sums::(nat => real) => real => bool) y y0))
- ((sums::(nat => real) => real => bool)
- (%xa::nat.
- (op -::real => real => real) (x xa) (y xa))
- ((op -::real => real => real) x0 y0))))))"
+lemma SER_SUB: "ALL (x::nat => real) (x0::real) (y::nat => real) y0::real.
+ sums x x0 & sums y y0 --> sums (%xa::nat. x xa - y xa) (x0 - y0)"
by (import seq SER_SUB)
-lemma SER_CDIV: "(All::((nat => real) => bool) => bool)
- (%x::nat => real.
- (All::(real => bool) => bool)
- (%x0::real.
- (All::(real => bool) => bool)
- (%c::real.
- (op -->::bool => bool => bool)
- ((sums::(nat => real) => real => bool) x x0)
- ((sums::(nat => real) => real => bool)
- (%xa::nat. (op /::real => real => real) (x xa) c)
- ((op /::real => real => real) x0 c)))))"
+lemma SER_CDIV: "ALL (x::nat => real) (x0::real) c::real.
+ sums x x0 --> sums (%xa::nat. x xa / c) (x0 / c)"
by (import seq SER_CDIV)
-lemma SER_CAUCHY: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (op =::bool => bool => bool) ((summable::(nat => real) => bool) f)
- ((All::(real => bool) => bool)
- (%e::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool) (0::real) e)
- ((Ex::(nat => bool) => bool)
- (%N::nat.
- (All::(nat => bool) => bool)
- (%m::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op <=::nat => nat => bool) N m)
- ((op <::real => real => bool)
- ((abs::real => real)
- ((real.sum::nat * nat
- => (nat => real) => real)
- ((Pair::nat => nat => nat * nat) m n)
- f))
- e))))))))"
+lemma SER_CAUCHY: "ALL f::nat => real.
+ summable f =
+ (ALL e>0.
+ EX N::nat.
+ ALL (m::nat) n::nat. N <= m --> abs (real.sum (m, n) f) < e)"
by (import seq SER_CAUCHY)
-lemma SER_ZERO: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (op -->::bool => bool => bool) ((summable::(nat => real) => bool) f)
- ((-->::(nat => real) => real => bool) f (0::real)))"
+lemma SER_ZERO: "ALL f::nat => real. summable f --> hol4--> f 0"
by (import seq SER_ZERO)
-lemma SER_COMPAR: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::((nat => real) => bool) => bool)
- (%g::nat => real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((Ex::(nat => bool) => bool)
- (%x::nat.
- (All::(nat => bool) => bool)
- (%xa::nat.
- (op -->::bool => bool => bool)
- ((op <=::nat => nat => bool) x xa)
- ((op <=::real => real => bool)
- ((abs::real => real) (f xa)) (g xa)))))
- ((summable::(nat => real) => bool) g))
- ((summable::(nat => real) => bool) f)))"
+lemma SER_COMPAR: "ALL (f::nat => real) g::nat => real.
+ (EX x::nat. ALL xa::nat. x <= xa --> abs (f xa) <= g xa) & summable g -->
+ summable f"
by (import seq SER_COMPAR)
-lemma SER_COMPARA: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::((nat => real) => bool) => bool)
- (%g::nat => real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((Ex::(nat => bool) => bool)
- (%x::nat.
- (All::(nat => bool) => bool)
- (%xa::nat.
- (op -->::bool => bool => bool)
- ((op <=::nat => nat => bool) x xa)
- ((op <=::real => real => bool)
- ((abs::real => real) (f xa)) (g xa)))))
- ((summable::(nat => real) => bool) g))
- ((summable::(nat => real) => bool)
- (%k::nat. (abs::real => real) (f k)))))"
+lemma SER_COMPARA: "ALL (f::nat => real) g::nat => real.
+ (EX x::nat. ALL xa::nat. x <= xa --> abs (f xa) <= g xa) & summable g -->
+ summable (%k::nat. abs (f k))"
by (import seq SER_COMPARA)
-lemma SER_LE: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::((nat => real) => bool) => bool)
- (%g::nat => real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((All::(nat => bool) => bool)
- (%n::nat. (op <=::real => real => bool) (f n) (g n)))
- ((op &::bool => bool => bool)
- ((summable::(nat => real) => bool) f)
- ((summable::(nat => real) => bool) g)))
- ((op <=::real => real => bool)
- ((suminf::(nat => real) => real) f)
- ((suminf::(nat => real) => real) g))))"
+lemma SER_LE: "ALL (f::nat => real) g::nat => real.
+ (ALL n::nat. f n <= g n) & summable f & summable g -->
+ suminf f <= suminf g"
by (import seq SER_LE)
-lemma SER_LE2: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::((nat => real) => bool) => bool)
- (%g::nat => real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((All::(nat => bool) => bool)
- (%n::nat.
- (op <=::real => real => bool) ((abs::real => real) (f n))
- (g n)))
- ((summable::(nat => real) => bool) g))
- ((op &::bool => bool => bool)
- ((summable::(nat => real) => bool) f)
- ((op <=::real => real => bool)
- ((suminf::(nat => real) => real) f)
- ((suminf::(nat => real) => real) g)))))"
+lemma SER_LE2: "ALL (f::nat => real) g::nat => real.
+ (ALL n::nat. abs (f n) <= g n) & summable g -->
+ summable f & suminf f <= suminf g"
by (import seq SER_LE2)
-lemma SER_ACONV: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (op -->::bool => bool => bool)
- ((summable::(nat => real) => bool)
- (%n::nat. (abs::real => real) (f n)))
- ((summable::(nat => real) => bool) f))"
+lemma SER_ACONV: "ALL f::nat => real. summable (%n::nat. abs (f n)) --> summable f"
by (import seq SER_ACONV)
-lemma SER_ABS: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (op -->::bool => bool => bool)
- ((summable::(nat => real) => bool)
- (%n::nat. (abs::real => real) (f n)))
- ((op <=::real => real => bool)
- ((abs::real => real) ((suminf::(nat => real) => real) f))
- ((suminf::(nat => real) => real)
- (%n::nat. (abs::real => real) (f n)))))"
+lemma SER_ABS: "ALL f::nat => real.
+ summable (%n::nat. abs (f n)) -->
+ abs (suminf f) <= suminf (%n::nat. abs (f n))"
by (import seq SER_ABS)
-lemma GP_FINITE: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((Not::bool => bool) ((op =::real => real => bool) x (1::real)))
- ((All::(nat => bool) => bool)
- (%n::nat.
- (op =::real => real => bool)
- ((real.sum::nat * nat => (nat => real) => real)
- ((Pair::nat => nat => nat * nat) (0::nat) n)
- ((op ^::real => nat => real) x))
- ((op /::real => real => real)
- ((op -::real => real => real)
- ((op ^::real => nat => real) x n) (1::real))
- ((op -::real => real => real) x (1::real))))))"
+lemma GP_FINITE: "ALL x::real.
+ x ~= 1 --> (ALL n::nat. real.sum (0, n) (op ^ x) = (x ^ n - 1) / (x - 1))"
by (import seq GP_FINITE)
-lemma GP: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool) ((abs::real => real) x) (1::real))
- ((sums::(nat => real) => real => bool) ((op ^::real => nat => real) x)
- ((inverse::real => real)
- ((op -::real => real => real) (1::real) x))))"
+lemma GP: "ALL x::real. abs x < 1 --> sums (op ^ x) (inverse (1 - x))"
by (import seq GP)
lemma ABS_NEG_LEMMA: "(All::(real => bool) => bool)
@@ -2348,24 +1685,9 @@
((op =::real => real => bool) x (0::real))))))"
by (import seq ABS_NEG_LEMMA)
-lemma SER_RATIO: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::(real => bool) => bool)
- (%c::real.
- (All::(nat => bool) => bool)
- (%N::nat.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) c (1::real))
- ((All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op <=::nat => nat => bool) N n)
- ((op <=::real => real => bool)
- ((abs::real => real) (f ((Suc::nat => nat) n)))
- ((op *::real => real => real) c
- ((abs::real => real) (f n)))))))
- ((summable::(nat => real) => bool) f))))"
+lemma SER_RATIO: "ALL (f::nat => real) (c::real) N::nat.
+ c < 1 & (ALL n::nat. N <= n --> abs (f (Suc n)) <= c * abs (f n)) -->
+ summable f"
by (import seq SER_RATIO)
;end_setup
@@ -2382,161 +1704,44 @@
tends_real_real f l x0 = tends f l (mtop mr1, tendsto (mr1, x0))"
by (import lim tends_real_real)
-lemma LIM: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%y0::real.
- (All::(real => bool) => bool)
- (%x0::real.
- (op =::bool => bool => bool)
- ((tends_real_real::(real => real) => real => real => bool) f
- y0 x0)
- ((All::(real => bool) => bool)
- (%e::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool) (0::real) e)
- ((Ex::(real => bool) => bool)
- (%d::real.
- (op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) d)
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real)
- ((abs::real => real) ((op -::real => real => real) x x0)))
- ((op <::real => real => bool)
- ((abs::real => real) ((op -::real => real => real) x x0)) d))
- ((op <::real => real => bool)
- ((abs::real => real) ((op -::real => real => real) (f x) y0)) e))))))))))"
+lemma LIM: "ALL (f::real => real) (y0::real) x0::real.
+ tends_real_real f y0 x0 =
+ (ALL e>0.
+ EX d>0.
+ ALL x::real.
+ 0 < abs (x - x0) & abs (x - x0) < d --> abs (f x - y0) < e)"
by (import lim LIM)
lemma LIM_CONST: "ALL k::real. All (tends_real_real (%x::real. k) k)"
by (import lim LIM_CONST)
-lemma LIM_ADD: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%m::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((tends_real_real::(real => real)
- => real => real => bool)
- f l x)
- ((tends_real_real::(real => real)
- => real => real => bool)
- g m x))
- ((tends_real_real::(real => real)
- => real => real => bool)
- (%x::real.
- (op +::real => real => real) (f x) (g x))
- ((op +::real => real => real) l m) x))))))"
+lemma LIM_ADD: "ALL (f::real => real) (g::real => real) (l::real) (m::real) x::real.
+ tends_real_real f l x & tends_real_real g m x -->
+ tends_real_real (%x::real. f x + g x) (l + m) x"
by (import lim LIM_ADD)
-lemma LIM_MUL: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%m::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((tends_real_real::(real => real)
- => real => real => bool)
- f l x)
- ((tends_real_real::(real => real)
- => real => real => bool)
- g m x))
- ((tends_real_real::(real => real)
- => real => real => bool)
- (%x::real.
- (op *::real => real => real) (f x) (g x))
- ((op *::real => real => real) l m) x))))))"
+lemma LIM_MUL: "ALL (f::real => real) (g::real => real) (l::real) (m::real) x::real.
+ tends_real_real f l x & tends_real_real g m x -->
+ tends_real_real (%x::real. f x * g x) (l * m) x"
by (import lim LIM_MUL)
lemma LIM_NEG: "ALL (f::real => real) (l::real) x::real.
tends_real_real f l x = tends_real_real (%x::real. - f x) (- l) x"
by (import lim LIM_NEG)
-lemma LIM_INV: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((tends_real_real::(real => real) => real => real => bool)
- f l x)
- ((Not::bool => bool)
- ((op =::real => real => bool) l (0::real))))
- ((tends_real_real::(real => real) => real => real => bool)
- (%x::real. (inverse::real => real) (f x))
- ((inverse::real => real) l) x))))"
+lemma LIM_INV: "ALL (f::real => real) (l::real) x::real.
+ tends_real_real f l x & l ~= 0 -->
+ tends_real_real (%x::real. inverse (f x)) (inverse l) x"
by (import lim LIM_INV)
-lemma LIM_SUB: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%m::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((tends_real_real::(real => real)
- => real => real => bool)
- f l x)
- ((tends_real_real::(real => real)
- => real => real => bool)
- g m x))
- ((tends_real_real::(real => real)
- => real => real => bool)
- (%x::real.
- (op -::real => real => real) (f x) (g x))
- ((op -::real => real => real) l m) x))))))"
+lemma LIM_SUB: "ALL (f::real => real) (g::real => real) (l::real) (m::real) x::real.
+ tends_real_real f l x & tends_real_real g m x -->
+ tends_real_real (%x::real. f x - g x) (l - m) x"
by (import lim LIM_SUB)
-lemma LIM_DIV: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%m::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((tends_real_real::(real => real)
- => real => real => bool)
- f l x)
- ((op &::bool => bool => bool)
- ((tends_real_real::(real => real)
- => real => real => bool)
- g m x)
- ((Not::bool => bool)
- ((op =::real => real => bool) m
- (0::real)))))
- ((tends_real_real::(real => real)
- => real => real => bool)
- (%x::real.
- (op /::real => real => real) (f x) (g x))
- ((op /::real => real => real) l m) x))))))"
+lemma LIM_DIV: "ALL (f::real => real) (g::real => real) (l::real) (m::real) x::real.
+ tends_real_real f l x & tends_real_real g m x & m ~= 0 -->
+ tends_real_real (%x::real. f x / g x) (l / m) x"
by (import lim LIM_DIV)
lemma LIM_NULL: "ALL (f::real => real) (l::real) x::real.
@@ -2546,70 +1751,18 @@
lemma LIM_X: "ALL x0::real. tends_real_real (%x::real. x) x0 x0"
by (import lim LIM_X)
-lemma LIM_UNIQ: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%m::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((tends_real_real::(real => real)
- => real => real => bool)
- f l x)
- ((tends_real_real::(real => real)
- => real => real => bool)
- f m x))
- ((op =::real => real => bool) l m)))))"
+lemma LIM_UNIQ: "ALL (f::real => real) (l::real) (m::real) x::real.
+ tends_real_real f l x & tends_real_real f m x --> l = m"
by (import lim LIM_UNIQ)
-lemma LIM_EQUAL: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%x0::real.
- (op -->::bool => bool => bool)
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::real => real => bool) x x0))
- ((op =::real => real => bool) (f x) (g x))))
- ((op =::bool => bool => bool)
- ((tends_real_real::(real => real)
- => real => real => bool)
- f l x0)
- ((tends_real_real::(real => real)
- => real => real => bool)
- g l x0))))))"
+lemma LIM_EQUAL: "ALL (f::real => real) (g::real => real) (l::real) x0::real.
+ (ALL x::real. x ~= x0 --> f x = g x) -->
+ tends_real_real f l x0 = tends_real_real g l x0"
by (import lim LIM_EQUAL)
-lemma LIM_TRANSFORM: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%x0::real.
- (All::(real => bool) => bool)
- (%l::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((tends_real_real::(real => real)
- => real => real => bool)
- (%x::real.
- (op -::real => real => real) (f x) (g x))
- (0::real) x0)
- ((tends_real_real::(real => real)
- => real => real => bool)
- g l x0))
- ((tends_real_real::(real => real)
- => real => real => bool)
- f l x0)))))"
+lemma LIM_TRANSFORM: "ALL (f::real => real) (g::real => real) (x0::real) l::real.
+ tends_real_real (%x::real. f x - g x) 0 x0 & tends_real_real g l x0 -->
+ tends_real_real f l x0"
by (import lim LIM_TRANSFORM)
constdefs
@@ -2639,32 +1792,11 @@
differentiable f x = (EX l::real. diffl f l x)"
by (import lim differentiable)
-lemma DIFF_UNIQ: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%m::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) f l
- x)
- ((diffl::(real => real) => real => real => bool) f m
- x))
- ((op =::real => real => bool) l m)))))"
+lemma DIFF_UNIQ: "ALL (f::real => real) (l::real) (m::real) x::real.
+ diffl f l x & diffl f m x --> l = m"
by (import lim DIFF_UNIQ)
-lemma DIFF_CONT: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) f l x)
- ((contl::(real => real) => real => bool) f x))))"
+lemma DIFF_CONT: "ALL (f::real => real) (l::real) x::real. diffl f l x --> contl f x"
by (import lim DIFF_CONT)
lemma CONTL_LIM: "ALL (f::real => real) x::real. contl f x = tends_real_real f (f x) x"
@@ -2679,285 +1811,71 @@
lemma CONT_CONST: "ALL k::real. All (contl (%x::real. k))"
by (import lim CONT_CONST)
-lemma CONT_ADD: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((contl::(real => real) => real => bool) f x)
- ((contl::(real => real) => real => bool) g x))
- ((contl::(real => real) => real => bool)
- (%x::real. (op +::real => real => real) (f x) (g x)) x))))"
+lemma CONT_ADD: "ALL (f::real => real) (g::real => real) x::real.
+ contl f x & contl g x --> contl (%x::real. f x + g x) x"
by (import lim CONT_ADD)
-lemma CONT_MUL: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((contl::(real => real) => real => bool) f x)
- ((contl::(real => real) => real => bool) g x))
- ((contl::(real => real) => real => bool)
- (%x::real. (op *::real => real => real) (f x) (g x)) x))))"
+lemma CONT_MUL: "ALL (f::real => real) (g::real => real) x::real.
+ contl f x & contl g x --> contl (%x::real. f x * g x) x"
by (import lim CONT_MUL)
-lemma CONT_NEG: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((contl::(real => real) => real => bool) f x)
- ((contl::(real => real) => real => bool)
- (%x::real. (uminus::real => real) (f x)) x)))"
+lemma CONT_NEG: "ALL (f::real => real) x::real. contl f x --> contl (%x::real. - f x) x"
by (import lim CONT_NEG)
-lemma CONT_INV: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((contl::(real => real) => real => bool) f x)
- ((Not::bool => bool)
- ((op =::real => real => bool) (f x) (0::real))))
- ((contl::(real => real) => real => bool)
- (%x::real. (inverse::real => real) (f x)) x)))"
+lemma CONT_INV: "ALL (f::real => real) x::real.
+ contl f x & f x ~= 0 --> contl (%x::real. inverse (f x)) x"
by (import lim CONT_INV)
-lemma CONT_SUB: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((contl::(real => real) => real => bool) f x)
- ((contl::(real => real) => real => bool) g x))
- ((contl::(real => real) => real => bool)
- (%x::real. (op -::real => real => real) (f x) (g x)) x))))"
+lemma CONT_SUB: "ALL (f::real => real) (g::real => real) x::real.
+ contl f x & contl g x --> contl (%x::real. f x - g x) x"
by (import lim CONT_SUB)
-lemma CONT_DIV: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((contl::(real => real) => real => bool) f x)
- ((op &::bool => bool => bool)
- ((contl::(real => real) => real => bool) g x)
- ((Not::bool => bool)
- ((op =::real => real => bool) (g x) (0::real)))))
- ((contl::(real => real) => real => bool)
- (%x::real. (op /::real => real => real) (f x) (g x)) x))))"
+lemma CONT_DIV: "ALL (f::real => real) (g::real => real) x::real.
+ contl f x & contl g x & g x ~= 0 --> contl (%x::real. f x / g x) x"
by (import lim CONT_DIV)
-lemma CONT_COMPOSE: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((contl::(real => real) => real => bool) f x)
- ((contl::(real => real) => real => bool) g (f x)))
- ((contl::(real => real) => real => bool) (%x::real. g (f x))
- x))))"
+lemma CONT_COMPOSE: "ALL (f::real => real) (g::real => real) x::real.
+ contl f x & contl g (f x) --> contl (%x::real. g (f x)) x"
by (import lim CONT_COMPOSE)
-lemma IVT: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a b)
- ((op &::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (f a) y)
- ((op <=::real => real => bool) y (f b)))
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a x)
- ((op <=::real => real => bool) x b))
- ((contl::(real => real) => real => bool) f
- x)))))
- ((Ex::(real => bool) => bool)
- (%x::real.
- (op &::bool => bool => bool)
- ((op <=::real => real => bool) a x)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) x b)
- ((op =::real => real => bool) (f x) y))))))))"
+lemma IVT: "ALL (f::real => real) (a::real) (b::real) y::real.
+ a <= b &
+ (f a <= y & y <= f b) & (ALL x::real. a <= x & x <= b --> contl f x) -->
+ (EX x::real. a <= x & x <= b & f x = y)"
by (import lim IVT)
-lemma IVT2: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a b)
- ((op &::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (f b) y)
- ((op <=::real => real => bool) y (f a)))
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a x)
- ((op <=::real => real => bool) x b))
- ((contl::(real => real) => real => bool) f
- x)))))
- ((Ex::(real => bool) => bool)
- (%x::real.
- (op &::bool => bool => bool)
- ((op <=::real => real => bool) a x)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) x b)
- ((op =::real => real => bool) (f x) y))))))))"
+lemma IVT2: "ALL (f::real => real) (a::real) (b::real) y::real.
+ a <= b &
+ (f b <= y & y <= f a) & (ALL x::real. a <= x & x <= b --> contl f x) -->
+ (EX x::real. a <= x & x <= b & f x = y)"
by (import lim IVT2)
lemma DIFF_CONST: "ALL k::real. All (diffl (%x::real. k) 0)"
by (import lim DIFF_CONST)
-lemma DIFF_ADD: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%m::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool)
- f l x)
- ((diffl::(real => real) => real => real => bool)
- g m x))
- ((diffl::(real => real) => real => real => bool)
- (%x::real.
- (op +::real => real => real) (f x) (g x))
- ((op +::real => real => real) l m) x))))))"
+lemma DIFF_ADD: "ALL (f::real => real) (g::real => real) (l::real) (m::real) x::real.
+ diffl f l x & diffl g m x --> diffl (%x::real. f x + g x) (l + m) x"
by (import lim DIFF_ADD)
-lemma DIFF_MUL: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%m::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool)
- f l x)
- ((diffl::(real => real) => real => real => bool)
- g m x))
- ((diffl::(real => real) => real => real => bool)
- (%x::real.
- (op *::real => real => real) (f x) (g x))
- ((op +::real => real => real)
- ((op *::real => real => real) l (g x))
- ((op *::real => real => real) m (f x)))
- x))))))"
+lemma DIFF_MUL: "ALL (f::real => real) (g::real => real) (l::real) (m::real) x::real.
+ diffl f l x & diffl g m x -->
+ diffl (%x::real. f x * g x) (l * g x + m * f x) x"
by (import lim DIFF_MUL)
-lemma DIFF_CMUL: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%c::real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) f l x)
- ((diffl::(real => real) => real => real => bool)
- (%x::real. (op *::real => real => real) c (f x))
- ((op *::real => real => real) c l) x)))))"
+lemma DIFF_CMUL: "ALL (f::real => real) (c::real) (l::real) x::real.
+ diffl f l x --> diffl (%x::real. c * f x) (c * l) x"
by (import lim DIFF_CMUL)
-lemma DIFF_NEG: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) f l x)
- ((diffl::(real => real) => real => real => bool)
- (%x::real. (uminus::real => real) (f x))
- ((uminus::real => real) l) x))))"
+lemma DIFF_NEG: "ALL (f::real => real) (l::real) x::real.
+ diffl f l x --> diffl (%x::real. - f x) (- l) x"
by (import lim DIFF_NEG)
-lemma DIFF_SUB: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%m::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool)
- f l x)
- ((diffl::(real => real) => real => real => bool)
- g m x))
- ((diffl::(real => real) => real => real => bool)
- (%x::real.
- (op -::real => real => real) (f x) (g x))
- ((op -::real => real => real) l m) x))))))"
+lemma DIFF_SUB: "ALL (f::real => real) (g::real => real) (l::real) (m::real) x::real.
+ diffl f l x & diffl g m x --> diffl (%x::real. f x - g x) (l - m) x"
by (import lim DIFF_SUB)
-lemma DIFF_CHAIN: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%m::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool)
- f l (g x))
- ((diffl::(real => real) => real => real => bool)
- g m x))
- ((diffl::(real => real) => real => real => bool)
- (%x::real. f (g x))
- ((op *::real => real => real) l m) x))))))"
+lemma DIFF_CHAIN: "ALL (f::real => real) (g::real => real) (l::real) (m::real) x::real.
+ diffl f l (g x) & diffl g m x --> diffl (%x::real. f (g x)) (l * m) x"
by (import lim DIFF_CHAIN)
lemma DIFF_X: "All (diffl (%x::real. x) 1)"
@@ -2966,141 +1884,29 @@
lemma DIFF_POW: "ALL (n::nat) x::real. diffl (%x::real. x ^ n) (real n * x ^ (n - 1)) x"
by (import lim DIFF_POW)
-lemma DIFF_XM1: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((Not::bool => bool) ((op =::real => real => bool) x (0::real)))
- ((diffl::(real => real) => real => real => bool)
- (inverse::real => real)
- ((uminus::real => real)
- ((op ^::real => nat => real) ((inverse::real => real) x)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))
- x))"
+lemma DIFF_XM1: "ALL x::real. x ~= 0 --> diffl inverse (- (inverse x ^ 2)) x"
by (import lim DIFF_XM1)
-lemma DIFF_INV: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) f l x)
- ((Not::bool => bool)
- ((op =::real => real => bool) (f x) (0::real))))
- ((diffl::(real => real) => real => real => bool)
- (%x::real. (inverse::real => real) (f x))
- ((uminus::real => real)
- ((op /::real => real => real) l
- ((op ^::real => nat => real) (f x)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))))
- x))))"
+lemma DIFF_INV: "ALL (f::real => real) (l::real) x::real.
+ diffl f l x & f x ~= 0 -->
+ diffl (%x::real. inverse (f x)) (- (l / f x ^ 2)) x"
by (import lim DIFF_INV)
-lemma DIFF_DIV: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%m::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool)
- f l x)
- ((op &::bool => bool => bool)
- ((diffl::(real => real)
- => real => real => bool)
- g m x)
- ((Not::bool => bool)
- ((op =::real => real => bool) (g x)
- (0::real)))))
- ((diffl::(real => real) => real => real => bool)
- (%x::real.
- (op /::real => real => real) (f x) (g x))
- ((op /::real => real => real)
- ((op -::real => real => real)
- ((op *::real => real => real) l (g x))
- ((op *::real => real => real) m (f x)))
- ((op ^::real => nat => real) (g x)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin)
-(Numeral.Pls::bin) (bit.B1::bit))
- (bit.B0::bit)))))
- x))))))"
+lemma DIFF_DIV: "ALL (f::real => real) (g::real => real) (l::real) (m::real) x::real.
+ diffl f l x & diffl g m x & g x ~= 0 -->
+ diffl (%x::real. f x / g x) ((l * g x - m * f x) / g x ^ 2) x"
by (import lim DIFF_DIV)
-lemma DIFF_SUM: "(All::((nat => real => real) => bool) => bool)
- (%f::nat => real => real.
- (All::((nat => real => real) => bool) => bool)
- (%f'::nat => real => real.
- (All::(nat => bool) => bool)
- (%m::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((All::(nat => bool) => bool)
- (%r::nat.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::nat => nat => bool) m r)
- ((op <::nat => nat => bool) r
- ((op +::nat => nat => nat) m n)))
- ((diffl::(real => real)
- => real => real => bool)
- (f r) (f' r x) x)))
- ((diffl::(real => real) => real => real => bool)
- (%x::real.
- (real.sum::nat * nat
- => (nat => real) => real)
- ((Pair::nat => nat => nat * nat) m n)
- (%n::nat. f n x))
- ((real.sum::nat * nat => (nat => real) => real)
- ((Pair::nat => nat => nat * nat) m n)
- (%r::nat. f' r x))
- x))))))"
+lemma DIFF_SUM: "ALL (f::nat => real => real) (f'::nat => real => real) (m::nat) (n::nat)
+ x::real.
+ (ALL r::nat. m <= r & r < m + n --> diffl (f r) (f' r x) x) -->
+ diffl (%x::real. real.sum (m, n) (%n::nat. f n x))
+ (real.sum (m, n) (%r::nat. f' r x)) x"
by (import lim DIFF_SUM)
-lemma CONT_BOUNDED: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a b)
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a x)
- ((op <=::real => real => bool) x b))
- ((contl::(real => real) => real => bool) f x))))
- ((Ex::(real => bool) => bool)
- (%M::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a x)
- ((op <=::real => real => bool) x b))
- ((op <=::real => real => bool) (f x) M)))))))"
+lemma CONT_BOUNDED: "ALL (f::real => real) (a::real) b::real.
+ a <= b & (ALL x::real. a <= x & x <= b --> contl f x) -->
+ (EX M::real. ALL x::real. a <= x & x <= b --> f x <= M)"
by (import lim CONT_BOUNDED)
lemma CONT_HASSUP: "(All::((real => real) => bool) => bool)
@@ -3142,733 +1948,156 @@
((op <::real => real => bool) N (f x))))))))))))"
by (import lim CONT_HASSUP)
-lemma CONT_ATTAINS: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a b)
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a x)
- ((op <=::real => real => bool) x b))
- ((contl::(real => real) => real => bool) f x))))
- ((Ex::(real => bool) => bool)
- (%x::real.
- (op &::bool => bool => bool)
- ((All::(real => bool) => bool)
- (%xa::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a xa)
- ((op <=::real => real => bool) xa b))
- ((op <=::real => real => bool) (f xa) x)))
- ((Ex::(real => bool) => bool)
- (%xa::real.
- (op &::bool => bool => bool)
- ((op <=::real => real => bool) a xa)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) xa b)
- ((op =::real => real => bool) (f xa)
- x)))))))))"
+lemma CONT_ATTAINS: "ALL (f::real => real) (a::real) b::real.
+ a <= b & (ALL x::real. a <= x & x <= b --> contl f x) -->
+ (EX x::real.
+ (ALL xa::real. a <= xa & xa <= b --> f xa <= x) &
+ (EX xa::real. a <= xa & xa <= b & f xa = x))"
by (import lim CONT_ATTAINS)
-lemma CONT_ATTAINS2: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a b)
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a x)
- ((op <=::real => real => bool) x b))
- ((contl::(real => real) => real => bool) f x))))
- ((Ex::(real => bool) => bool)
- (%x::real.
- (op &::bool => bool => bool)
- ((All::(real => bool) => bool)
- (%xa::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a xa)
- ((op <=::real => real => bool) xa b))
- ((op <=::real => real => bool) x (f xa))))
- ((Ex::(real => bool) => bool)
- (%xa::real.
- (op &::bool => bool => bool)
- ((op <=::real => real => bool) a xa)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) xa b)
- ((op =::real => real => bool) (f xa)
- x)))))))))"
+lemma CONT_ATTAINS2: "ALL (f::real => real) (a::real) b::real.
+ a <= b & (ALL x::real. a <= x & x <= b --> contl f x) -->
+ (EX x::real.
+ (ALL xa::real. a <= xa & xa <= b --> x <= f xa) &
+ (EX xa::real. a <= xa & xa <= b & f xa = x))"
by (import lim CONT_ATTAINS2)
-lemma CONT_ATTAINS_ALL: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a b)
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a x)
- ((op <=::real => real => bool) x b))
- ((contl::(real => real) => real => bool) f x))))
- ((Ex::(real => bool) => bool)
- (%x::real.
- (Ex::(real => bool) => bool)
- (%M::real.
- (op &::bool => bool => bool)
- ((op <=::real => real => bool) x M)
- ((op &::bool => bool => bool)
- ((All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) x y) ((op <=::real => real => bool) y M))
- ((Ex::(real => bool) => bool)
- (%x::real.
- (op &::bool => bool => bool) ((op <=::real => real => bool) a x)
- ((op &::bool => bool => bool) ((op <=::real => real => bool) x b)
- ((op =::real => real => bool) (f x) y))))))
- ((All::(real => bool) => bool)
- (%xa::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a xa) ((op <=::real => real => bool) xa b))
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) x (f xa))
- ((op <=::real => real => bool) (f xa) M)))))))))))"
+lemma CONT_ATTAINS_ALL: "ALL (f::real => real) (a::real) b::real.
+ a <= b & (ALL x::real. a <= x & x <= b --> contl f x) -->
+ (EX (x::real) M::real.
+ x <= M &
+ (ALL y::real.
+ x <= y & y <= M --> (EX x::real. a <= x & x <= b & f x = y)) &
+ (ALL xa::real. a <= xa & xa <= b --> x <= f xa & f xa <= M))"
by (import lim CONT_ATTAINS_ALL)
-lemma DIFF_LINC: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%l::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) f l x)
- ((op <::real => real => bool) (0::real) l))
- ((Ex::(real => bool) => bool)
- (%d::real.
- (op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) d)
- ((All::(real => bool) => bool)
- (%h::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) h)
- ((op <::real => real => bool) h d))
- ((op <::real => real => bool) (f x)
- (f ((op +::real => real => real) x
- h))))))))))"
+lemma DIFF_LINC: "ALL (f::real => real) (x::real) l::real.
+ diffl f l x & 0 < l -->
+ (EX d>0. ALL h::real. 0 < h & h < d --> f x < f (x + h))"
by (import lim DIFF_LINC)
-lemma DIFF_LDEC: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%l::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) f l x)
- ((op <::real => real => bool) l (0::real)))
- ((Ex::(real => bool) => bool)
- (%d::real.
- (op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) d)
- ((All::(real => bool) => bool)
- (%h::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) h)
- ((op <::real => real => bool) h d))
- ((op <::real => real => bool) (f x)
- (f ((op -::real => real => real) x
- h))))))))))"
+lemma DIFF_LDEC: "ALL (f::real => real) (x::real) l::real.
+ diffl f l x & l < 0 -->
+ (EX d>0. ALL h::real. 0 < h & h < d --> f x < f (x - h))"
by (import lim DIFF_LDEC)
-lemma DIFF_LMAX: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%l::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) f l x)
- ((Ex::(real => bool) => bool)
- (%d::real.
- (op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) d)
- ((All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real) x y))
- d)
- ((op <=::real => real => bool) (f y)
- (f x)))))))
- ((op =::real => real => bool) l (0::real)))))"
+lemma DIFF_LMAX: "ALL (f::real => real) (x::real) l::real.
+ diffl f l x & (EX d>0. ALL y::real. abs (x - y) < d --> f y <= f x) -->
+ l = 0"
by (import lim DIFF_LMAX)
-lemma DIFF_LMIN: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%l::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) f l x)
- ((Ex::(real => bool) => bool)
- (%d::real.
- (op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) d)
- ((All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real) x y))
- d)
- ((op <=::real => real => bool) (f x)
- (f y)))))))
- ((op =::real => real => bool) l (0::real)))))"
+lemma DIFF_LMIN: "ALL (f::real => real) (x::real) l::real.
+ diffl f l x & (EX d>0. ALL y::real. abs (x - y) < d --> f x <= f y) -->
+ l = 0"
by (import lim DIFF_LMIN)
-lemma DIFF_LCONST: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%l::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) f l x)
- ((Ex::(real => bool) => bool)
- (%d::real.
- (op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) d)
- ((All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real) x y))
- d)
- ((op =::real => real => bool) (f y)
- (f x)))))))
- ((op =::real => real => bool) l (0::real)))))"
+lemma DIFF_LCONST: "ALL (f::real => real) (x::real) l::real.
+ diffl f l x & (EX d>0. ALL y::real. abs (x - y) < d --> f y = f x) -->
+ l = 0"
by (import lim DIFF_LCONST)
-lemma INTERVAL_LEMMA: "(All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) a x)
- ((op <::real => real => bool) x b))
- ((Ex::(real => bool) => bool)
- (%d::real.
- (op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) d)
- ((All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real) x y))
- d)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a y)
- ((op <=::real => real => bool) y b)))))))))"
+lemma INTERVAL_LEMMA: "ALL (a::real) (b::real) x::real.
+ a < x & x < b -->
+ (EX d>0. ALL y::real. abs (x - y) < d --> a <= y & y <= b)"
by (import lim INTERVAL_LEMMA)
-lemma ROLLE: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) a b)
- ((op &::bool => bool => bool)
- ((op =::real => real => bool) (f a) (f b))
- ((op &::bool => bool => bool)
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a x)
- ((op <=::real => real => bool) x b))
- ((contl::(real => real) => real => bool) f x)))
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) a x)
- ((op <::real => real => bool) x b))
- ((differentiable::(real => real)
- => real => bool)
- f x))))))
- ((Ex::(real => bool) => bool)
- (%z::real.
- (op &::bool => bool => bool)
- ((op <::real => real => bool) a z)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) z b)
- ((diffl::(real => real) => real => real => bool) f
- (0::real) z)))))))"
+lemma ROLLE: "ALL (f::real => real) (a::real) b::real.
+ a < b &
+ f a = f b &
+ (ALL x::real. a <= x & x <= b --> contl f x) &
+ (ALL x::real. a < x & x < b --> differentiable f x) -->
+ (EX z::real. a < z & z < b & diffl f 0 z)"
by (import lim ROLLE)
lemma MVT_LEMMA: "ALL (f::real => real) (a::real) b::real.
f a - (f b - f a) / (b - a) * a = f b - (f b - f a) / (b - a) * b"
by (import lim MVT_LEMMA)
-lemma MVT: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) a b)
- ((op &::bool => bool => bool)
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a x)
- ((op <=::real => real => bool) x b))
- ((contl::(real => real) => real => bool) f x)))
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) a x)
- ((op <::real => real => bool) x b))
- ((differentiable::(real => real) => real => bool)
- f x)))))
- ((Ex::(real => bool) => bool)
- (%l::real.
- (Ex::(real => bool) => bool)
- (%z::real.
- (op &::bool => bool => bool)
- ((op <::real => real => bool) a z)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) z b)
- ((op &::bool => bool => bool)
- ((diffl::(real => real)
- => real => real => bool)
- f l z)
- ((op =::real => real => bool)
- ((op -::real => real => real) (f b) (f a))
- ((op *::real => real => real)
- ((op -::real => real => real) b a)
- l))))))))))"
+lemma MVT: "ALL (f::real => real) (a::real) b::real.
+ a < b &
+ (ALL x::real. a <= x & x <= b --> contl f x) &
+ (ALL x::real. a < x & x < b --> differentiable f x) -->
+ (EX (l::real) z::real.
+ a < z & z < b & diffl f l z & f b - f a = (b - a) * l)"
by (import lim MVT)
-lemma DIFF_ISCONST_END: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) a b)
- ((op &::bool => bool => bool)
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a x)
- ((op <=::real => real => bool) x b))
- ((contl::(real => real) => real => bool) f x)))
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) a x)
- ((op <::real => real => bool) x b))
- ((diffl::(real => real) => real => real => bool)
- f (0::real) x)))))
- ((op =::real => real => bool) (f b) (f a)))))"
+lemma DIFF_ISCONST_END: "ALL (f::real => real) (a::real) b::real.
+ a < b &
+ (ALL x::real. a <= x & x <= b --> contl f x) &
+ (ALL x::real. a < x & x < b --> diffl f 0 x) -->
+ f b = f a"
by (import lim DIFF_ISCONST_END)
-lemma DIFF_ISCONST: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) a b)
- ((op &::bool => bool => bool)
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a x)
- ((op <=::real => real => bool) x b))
- ((contl::(real => real) => real => bool) f x)))
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) a x)
- ((op <::real => real => bool) x b))
- ((diffl::(real => real) => real => real => bool)
- f (0::real) x)))))
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a x)
- ((op <=::real => real => bool) x b))
- ((op =::real => real => bool) (f x) (f a)))))))"
+lemma DIFF_ISCONST: "ALL (f::real => real) (a::real) b::real.
+ a < b &
+ (ALL x::real. a <= x & x <= b --> contl f x) &
+ (ALL x::real. a < x & x < b --> diffl f 0 x) -->
+ (ALL x::real. a <= x & x <= b --> f x = f a)"
by (import lim DIFF_ISCONST)
-lemma DIFF_ISCONST_ALL: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (op -->::bool => bool => bool)
- ((All::(real => bool) => bool)
- ((diffl::(real => real) => real => real => bool) f (0::real)))
- ((All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%y::real. (op =::real => real => bool) (f x) (f y)))))"
+lemma DIFF_ISCONST_ALL: "ALL f::real => real. All (diffl f 0) --> (ALL (x::real) y::real. f x = f y)"
by (import lim DIFF_ISCONST_ALL)
lemma INTERVAL_ABS: "ALL (x::real) (z::real) d::real.
(x - d <= z & z <= x + d) = (abs (z - x) <= d)"
by (import lim INTERVAL_ABS)
-lemma CONT_INJ_LEMMA: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%d::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) d)
- ((op &::bool => bool => bool)
- ((All::(real => bool) => bool)
- (%z::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real) z x))
- d)
- ((op =::real => real => bool) (g (f z)) z)))
- ((All::(real => bool) => bool)
- (%z::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real) z x))
- d)
- ((contl::(real => real) => real => bool) f
- z)))))
- ((Not::bool => bool)
- ((All::(real => bool) => bool)
- (%z::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real) z x))
- d)
- ((op <=::real => real => bool) (f z)
- (f x)))))))))"
+lemma CONT_INJ_LEMMA: "ALL (f::real => real) (g::real => real) (x::real) d::real.
+ 0 < d &
+ (ALL z::real. abs (z - x) <= d --> g (f z) = z) &
+ (ALL z::real. abs (z - x) <= d --> contl f z) -->
+ ~ (ALL z::real. abs (z - x) <= d --> f z <= f x)"
by (import lim CONT_INJ_LEMMA)
-lemma CONT_INJ_LEMMA2: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%d::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) d)
- ((op &::bool => bool => bool)
- ((All::(real => bool) => bool)
- (%z::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real) z x))
- d)
- ((op =::real => real => bool) (g (f z)) z)))
- ((All::(real => bool) => bool)
- (%z::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real) z x))
- d)
- ((contl::(real => real) => real => bool) f
- z)))))
- ((Not::bool => bool)
- ((All::(real => bool) => bool)
- (%z::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real) z x))
- d)
- ((op <=::real => real => bool) (f x)
- (f z)))))))))"
+lemma CONT_INJ_LEMMA2: "ALL (f::real => real) (g::real => real) (x::real) d::real.
+ 0 < d &
+ (ALL z::real. abs (z - x) <= d --> g (f z) = z) &
+ (ALL z::real. abs (z - x) <= d --> contl f z) -->
+ ~ (ALL z::real. abs (z - x) <= d --> f x <= f z)"
by (import lim CONT_INJ_LEMMA2)
-lemma CONT_INJ_RANGE: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%d::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) d)
- ((op &::bool => bool => bool)
- ((All::(real => bool) => bool)
- (%z::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real) z x))
- d)
- ((op =::real => real => bool) (g (f z)) z)))
- ((All::(real => bool) => bool)
- (%z::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real) z x))
- d)
- ((contl::(real => real) => real => bool) f
- z)))))
- ((Ex::(real => bool) => bool)
- (%e::real.
- (op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) e)
- ((All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real) y (f x)))
- e)
- ((Ex::(real => bool) => bool)
- (%z::real.
- (op &::bool => bool => bool)
- ((op <=::real => real => bool)
- ((abs::real => real) ((op -::real => real => real) z x)) d)
- ((op =::real => real => bool) (f z) y)))))))))))"
+lemma CONT_INJ_RANGE: "ALL (f::real => real) (g::real => real) (x::real) d::real.
+ 0 < d &
+ (ALL z::real. abs (z - x) <= d --> g (f z) = z) &
+ (ALL z::real. abs (z - x) <= d --> contl f z) -->
+ (EX e>0.
+ ALL y::real.
+ abs (y - f x) <= e --> (EX z::real. abs (z - x) <= d & f z = y))"
by (import lim CONT_INJ_RANGE)
-lemma CONT_INVERSE: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%d::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) d)
- ((op &::bool => bool => bool)
- ((All::(real => bool) => bool)
- (%z::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real) z x))
- d)
- ((op =::real => real => bool) (g (f z)) z)))
- ((All::(real => bool) => bool)
- (%z::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real) z x))
- d)
- ((contl::(real => real) => real => bool) f
- z)))))
- ((contl::(real => real) => real => bool) g (f x))))))"
+lemma CONT_INVERSE: "ALL (f::real => real) (g::real => real) (x::real) d::real.
+ 0 < d &
+ (ALL z::real. abs (z - x) <= d --> g (f z) = z) &
+ (ALL z::real. abs (z - x) <= d --> contl f z) -->
+ contl g (f x)"
by (import lim CONT_INVERSE)
-lemma DIFF_INVERSE: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%d::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) d)
- ((op &::bool => bool => bool)
- ((All::(real => bool) => bool)
- (%z::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool)
- ((abs::real => real) ((op -::real => real => real) z x)) d)
- ((op =::real => real => bool) (g (f z))
- z)))
- ((op &::bool => bool => bool)
- ((All::(real => bool) => bool)
- (%z::real.
-(op -->::bool => bool => bool)
- ((op <=::real => real => bool)
- ((abs::real => real) ((op -::real => real => real) z x)) d)
- ((contl::(real => real) => real => bool) f z)))
- ((op &::bool => bool => bool)
- ((diffl::(real => real)
- => real => real => bool)
- f l x)
- ((Not::bool => bool)
- ((op =::real => real => bool) l
-(0::real)))))))
- ((diffl::(real => real) => real => real => bool) g
- ((inverse::real => real) l) (f x)))))))"
+lemma DIFF_INVERSE: "ALL (f::real => real) (g::real => real) (l::real) (x::real) d::real.
+ 0 < d &
+ (ALL z::real. abs (z - x) <= d --> g (f z) = z) &
+ (ALL z::real. abs (z - x) <= d --> contl f z) & diffl f l x & l ~= 0 -->
+ diffl g (inverse l) (f x)"
by (import lim DIFF_INVERSE)
-lemma DIFF_INVERSE_LT: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%d::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) d)
- ((op &::bool => bool => bool)
- ((All::(real => bool) => bool)
- (%z::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool)
- ((abs::real => real) ((op -::real => real => real) z x)) d)
- ((op =::real => real => bool) (g (f z))
- z)))
- ((op &::bool => bool => bool)
- ((All::(real => bool) => bool)
- (%z::real.
-(op -->::bool => bool => bool)
- ((op <::real => real => bool)
- ((abs::real => real) ((op -::real => real => real) z x)) d)
- ((contl::(real => real) => real => bool) f z)))
- ((op &::bool => bool => bool)
- ((diffl::(real => real)
- => real => real => bool)
- f l x)
- ((Not::bool => bool)
- ((op =::real => real => bool) l
-(0::real)))))))
- ((diffl::(real => real) => real => real => bool) g
- ((inverse::real => real) l) (f x)))))))"
+lemma DIFF_INVERSE_LT: "ALL (f::real => real) (g::real => real) (l::real) (x::real) d::real.
+ 0 < d &
+ (ALL z::real. abs (z - x) < d --> g (f z) = z) &
+ (ALL z::real. abs (z - x) < d --> contl f z) & diffl f l x & l ~= 0 -->
+ diffl g (inverse l) (f x)"
by (import lim DIFF_INVERSE_LT)
-lemma INTERVAL_CLEMMA: "(All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) a x)
- ((op <::real => real => bool) x b))
- ((Ex::(real => bool) => bool)
- (%d::real.
- (op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) d)
- ((All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real) y x))
- d)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) a y)
- ((op <::real => real => bool) y b)))))))))"
+lemma INTERVAL_CLEMMA: "ALL (a::real) (b::real) x::real.
+ a < x & x < b -->
+ (EX d>0. ALL y::real. abs (y - x) <= d --> a < y & y < b)"
by (import lim INTERVAL_CLEMMA)
-lemma DIFF_INVERSE_OPEN: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%l::real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) a x)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) x b)
- ((op &::bool => bool => bool)
- ((All::(real => bool) => bool)
- (%z::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool) ((op <::real => real => bool) a z)
- ((op <::real => real => bool) z b))
- ((op &::bool => bool => bool)
- ((op =::real => real => bool) (g (f z)) z)
- ((contl::(real => real) => real => bool) f z))))
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) f l x)
- ((Not::bool => bool) ((op =::real => real => bool) l (0::real)))))))
- ((diffl::(real => real)
- => real => real => bool)
- g ((inverse::real => real) l) (f x))))))))"
+lemma DIFF_INVERSE_OPEN: "ALL (f::real => real) (g::real => real) (l::real) (a::real) (x::real)
+ b::real.
+ a < x &
+ x < b &
+ (ALL z::real. a < z & z < b --> g (f z) = z & contl f z) &
+ diffl f l x & l ~= 0 -->
+ diffl g (inverse l) (f x)"
by (import lim DIFF_INVERSE_OPEN)
;end_setup
@@ -3890,45 +2119,14 @@
real.sum (0, Suc n) (%xa::nat. x ^ (n - xa) * y ^ xa)"
by (import powser POWREV)
-lemma POWSER_INSIDEA: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%z::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((summable::(nat => real) => bool)
- (%n::nat.
- (op *::real => real => real) (f n)
- ((op ^::real => nat => real) x n)))
- ((op <::real => real => bool) ((abs::real => real) z)
- ((abs::real => real) x)))
- ((summable::(nat => real) => bool)
- (%n::nat.
- (op *::real => real => real)
- ((abs::real => real) (f n))
- ((op ^::real => nat => real) z n))))))"
+lemma POWSER_INSIDEA: "ALL (f::nat => real) (x::real) z::real.
+ summable (%n::nat. f n * x ^ n) & abs z < abs x -->
+ summable (%n::nat. abs (f n) * z ^ n)"
by (import powser POWSER_INSIDEA)
-lemma POWSER_INSIDE: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%z::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((summable::(nat => real) => bool)
- (%n::nat.
- (op *::real => real => real) (f n)
- ((op ^::real => nat => real) x n)))
- ((op <::real => real => bool) ((abs::real => real) z)
- ((abs::real => real) x)))
- ((summable::(nat => real) => bool)
- (%n::nat.
- (op *::real => real => real) (f n)
- ((op ^::real => nat => real) z n))))))"
+lemma POWSER_INSIDE: "ALL (f::nat => real) (x::real) z::real.
+ summable (%n::nat. f n * x ^ n) & abs z < abs x -->
+ summable (%n::nat. f n * z ^ n)"
by (import powser POWSER_INSIDE)
constdefs
@@ -3953,27 +2151,10 @@
real n * (c n * x ^ (n - 1))"
by (import powser DIFFS_LEMMA2)
-lemma DIFFS_EQUIV: "(All::((nat => real) => bool) => bool)
- (%c::nat => real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((summable::(nat => real) => bool)
- (%n::nat.
- (op *::real => real => real)
- ((diffs::(nat => real) => nat => real) c n)
- ((op ^::real => nat => real) x n)))
- ((sums::(nat => real) => real => bool)
- (%n::nat.
- (op *::real => real => real) ((real::nat => real) n)
- ((op *::real => real => real) (c n)
- ((op ^::real => nat => real) x
- ((op -::nat => nat => nat) n (1::nat)))))
- ((suminf::(nat => real) => real)
- (%n::nat.
- (op *::real => real => real)
- ((diffs::(nat => real) => nat => real) c n)
- ((op ^::real => nat => real) x n))))))"
+lemma DIFFS_EQUIV: "ALL (c::nat => real) x::real.
+ summable (%n::nat. diffs c n * x ^ n) -->
+ sums (%n::nat. real n * (c n * x ^ (n - 1)))
+ (suminf (%n::nat. diffs c n * x ^ n))"
by (import powser DIFFS_EQUIV)
lemma TERMDIFF_LEMMA1: "ALL (m::nat) (z::real) h::real.
@@ -3981,194 +2162,44 @@
real.sum (0, m) (%p::nat. z ^ p * ((z + h) ^ (m - p) - z ^ (m - p)))"
by (import powser TERMDIFF_LEMMA1)
-lemma TERMDIFF_LEMMA2: "(All::(real => bool) => bool)
- (%z::real.
- (All::(real => bool) => bool)
- (%h::real.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::real => real => bool) h (0::real)))
- ((op =::real => real => bool)
- ((op -::real => real => real)
- ((op /::real => real => real)
- ((op -::real => real => real)
- ((op ^::real => nat => real)
- ((op +::real => real => real) z h) n)
- ((op ^::real => nat => real) z n))
- h)
- ((op *::real => real => real) ((real::nat => real) n)
- ((op ^::real => nat => real) z
- ((op -::nat => nat => nat) n (1::nat)))))
- ((op *::real => real => real) h
- ((real.sum::nat * nat => (nat => real) => real)
- ((Pair::nat => nat => nat * nat) (0::nat)
- ((op -::nat => nat => nat) n (1::nat)))
- (%p::nat.
- (op *::real => real => real)
- ((op ^::real => nat => real) z p)
- ((real.sum::nat * nat => (nat => real) => real)
- ((Pair::nat => nat => nat * nat) (0::nat)
- ((op -::nat => nat => nat)
- ((op -::nat => nat => nat) n (1::nat)) p))
- (%q::nat.
- (op *::real => real => real)
- ((op ^::real => nat => real)
- ((op +::real => real => real) z h) q)
- ((op ^::real => nat => real) z
- ((op -::nat => nat => nat)
-((op -::nat => nat => nat)
- ((op -::nat => nat => nat) n
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin) (bit.B1::bit))
- (bit.B0::bit))))
- p)
-q)))))))))))"
+lemma TERMDIFF_LEMMA2: "ALL (z::real) (h::real) n::nat.
+ h ~= 0 -->
+ ((z + h) ^ n - z ^ n) / h - real n * z ^ (n - 1) =
+ h *
+ real.sum (0, n - 1)
+ (%p::nat.
+ z ^ p *
+ real.sum (0, n - 1 - p)
+ (%q::nat. (z + h) ^ q * z ^ (n - 2 - p - q)))"
by (import powser TERMDIFF_LEMMA2)
-lemma TERMDIFF_LEMMA3: "(All::(real => bool) => bool)
- (%z::real.
- (All::(real => bool) => bool)
- (%h::real.
- (All::(nat => bool) => bool)
- (%n::nat.
- (All::(real => bool) => bool)
- (%k'::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::real => real => bool) h (0::real)))
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool)
- ((abs::real => real) z) k')
- ((op <=::real => real => bool)
- ((abs::real => real)
- ((op +::real => real => real) z h))
- k')))
- ((op <=::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real)
- ((op /::real => real => real)
- ((op -::real => real => real)
- ((op ^::real => nat => real)
- ((op +::real => real => real) z h) n)
- ((op ^::real => nat => real) z n))
- h)
- ((op *::real => real => real)
- ((real::nat => real) n)
- ((op ^::real => nat => real) z
- ((op -::nat => nat => nat) n (1::nat))))))
- ((op *::real => real => real) ((real::nat => real) n)
- ((op *::real => real => real)
- ((real::nat => real)
- ((op -::nat => nat => nat) n (1::nat)))
- ((op *::real => real => real)
- ((op ^::real => nat => real) k'
- ((op -::nat => nat => nat) n
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin)
- (Numeral.Pls::bin) (bit.B1::bit))
- (bit.B0::bit)))))
- ((abs::real => real) h)))))))))"
+lemma TERMDIFF_LEMMA3: "ALL (z::real) (h::real) (n::nat) k'::real.
+ h ~= 0 & abs z <= k' & abs (z + h) <= k' -->
+ abs (((z + h) ^ n - z ^ n) / h - real n * z ^ (n - 1))
+ <= real n * (real (n - 1) * (k' ^ (n - 2) * abs h))"
by (import powser TERMDIFF_LEMMA3)
-lemma TERMDIFF_LEMMA4: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%k'::real.
- (All::(real => bool) => bool)
- (%k::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) k)
- ((All::(real => bool) => bool)
- (%h::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real)
- ((abs::real => real) h))
- ((op <::real => real => bool)
- ((abs::real => real) h) k))
- ((op <=::real => real => bool)
- ((abs::real => real) (f h))
- ((op *::real => real => real) k'
- ((abs::real => real) h))))))
- ((tends_real_real::(real => real) => real => real => bool) f
- (0::real) (0::real)))))"
+lemma TERMDIFF_LEMMA4: "ALL (f::real => real) (k'::real) k::real.
+ 0 < k &
+ (ALL h::real. 0 < abs h & abs h < k --> abs (f h) <= k' * abs h) -->
+ tends_real_real f 0 0"
by (import powser TERMDIFF_LEMMA4)
-lemma TERMDIFF_LEMMA5: "(All::((nat => real) => bool) => bool)
- (%f::nat => real.
- (All::((real => nat => real) => bool) => bool)
- (%g::real => nat => real.
- (All::(real => bool) => bool)
- (%k::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) k)
- ((op &::bool => bool => bool)
- ((summable::(nat => real) => bool) f)
- ((All::(real => bool) => bool)
- (%h::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real)
- ((abs::real => real) h))
- ((op <::real => real => bool)
- ((abs::real => real) h) k))
- ((All::(nat => bool) => bool)
- (%n::nat.
- (op <=::real => real => bool)
- ((abs::real => real) (g h n))
- ((op *::real => real => real) (f n)
- ((abs::real => real) h))))))))
- ((tends_real_real::(real => real) => real => real => bool)
- (%h::real. (suminf::(nat => real) => real) (g h))
- (0::real) (0::real)))))"
+lemma TERMDIFF_LEMMA5: "ALL (f::nat => real) (g::real => nat => real) k::real.
+ 0 < k &
+ summable f &
+ (ALL h::real.
+ 0 < abs h & abs h < k -->
+ (ALL n::nat. abs (g h n) <= f n * abs h)) -->
+ tends_real_real (%h::real. suminf (g h)) 0 0"
by (import powser TERMDIFF_LEMMA5)
-lemma TERMDIFF: "(All::((nat => real) => bool) => bool)
- (%c::nat => real.
- (All::(real => bool) => bool)
- (%k'::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((summable::(nat => real) => bool)
- (%n::nat.
- (op *::real => real => real) (c n)
- ((op ^::real => nat => real) k' n)))
- ((op &::bool => bool => bool)
- ((summable::(nat => real) => bool)
- (%n::nat.
- (op *::real => real => real)
- ((diffs::(nat => real) => nat => real) c n)
- ((op ^::real => nat => real) k' n)))
- ((op &::bool => bool => bool)
- ((summable::(nat => real) => bool)
- (%n::nat.
- (op *::real => real => real)
- ((diffs::(nat => real) => nat => real)
- ((diffs::(nat => real) => nat => real) c) n)
- ((op ^::real => nat => real) k' n)))
- ((op <::real => real => bool) ((abs::real => real) x)
- ((abs::real => real) k')))))
- ((diffl::(real => real) => real => real => bool)
- (%x::real.
- (suminf::(nat => real) => real)
- (%n::nat.
- (op *::real => real => real) (c n)
- ((op ^::real => nat => real) x n)))
- ((suminf::(nat => real) => real)
- (%n::nat.
- (op *::real => real => real)
- ((diffs::(nat => real) => nat => real) c n)
- ((op ^::real => nat => real) x n)))
- x))))"
+lemma TERMDIFF: "ALL (c::nat => real) (k'::real) x::real.
+ summable (%n::nat. c n * k' ^ n) &
+ summable (%n::nat. diffs c n * k' ^ n) &
+ summable (%n::nat. diffs (diffs c) n * k' ^ n) & abs x < abs k' -->
+ diffl (%x::real. suminf (%n::nat. c n * x ^ n))
+ (suminf (%n::nat. diffs c n * x ^ n)) x"
by (import powser TERMDIFF)
;end_setup
@@ -4262,113 +2293,20 @@
lemma DIFF_COS: "ALL x::real. diffl cos (- sin x) x"
by (import transc DIFF_COS)
-lemma DIFF_COMPOSITE: "(op &::bool => bool => bool)
- ((op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) (f::real => real)
- (l::real) (x::real))
- ((Not::bool => bool) ((op =::real => real => bool) (f x) (0::real))))
- ((diffl::(real => real) => real => real => bool)
- (%x::real. (inverse::real => real) (f x))
- ((uminus::real => real)
- ((op /::real => real => real) l
- ((op ^::real => nat => real) (f x)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))))
- x))
- ((op &::bool => bool => bool)
- ((op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) f l x)
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) (g::real => real)
- (m::real) x)
- ((Not::bool => bool)
- ((op =::real => real => bool) (g x) (0::real)))))
- ((diffl::(real => real) => real => real => bool)
- (%x::real. (op /::real => real => real) (f x) (g x))
- ((op /::real => real => real)
- ((op -::real => real => real)
- ((op *::real => real => real) l (g x))
- ((op *::real => real => real) m (f x)))
- ((op ^::real => nat => real) (g x)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))
- x))
- ((op &::bool => bool => bool)
- ((op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) f l x)
- ((diffl::(real => real) => real => real => bool) g m x))
- ((diffl::(real => real) => real => real => bool)
- (%x::real. (op +::real => real => real) (f x) (g x))
- ((op +::real => real => real) l m) x))
- ((op &::bool => bool => bool)
- ((op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) f l x)
- ((diffl::(real => real) => real => real => bool) g m x))
- ((diffl::(real => real) => real => real => bool)
- (%x::real. (op *::real => real => real) (f x) (g x))
- ((op +::real => real => real)
- ((op *::real => real => real) l (g x))
- ((op *::real => real => real) m (f x)))
- x))
- ((op &::bool => bool => bool)
- ((op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) f l x)
- ((diffl::(real => real) => real => real => bool) g m x))
- ((diffl::(real => real) => real => real => bool)
- (%x::real. (op -::real => real => real) (f x) (g x))
- ((op -::real => real => real) l m) x))
- ((op &::bool => bool => bool)
- ((op -->::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) f l x)
- ((diffl::(real => real) => real => real => bool)
- (%x::real. (uminus::real => real) (f x))
- ((uminus::real => real) l) x))
- ((op &::bool => bool => bool)
- ((op -->::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) g m x)
- ((diffl::(real => real) => real => real => bool)
- (%x::real. (op ^::real => nat => real) (g x) (n::nat))
- ((op *::real => real => real)
- ((op *::real => real => real) ((real::nat => real) n)
- ((op ^::real => nat => real) (g x)
- ((op -::nat => nat => nat) n (1::nat))))
- m)
- x))
- ((op &::bool => bool => bool)
- ((op -->::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) g m x)
- ((diffl::(real => real) => real => real => bool)
- (%x::real. (exp::real => real) (g x))
- ((op *::real => real => real) ((exp::real => real) (g x))
- m)
- x))
- ((op &::bool => bool => bool)
- ((op -->::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) g m x)
- ((diffl::(real => real) => real => real => bool)
- (%x::real. (sin::real => real) (g x))
- ((op *::real => real => real)
- ((cos::real => real) (g x)) m)
- x))
- ((op -->::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) g m x)
- ((diffl::(real => real) => real => real => bool)
- (%x::real. (cos::real => real) (g x))
- ((op *::real => real => real)
- ((uminus::real => real) ((sin::real => real) (g x)))
- m)
- x))))))))))"
+lemma DIFF_COMPOSITE: "(diffl (f::real => real) (l::real) (x::real) & f x ~= 0 -->
+ diffl (%x::real. inverse (f x)) (- (l / f x ^ 2)) x) &
+(diffl f l x & diffl (g::real => real) (m::real) x & g x ~= 0 -->
+ diffl (%x::real. f x / g x) ((l * g x - m * f x) / g x ^ 2) x) &
+(diffl f l x & diffl g m x --> diffl (%x::real. f x + g x) (l + m) x) &
+(diffl f l x & diffl g m x -->
+ diffl (%x::real. f x * g x) (l * g x + m * f x) x) &
+(diffl f l x & diffl g m x --> diffl (%x::real. f x - g x) (l - m) x) &
+(diffl f l x --> diffl (%x::real. - f x) (- l) x) &
+(diffl g m x -->
+ diffl (%x::real. g x ^ (n::nat)) (real n * g x ^ (n - 1) * m) x) &
+(diffl g m x --> diffl (%x::real. exp (g x)) (exp (g x) * m) x) &
+(diffl g m x --> diffl (%x::real. sin (g x)) (cos (g x) * m) x) &
+(diffl g m x --> diffl (%x::real. cos (g x)) (- sin (g x) * m) x)"
by (import transc DIFF_COMPOSITE)
lemma EXP_0: "exp 0 = 1"
@@ -4410,13 +2348,7 @@
lemma EXP_SUB: "ALL (x::real) y::real. exp (x - y) = exp x / exp y"
by (import transc EXP_SUB)
-lemma EXP_MONO_IMP: "(All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool) ((op <::real => real => bool) x y)
- ((op <::real => real => bool) ((exp::real => real) x)
- ((exp::real => real) y))))"
+lemma EXP_MONO_IMP: "ALL (x::real) y::real. x < y --> exp x < exp y"
by (import transc EXP_MONO_IMP)
lemma EXP_MONO_LT: "ALL (x::real) y::real. (exp x < exp y) = (x < y)"
@@ -4447,32 +2379,10 @@
lemma EXP_LN: "ALL x::real. (exp (ln x) = x) = (0 < x)"
by (import transc EXP_LN)
-lemma LN_MUL: "(All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) x)
- ((op <::real => real => bool) (0::real) y))
- ((op =::real => real => bool)
- ((ln::real => real) ((op *::real => real => real) x y))
- ((op +::real => real => real) ((ln::real => real) x)
- ((ln::real => real) y)))))"
+lemma LN_MUL: "ALL (x::real) y::real. 0 < x & 0 < y --> ln (x * y) = ln x + ln y"
by (import transc LN_MUL)
-lemma LN_INJ: "(All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) x)
- ((op <::real => real => bool) (0::real) y))
- ((op =::bool => bool => bool)
- ((op =::real => real => bool) ((ln::real => real) x)
- ((ln::real => real) y))
- ((op =::real => real => bool) x y))))"
+lemma LN_INJ: "ALL (x::real) y::real. 0 < x & 0 < y --> (ln x = ln y) = (x = y)"
by (import transc LN_INJ)
lemma LN_1: "ln 1 = 0"
@@ -4481,58 +2391,16 @@
lemma LN_INV: "ALL x>0. ln (inverse x) = - ln x"
by (import transc LN_INV)
-lemma LN_DIV: "(All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) x)
- ((op <::real => real => bool) (0::real) y))
- ((op =::real => real => bool)
- ((ln::real => real) ((op /::real => real => real) x y))
- ((op -::real => real => real) ((ln::real => real) x)
- ((ln::real => real) y)))))"
+lemma LN_DIV: "ALL (x::real) y::real. 0 < x & 0 < y --> ln (x / y) = ln x - ln y"
by (import transc LN_DIV)
-lemma LN_MONO_LT: "(All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) x)
- ((op <::real => real => bool) (0::real) y))
- ((op =::bool => bool => bool)
- ((op <::real => real => bool) ((ln::real => real) x)
- ((ln::real => real) y))
- ((op <::real => real => bool) x y))))"
+lemma LN_MONO_LT: "ALL (x::real) y::real. 0 < x & 0 < y --> (ln x < ln y) = (x < y)"
by (import transc LN_MONO_LT)
-lemma LN_MONO_LE: "(All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) x)
- ((op <::real => real => bool) (0::real) y))
- ((op =::bool => bool => bool)
- ((op <=::real => real => bool) ((ln::real => real) x)
- ((ln::real => real) y))
- ((op <=::real => real => bool) x y))))"
+lemma LN_MONO_LE: "ALL (x::real) y::real. 0 < x & 0 < y --> (ln x <= ln y) = (x <= y)"
by (import transc LN_MONO_LE)
-lemma LN_POW: "(All::(nat => bool) => bool)
- (%n::nat.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool) (0::real) x)
- ((op =::real => real => bool)
- ((ln::real => real) ((op ^::real => nat => real) x n))
- ((op *::real => real => real) ((real::nat => real) n)
- ((ln::real => real) x)))))"
+lemma LN_POW: "ALL (n::nat) x::real. 0 < x --> ln (x ^ n) = real n * ln x"
by (import transc LN_POW)
lemma LN_LE: "ALL x>=0. ln (1 + x) <= x"
@@ -4546,31 +2414,10 @@
constdefs
root :: "nat => real => real"
- "(op ==::(nat => real => real) => (nat => real => real) => prop)
- (root::nat => real => real)
- (%(n::nat) x::real.
- (Eps::(real => bool) => real)
- (%u::real.
- (op &::bool => bool => bool)
- ((op -->::bool => bool => bool)
- ((op <::real => real => bool) (0::real) x)
- ((op <::real => real => bool) (0::real) u))
- ((op =::real => real => bool) ((op ^::real => nat => real) u n)
- x)))"
-
-lemma root: "(All::(nat => bool) => bool)
- (%n::nat.
- (All::(real => bool) => bool)
- (%x::real.
- (op =::real => real => bool) ((root::nat => real => real) n x)
- ((Eps::(real => bool) => real)
- (%u::real.
- (op &::bool => bool => bool)
- ((op -->::bool => bool => bool)
- ((op <::real => real => bool) (0::real) x)
- ((op <::real => real => bool) (0::real) u))
- ((op =::real => real => bool)
- ((op ^::real => nat => real) u n) x)))))"
+ "root == %(n::nat) x::real. SOME u::real. (0 < x --> 0 < u) & u ^ n = x"
+
+lemma root: "ALL (n::nat) x::real.
+ root n x = (SOME u::real. (0 < x --> 0 < u) & u ^ n = x)"
by (import transc root)
constdefs
@@ -4580,32 +2427,10 @@
lemma sqrt: "ALL x::real. sqrt x = root 2 x"
by (import transc sqrt)
-lemma ROOT_LT_LEMMA: "(All::(nat => bool) => bool)
- (%n::nat.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool) (0::real) x)
- ((op =::real => real => bool)
- ((op ^::real => nat => real)
- ((exp::real => real)
- ((op /::real => real => real) ((ln::real => real) x)
- ((real::nat => real) ((Suc::nat => nat) n))))
- ((Suc::nat => nat) n))
- x)))"
+lemma ROOT_LT_LEMMA: "ALL (n::nat) x::real. 0 < x --> exp (ln x / real (Suc n)) ^ Suc n = x"
by (import transc ROOT_LT_LEMMA)
-lemma ROOT_LN: "(All::(nat => bool) => bool)
- (%n::nat.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool) (0::real) x)
- ((op =::real => real => bool)
- ((root::nat => real => real) ((Suc::nat => nat) n) x)
- ((exp::real => real)
- ((op /::real => real => real) ((ln::real => real) x)
- ((real::nat => real) ((Suc::nat => nat) n)))))))"
+lemma ROOT_LN: "ALL (n::nat) x::real. 0 < x --> root (Suc n) x = exp (ln x / real (Suc n))"
by (import transc ROOT_LN)
lemma ROOT_0: "ALL n::nat. root (Suc n) 0 = 0"
@@ -4614,132 +2439,38 @@
lemma ROOT_1: "ALL n::nat. root (Suc n) 1 = 1"
by (import transc ROOT_1)
-lemma ROOT_POS_LT: "(All::(nat => bool) => bool)
- (%n::nat.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool) (0::real) x)
- ((op <::real => real => bool) (0::real)
- ((root::nat => real => real) ((Suc::nat => nat) n) x))))"
+lemma ROOT_POS_LT: "ALL (n::nat) x::real. 0 < x --> 0 < root (Suc n) x"
by (import transc ROOT_POS_LT)
-lemma ROOT_POW_POS: "(All::(nat => bool) => bool)
- (%n::nat.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op =::real => real => bool)
- ((op ^::real => nat => real)
- ((root::nat => real => real) ((Suc::nat => nat) n) x)
- ((Suc::nat => nat) n))
- x)))"
+lemma ROOT_POW_POS: "ALL (n::nat) x::real. 0 <= x --> root (Suc n) x ^ Suc n = x"
by (import transc ROOT_POW_POS)
-lemma POW_ROOT_POS: "(All::(nat => bool) => bool)
- (%n::nat.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op =::real => real => bool)
- ((root::nat => real => real) ((Suc::nat => nat) n)
- ((op ^::real => nat => real) x ((Suc::nat => nat) n)))
- x)))"
+lemma POW_ROOT_POS: "ALL (n::nat) x::real. 0 <= x --> root (Suc n) (x ^ Suc n) = x"
by (import transc POW_ROOT_POS)
-lemma ROOT_POS: "(All::(nat => bool) => bool)
- (%n::nat.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op <=::real => real => bool) (0::real)
- ((root::nat => real => real) ((Suc::nat => nat) n) x))))"
+lemma ROOT_POS: "ALL (n::nat) x::real. 0 <= x --> 0 <= root (Suc n) x"
by (import transc ROOT_POS)
-lemma ROOT_POS_UNIQ: "(All::(nat => bool) => bool)
- (%n::nat.
- (All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) y)
- ((op =::real => real => bool)
- ((op ^::real => nat => real) y ((Suc::nat => nat) n))
- x)))
- ((op =::real => real => bool)
- ((root::nat => real => real) ((Suc::nat => nat) n) x)
- y))))"
+lemma ROOT_POS_UNIQ: "ALL (n::nat) (x::real) y::real.
+ 0 <= x & 0 <= y & y ^ Suc n = x --> root (Suc n) x = y"
by (import transc ROOT_POS_UNIQ)
-lemma ROOT_MUL: "(All::(nat => bool) => bool)
- (%n::nat.
- (All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op <=::real => real => bool) (0::real) y))
- ((op =::real => real => bool)
- ((root::nat => real => real) ((Suc::nat => nat) n)
- ((op *::real => real => real) x y))
- ((op *::real => real => real)
- ((root::nat => real => real) ((Suc::nat => nat) n) x)
- ((root::nat => real => real) ((Suc::nat => nat) n)
- y))))))"
+lemma ROOT_MUL: "ALL (n::nat) (x::real) y::real.
+ 0 <= x & 0 <= y -->
+ root (Suc n) (x * y) = root (Suc n) x * root (Suc n) y"
by (import transc ROOT_MUL)
-lemma ROOT_INV: "(All::(nat => bool) => bool)
- (%n::nat.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op =::real => real => bool)
- ((root::nat => real => real) ((Suc::nat => nat) n)
- ((inverse::real => real) x))
- ((inverse::real => real)
- ((root::nat => real => real) ((Suc::nat => nat) n) x)))))"
+lemma ROOT_INV: "ALL (n::nat) x::real.
+ 0 <= x --> root (Suc n) (inverse x) = inverse (root (Suc n) x)"
by (import transc ROOT_INV)
-lemma ROOT_DIV: "(All::(nat => bool) => bool)
- (%x::nat.
- (All::(real => bool) => bool)
- (%xa::real.
- (All::(real => bool) => bool)
- (%xb::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) xa)
- ((op <=::real => real => bool) (0::real) xb))
- ((op =::real => real => bool)
- ((root::nat => real => real) ((Suc::nat => nat) x)
- ((op /::real => real => real) xa xb))
- ((op /::real => real => real)
- ((root::nat => real => real) ((Suc::nat => nat) x) xa)
- ((root::nat => real => real) ((Suc::nat => nat) x)
- xb))))))"
+lemma ROOT_DIV: "ALL (x::nat) (xa::real) xb::real.
+ 0 <= xa & 0 <= xb -->
+ root (Suc x) (xa / xb) = root (Suc x) xa / root (Suc x) xb"
by (import transc ROOT_DIV)
-lemma ROOT_MONO_LE: "(All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op <=::real => real => bool) x y))
- ((op <=::real => real => bool)
- ((root::nat => real => real) ((Suc::nat => nat) (n::nat)) x)
- ((root::nat => real => real) ((Suc::nat => nat) n) y))))"
+lemma ROOT_MONO_LE: "ALL (x::real) y::real.
+ 0 <= x & x <= y --> root (Suc (n::nat)) x <= root (Suc n) y"
by (import transc ROOT_MONO_LE)
lemma SQRT_0: "sqrt 0 = 0"
@@ -4760,125 +2491,33 @@
lemma SQRT_POW_2: "ALL x>=0. sqrt x ^ 2 = x"
by (import transc SQRT_POW_2)
-lemma POW_2_SQRT: "(op -->::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) (x::real))
- ((op =::real => real => bool)
- ((sqrt::real => real)
- ((op ^::real => nat => real) x
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin) (bit.B1::bit))
- (bit.B0::bit)))))
- x)"
+lemma POW_2_SQRT: "0 <= (x::real) --> sqrt (x ^ 2) = x"
by (import transc POW_2_SQRT)
-lemma SQRT_POS_UNIQ: "(All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%xa::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) xa)
- ((op =::real => real => bool)
- ((op ^::real => nat => real) xa
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))
- x)))
- ((op =::real => real => bool) ((sqrt::real => real) x) xa)))"
+lemma SQRT_POS_UNIQ: "ALL (x::real) xa::real. 0 <= x & 0 <= xa & xa ^ 2 = x --> sqrt x = xa"
by (import transc SQRT_POS_UNIQ)
-lemma SQRT_MUL: "(All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%xa::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op <=::real => real => bool) (0::real) xa))
- ((op =::real => real => bool)
- ((sqrt::real => real) ((op *::real => real => real) x xa))
- ((op *::real => real => real) ((sqrt::real => real) x)
- ((sqrt::real => real) xa)))))"
+lemma SQRT_MUL: "ALL (x::real) xa::real.
+ 0 <= x & 0 <= xa --> sqrt (x * xa) = sqrt x * sqrt xa"
by (import transc SQRT_MUL)
lemma SQRT_INV: "ALL x>=0. sqrt (inverse x) = inverse (sqrt x)"
by (import transc SQRT_INV)
-lemma SQRT_DIV: "(All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%xa::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op <=::real => real => bool) (0::real) xa))
- ((op =::real => real => bool)
- ((sqrt::real => real) ((op /::real => real => real) x xa))
- ((op /::real => real => real) ((sqrt::real => real) x)
- ((sqrt::real => real) xa)))))"
+lemma SQRT_DIV: "ALL (x::real) xa::real.
+ 0 <= x & 0 <= xa --> sqrt (x / xa) = sqrt x / sqrt xa"
by (import transc SQRT_DIV)
-lemma SQRT_MONO_LE: "(All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%xa::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op <=::real => real => bool) x xa))
- ((op <=::real => real => bool) ((sqrt::real => real) x)
- ((sqrt::real => real) xa))))"
+lemma SQRT_MONO_LE: "ALL (x::real) xa::real. 0 <= x & x <= xa --> sqrt x <= sqrt xa"
by (import transc SQRT_MONO_LE)
-lemma SQRT_EVEN_POW2: "(All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool) ((EVEN::nat => bool) n)
- ((op =::real => real => bool)
- ((sqrt::real => real)
- ((op ^::real => nat => real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))
- n))
- ((op ^::real => nat => real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin) (bit.B1::bit))
- (bit.B0::bit)))
- ((op div::nat => nat => nat) n
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))))"
+lemma SQRT_EVEN_POW2: "ALL n::nat. EVEN n --> sqrt (2 ^ n) = 2 ^ (n div 2)"
by (import transc SQRT_EVEN_POW2)
lemma REAL_DIV_SQRT: "ALL x>=0. x / sqrt x = sqrt x"
by (import transc REAL_DIV_SQRT)
-lemma SQRT_EQ: "(All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op =::real => real => bool)
- ((op ^::real => nat => real) x
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))
- y)
- ((op <=::real => real => bool) (0::real) x))
- ((op =::real => real => bool) x ((sqrt::real => real) y))))"
+lemma SQRT_EQ: "ALL (x::real) y::real. x ^ 2 = y & 0 <= x --> x = sqrt y"
by (import transc SQRT_EQ)
lemma SIN_0: "sin 0 = 0"
@@ -4934,17 +2573,7 @@
(sin x)"
by (import transc SIN_PAIRED)
-lemma SIN_POS: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) x)
- ((op <::real => real => bool) x
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin) (bit.B1::bit))
- (bit.B0::bit)))))
- ((op <::real => real => bool) (0::real) ((sin::real => real) x)))"
+lemma SIN_POS: "ALL x::real. 0 < x & x < 2 --> 0 < sin x"
by (import transc SIN_POS)
lemma COS_PAIRED: "ALL x::real.
@@ -5009,211 +2638,45 @@
lemma SIN_NPI: "ALL n::nat. sin (real n * pi) = 0"
by (import transc SIN_NPI)
-lemma SIN_POS_PI2: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) x)
- ((op <::real => real => bool) x
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))))
- ((op <::real => real => bool) (0::real) ((sin::real => real) x)))"
+lemma SIN_POS_PI2: "ALL x::real. 0 < x & x < pi / 2 --> 0 < sin x"
by (import transc SIN_POS_PI2)
-lemma COS_POS_PI2: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) x)
- ((op <::real => real => bool) x
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))))
- ((op <::real => real => bool) (0::real) ((cos::real => real) x)))"
+lemma COS_POS_PI2: "ALL x::real. 0 < x & x < pi / 2 --> 0 < cos x"
by (import transc COS_POS_PI2)
-lemma COS_POS_PI: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool)
- ((uminus::real => real)
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))
- x)
- ((op <::real => real => bool) x
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))))
- ((op <::real => real => bool) (0::real) ((cos::real => real) x)))"
+lemma COS_POS_PI: "ALL x::real. - (pi / 2) < x & x < pi / 2 --> 0 < cos x"
by (import transc COS_POS_PI)
-lemma SIN_POS_PI: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) x)
- ((op <::real => real => bool) x (pi::real)))
- ((op <::real => real => bool) (0::real) ((sin::real => real) x)))"
+lemma SIN_POS_PI: "ALL x::real. 0 < x & x < pi --> 0 < sin x"
by (import transc SIN_POS_PI)
-lemma COS_POS_PI2_LE: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op <=::real => real => bool) x
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))))
- ((op <=::real => real => bool) (0::real) ((cos::real => real) x)))"
+lemma COS_POS_PI2_LE: "ALL x::real. 0 <= x & x <= pi / 2 --> 0 <= cos x"
by (import transc COS_POS_PI2_LE)
-lemma COS_POS_PI_LE: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool)
- ((uminus::real => real)
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))
- x)
- ((op <=::real => real => bool) x
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))))
- ((op <=::real => real => bool) (0::real) ((cos::real => real) x)))"
+lemma COS_POS_PI_LE: "ALL x::real. - (pi / 2) <= x & x <= pi / 2 --> 0 <= cos x"
by (import transc COS_POS_PI_LE)
-lemma SIN_POS_PI2_LE: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op <=::real => real => bool) x
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))))
- ((op <=::real => real => bool) (0::real) ((sin::real => real) x)))"
+lemma SIN_POS_PI2_LE: "ALL x::real. 0 <= x & x <= pi / 2 --> 0 <= sin x"
by (import transc SIN_POS_PI2_LE)
-lemma SIN_POS_PI_LE: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op <=::real => real => bool) x (pi::real)))
- ((op <=::real => real => bool) (0::real) ((sin::real => real) x)))"
+lemma SIN_POS_PI_LE: "ALL x::real. 0 <= x & x <= pi --> 0 <= sin x"
by (import transc SIN_POS_PI_LE)
-lemma COS_TOTAL: "(All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
- ((op <=::real => real => bool) y (1::real)))
- ((Ex1::(real => bool) => bool)
- (%x::real.
- (op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) x (pi::real))
- ((op =::real => real => bool) ((cos::real => real) x) y)))))"
+lemma COS_TOTAL: "ALL y::real.
+ - 1 <= y & y <= 1 --> (EX! x::real. 0 <= x & x <= pi & cos x = y)"
by (import transc COS_TOTAL)
-lemma SIN_TOTAL: "(All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
- ((op <=::real => real => bool) y (1::real)))
- ((Ex1::(real => bool) => bool)
- (%x::real.
- (op &::bool => bool => bool)
- ((op <=::real => real => bool)
- ((uminus::real => real)
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))
- x)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) x
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))
- ((op =::real => real => bool) ((sin::real => real) x) y)))))"
+lemma SIN_TOTAL: "ALL y::real.
+ - 1 <= y & y <= 1 -->
+ (EX! x::real. - (pi / 2) <= x & x <= pi / 2 & sin x = y)"
by (import transc SIN_TOTAL)
-lemma COS_ZERO_LEMMA: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op =::real => real => bool) ((cos::real => real) x) (0::real)))
- ((Ex::(nat => bool) => bool)
- (%n::nat.
- (op &::bool => bool => bool)
- ((Not::bool => bool) ((EVEN::nat => bool) n))
- ((op =::real => real => bool) x
- ((op *::real => real => real) ((real::nat => real) n)
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))))))"
+lemma COS_ZERO_LEMMA: "ALL x::real.
+ 0 <= x & cos x = 0 --> (EX n::nat. ~ EVEN n & x = real n * (pi / 2))"
by (import transc COS_ZERO_LEMMA)
-lemma SIN_ZERO_LEMMA: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op =::real => real => bool) ((sin::real => real) x) (0::real)))
- ((Ex::(nat => bool) => bool)
- (%n::nat.
- (op &::bool => bool => bool) ((EVEN::nat => bool) n)
- ((op =::real => real => bool) x
- ((op *::real => real => real) ((real::nat => real) n)
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))))))"
+lemma SIN_ZERO_LEMMA: "ALL x::real.
+ 0 <= x & sin x = 0 --> (EX n::nat. EVEN n & x = real n * (pi / 2))"
by (import transc SIN_ZERO_LEMMA)
lemma COS_ZERO: "ALL x::real.
@@ -5250,105 +2713,20 @@
lemma TAN_PERIODIC: "ALL x::real. tan (x + 2 * pi) = tan x"
by (import transc TAN_PERIODIC)
-lemma TAN_ADD: "(All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::real => real => bool) ((cos::real => real) x)
- (0::real)))
- ((op &::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::real => real => bool) ((cos::real => real) y)
- (0::real)))
- ((Not::bool => bool)
- ((op =::real => real => bool)
- ((cos::real => real) ((op +::real => real => real) x y))
- (0::real)))))
- ((op =::real => real => bool)
- ((tan::real => real) ((op +::real => real => real) x y))
- ((op /::real => real => real)
- ((op +::real => real => real) ((tan::real => real) x)
- ((tan::real => real) y))
- ((op -::real => real => real) (1::real)
- ((op *::real => real => real) ((tan::real => real) x)
- ((tan::real => real) y)))))))"
+lemma TAN_ADD: "ALL (x::real) y::real.
+ cos x ~= 0 & cos y ~= 0 & cos (x + y) ~= 0 -->
+ tan (x + y) = (tan x + tan y) / (1 - tan x * tan y)"
by (import transc TAN_ADD)
-lemma TAN_DOUBLE: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::real => real => bool) ((cos::real => real) x) (0::real)))
- ((Not::bool => bool)
- ((op =::real => real => bool)
- ((cos::real => real)
- ((op *::real => real => real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))
- x))
- (0::real))))
- ((op =::real => real => bool)
- ((tan::real => real)
- ((op *::real => real => real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))
- x))
- ((op /::real => real => real)
- ((op *::real => real => real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))
- ((tan::real => real) x))
- ((op -::real => real => real) (1::real)
- ((op ^::real => nat => real) ((tan::real => real) x)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))))))"
+lemma TAN_DOUBLE: "ALL x::real.
+ cos x ~= 0 & cos (2 * x) ~= 0 -->
+ tan (2 * x) = 2 * tan x / (1 - tan x ^ 2)"
by (import transc TAN_DOUBLE)
-lemma TAN_POS_PI2: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) x)
- ((op <::real => real => bool) x
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))))
- ((op <::real => real => bool) (0::real) ((tan::real => real) x)))"
+lemma TAN_POS_PI2: "ALL x::real. 0 < x & x < pi / 2 --> 0 < tan x"
by (import transc TAN_POS_PI2)
-lemma DIFF_TAN: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::real => real => bool) ((cos::real => real) x) (0::real)))
- ((diffl::(real => real) => real => real => bool) (tan::real => real)
- ((inverse::real => real)
- ((op ^::real => nat => real) ((cos::real => real) x)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))
- x))"
+lemma DIFF_TAN: "ALL x::real. cos x ~= 0 --> diffl tan (inverse (cos x ^ 2)) x"
by (import transc DIFF_TAN)
lemma TAN_TOTAL_LEMMA: "ALL y>0. EX x>0. x < pi / 2 & y < tan x"
@@ -5382,172 +2760,37 @@
lemma atn: "ALL y::real. atn y = (SOME x::real. - (pi / 2) < x & x < pi / 2 & tan x = y)"
by (import transc atn)
-lemma ASN: "(All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
- ((op <=::real => real => bool) y (1::real)))
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool)
- ((uminus::real => real)
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))
- ((asn::real => real) y))
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) ((asn::real => real) y)
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))
- ((op =::real => real => bool)
- ((sin::real => real) ((asn::real => real) y)) y))))"
+lemma ASN: "ALL y::real.
+ - 1 <= y & y <= 1 -->
+ - (pi / 2) <= asn y & asn y <= pi / 2 & sin (asn y) = y"
by (import transc ASN)
-lemma ASN_SIN: "(All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
- ((op <=::real => real => bool) y (1::real)))
- ((op =::real => real => bool)
- ((sin::real => real) ((asn::real => real) y)) y))"
+lemma ASN_SIN: "ALL y::real. - 1 <= y & y <= 1 --> sin (asn y) = y"
by (import transc ASN_SIN)
-lemma ASN_BOUNDS: "(All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
- ((op <=::real => real => bool) y (1::real)))
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool)
- ((uminus::real => real)
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))
- ((asn::real => real) y))
- ((op <=::real => real => bool) ((asn::real => real) y)
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))))"
+lemma ASN_BOUNDS: "ALL y::real. - 1 <= y & y <= 1 --> - (pi / 2) <= asn y & asn y <= pi / 2"
by (import transc ASN_BOUNDS)
-lemma ASN_BOUNDS_LT: "(All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) ((uminus::real => real) (1::real)) y)
- ((op <::real => real => bool) y (1::real)))
- ((op &::bool => bool => bool)
- ((op <::real => real => bool)
- ((uminus::real => real)
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))
- ((asn::real => real) y))
- ((op <::real => real => bool) ((asn::real => real) y)
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))))"
+lemma ASN_BOUNDS_LT: "ALL y::real. - 1 < y & y < 1 --> - (pi / 2) < asn y & asn y < pi / 2"
by (import transc ASN_BOUNDS_LT)
-lemma SIN_ASN: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool)
- ((uminus::real => real)
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))
- x)
- ((op <=::real => real => bool) x
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))))
- ((op =::real => real => bool)
- ((asn::real => real) ((sin::real => real) x)) x))"
+lemma SIN_ASN: "ALL x::real. - (pi / 2) <= x & x <= pi / 2 --> asn (sin x) = x"
by (import transc SIN_ASN)
-lemma ACS: "(All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
- ((op <=::real => real => bool) y (1::real)))
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) ((acs::real => real) y))
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) ((acs::real => real) y) (pi::real))
- ((op =::real => real => bool)
- ((cos::real => real) ((acs::real => real) y)) y))))"
+lemma ACS: "ALL y::real.
+ - 1 <= y & y <= 1 --> 0 <= acs y & acs y <= pi & cos (acs y) = y"
by (import transc ACS)
-lemma ACS_COS: "(All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
- ((op <=::real => real => bool) y (1::real)))
- ((op =::real => real => bool)
- ((cos::real => real) ((acs::real => real) y)) y))"
+lemma ACS_COS: "ALL y::real. - 1 <= y & y <= 1 --> cos (acs y) = y"
by (import transc ACS_COS)
-lemma ACS_BOUNDS: "(All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) ((uminus::real => real) (1::real)) y)
- ((op <=::real => real => bool) y (1::real)))
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) ((acs::real => real) y))
- ((op <=::real => real => bool) ((acs::real => real) y) (pi::real))))"
+lemma ACS_BOUNDS: "ALL y::real. - 1 <= y & y <= 1 --> 0 <= acs y & acs y <= pi"
by (import transc ACS_BOUNDS)
-lemma ACS_BOUNDS_LT: "(All::(real => bool) => bool)
- (%y::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) ((uminus::real => real) (1::real)) y)
- ((op <::real => real => bool) y (1::real)))
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) ((acs::real => real) y))
- ((op <::real => real => bool) ((acs::real => real) y) (pi::real))))"
+lemma ACS_BOUNDS_LT: "ALL y::real. - 1 < y & y < 1 --> 0 < acs y & acs y < pi"
by (import transc ACS_BOUNDS_LT)
-lemma COS_ACS: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op <=::real => real => bool) x (pi::real)))
- ((op =::real => real => bool)
- ((acs::real => real) ((cos::real => real) x)) x))"
+lemma COS_ACS: "ALL x::real. 0 <= x & x <= pi --> acs (cos x) = x"
by (import transc COS_ACS)
lemma ATN: "ALL y::real. - (pi / 2) < atn y & atn y < pi / 2 & tan (atn y) = y"
@@ -5559,219 +2802,46 @@
lemma ATN_BOUNDS: "ALL x::real. - (pi / 2) < atn x & atn x < pi / 2"
by (import transc ATN_BOUNDS)
-lemma TAN_ATN: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool)
- ((uminus::real => real)
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))
- x)
- ((op <::real => real => bool) x
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))))
- ((op =::real => real => bool)
- ((atn::real => real) ((tan::real => real) x)) x))"
+lemma TAN_ATN: "ALL x::real. - (pi / 2) < x & x < pi / 2 --> atn (tan x) = x"
by (import transc TAN_ATN)
-lemma TAN_SEC: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::real => real => bool) ((cos::real => real) x) (0::real)))
- ((op =::real => real => bool)
- ((op +::real => real => real) (1::real)
- ((op ^::real => nat => real) ((tan::real => real) x)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))
- ((op ^::real => nat => real)
- ((inverse::real => real) ((cos::real => real) x))
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin) (bit.B1::bit))
- (bit.B0::bit))))))"
+lemma TAN_SEC: "ALL x::real. cos x ~= 0 --> 1 + tan x ^ 2 = inverse (cos x) ^ 2"
by (import transc TAN_SEC)
-lemma SIN_COS_SQ: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) x)
- ((op <=::real => real => bool) x (pi::real)))
- ((op =::real => real => bool) ((sin::real => real) x)
- ((sqrt::real => real)
- ((op -::real => real => real) (1::real)
- ((op ^::real => nat => real) ((cos::real => real) x)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))))))"
+lemma SIN_COS_SQ: "ALL x::real. 0 <= x & x <= pi --> sin x = sqrt (1 - cos x ^ 2)"
by (import transc SIN_COS_SQ)
-lemma COS_SIN_SQ: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool)
- ((uminus::real => real)
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))
- x)
- ((op <=::real => real => bool) x
- ((op /::real => real => real) (pi::real)
- ((number_of::bin => real)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))))
- ((op =::real => real => bool) ((cos::real => real) x)
- ((sqrt::real => real)
- ((op -::real => real => real) (1::real)
- ((op ^::real => nat => real) ((sin::real => real) x)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))))))"
+lemma COS_SIN_SQ: "ALL x::real. - (pi / 2) <= x & x <= pi / 2 --> cos x = sqrt (1 - sin x ^ 2)"
by (import transc COS_SIN_SQ)
lemma COS_ATN_NZ: "ALL x::real. cos (atn x) ~= 0"
by (import transc COS_ATN_NZ)
-lemma COS_ASN_NZ: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) ((uminus::real => real) (1::real)) x)
- ((op <::real => real => bool) x (1::real)))
- ((Not::bool => bool)
- ((op =::real => real => bool)
- ((cos::real => real) ((asn::real => real) x)) (0::real))))"
+lemma COS_ASN_NZ: "ALL x::real. - 1 < x & x < 1 --> cos (asn x) ~= 0"
by (import transc COS_ASN_NZ)
-lemma SIN_ACS_NZ: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) ((uminus::real => real) (1::real)) x)
- ((op <::real => real => bool) x (1::real)))
- ((Not::bool => bool)
- ((op =::real => real => bool)
- ((sin::real => real) ((acs::real => real) x)) (0::real))))"
+lemma SIN_ACS_NZ: "ALL x::real. - 1 < x & x < 1 --> sin (acs x) ~= 0"
by (import transc SIN_ACS_NZ)
-lemma COS_SIN_SQRT: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) ((cos::real => real) x))
- ((op =::real => real => bool) ((cos::real => real) x)
- ((sqrt::real => real)
- ((op -::real => real => real) (1::real)
- ((op ^::real => nat => real) ((sin::real => real) x)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))))))"
+lemma COS_SIN_SQRT: "ALL x::real. 0 <= cos x --> cos x = sqrt (1 - sin x ^ 2)"
by (import transc COS_SIN_SQRT)
-lemma SIN_COS_SQRT: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool) (0::real) ((sin::real => real) x))
- ((op =::real => real => bool) ((sin::real => real) x)
- ((sqrt::real => real)
- ((op -::real => real => real) (1::real)
- ((op ^::real => nat => real) ((cos::real => real) x)
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))))))"
+lemma SIN_COS_SQRT: "ALL x::real. 0 <= sin x --> sin x = sqrt (1 - cos x ^ 2)"
by (import transc SIN_COS_SQRT)
lemma DIFF_LN: "ALL x>0. diffl ln (inverse x) x"
by (import transc DIFF_LN)
-lemma DIFF_ASN_LEMMA: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) ((uminus::real => real) (1::real)) x)
- ((op <::real => real => bool) x (1::real)))
- ((diffl::(real => real) => real => real => bool) (asn::real => real)
- ((inverse::real => real)
- ((cos::real => real) ((asn::real => real) x)))
- x))"
+lemma DIFF_ASN_LEMMA: "ALL x::real. - 1 < x & x < 1 --> diffl asn (inverse (cos (asn x))) x"
by (import transc DIFF_ASN_LEMMA)
-lemma DIFF_ASN: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) ((uminus::real => real) (1::real)) x)
- ((op <::real => real => bool) x (1::real)))
- ((diffl::(real => real) => real => real => bool) (asn::real => real)
- ((inverse::real => real)
- ((sqrt::real => real)
- ((op -::real => real => real) (1::real)
- ((op ^::real => nat => real) x
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit)))))))
- x))"
+lemma DIFF_ASN: "ALL x::real. - 1 < x & x < 1 --> diffl asn (inverse (sqrt (1 - x ^ 2))) x"
by (import transc DIFF_ASN)
-lemma DIFF_ACS_LEMMA: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) ((uminus::real => real) (1::real)) x)
- ((op <::real => real => bool) x (1::real)))
- ((diffl::(real => real) => real => real => bool) (acs::real => real)
- ((inverse::real => real)
- ((uminus::real => real)
- ((sin::real => real) ((acs::real => real) x))))
- x))"
+lemma DIFF_ACS_LEMMA: "ALL x::real. - 1 < x & x < 1 --> diffl acs (inverse (- sin (acs x))) x"
by (import transc DIFF_ACS_LEMMA)
-lemma DIFF_ACS: "(All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) ((uminus::real => real) (1::real)) x)
- ((op <::real => real => bool) x (1::real)))
- ((diffl::(real => real) => real => real => bool) (acs::real => real)
- ((uminus::real => real)
- ((inverse::real => real)
- ((sqrt::real => real)
- ((op -::real => real => real) (1::real)
- ((op ^::real => nat => real) x
- ((number_of::bin => nat)
- ((op BIT::bin => bit => bin)
- ((op BIT::bin => bit => bin) (Numeral.Pls::bin)
- (bit.B1::bit))
- (bit.B0::bit))))))))
- x))"
+lemma DIFF_ACS: "ALL x::real. - 1 < x & x < 1 --> diffl acs (- inverse (sqrt (1 - x ^ 2))) x"
by (import transc DIFF_ACS)
lemma DIFF_ATN: "ALL x::real. diffl atn (inverse (1 + x ^ 2)) x"
@@ -5882,25 +2952,10 @@
constdefs
gauge :: "(real => bool) => (real => real) => bool"
- "(op ==::((real => bool) => (real => real) => bool)
- => ((real => bool) => (real => real) => bool) => prop)
- (gauge::(real => bool) => (real => real) => bool)
- (%(E::real => bool) g::real => real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool) (E x)
- ((op <::real => real => bool) (0::real) (g x))))"
-
-lemma gauge: "(All::((real => bool) => bool) => bool)
- (%E::real => bool.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (op =::bool => bool => bool)
- ((gauge::(real => bool) => (real => real) => bool) E g)
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool) (E x)
- ((op <::real => real => bool) (0::real) (g x))))))"
+ "gauge == %(E::real => bool) g::real => real. ALL x::real. E x --> 0 < g x"
+
+lemma gauge: "ALL (E::real => bool) g::real => real.
+ gauge E g = (ALL x::real. E x --> 0 < g x)"
by (import transc gauge)
constdefs
@@ -5960,153 +3015,36 @@
constdefs
Dint :: "real * real => (real => real) => real => bool"
- "(op ==::(real * real => (real => real) => real => bool)
- => (real * real => (real => real) => real => bool) => prop)
- (Dint::real * real => (real => real) => real => bool)
- ((split::(real => real => (real => real) => real => bool)
- => real * real => (real => real) => real => bool)
- (%(a::real) (b::real) (f::real => real) k::real.
- (All::(real => bool) => bool)
- (%e::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool) (0::real) e)
- ((Ex::((real => real) => bool) => bool)
- (%g::real => real.
- (op &::bool => bool => bool)
- ((gauge::(real => bool) => (real => real) => bool)
- (%x::real.
- (op &::bool => bool => bool)
- ((op <=::real => real => bool) a x)
- ((op <=::real => real => bool) x b))
- g)
- ((All::((nat => real) => bool) => bool)
- (%D::nat => real.
- (All::((nat => real) => bool) => bool)
- (%p::nat => real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((tdiv::real * real
- => (nat => real) * (nat => real) => bool)
- ((Pair::real => real => real * real) a
-b)
- ((Pair::(nat => real)
- => (nat => real) => (nat => real) * (nat => real))
-D p))
- ((fine::(real => real)
- => (nat => real) * (nat => real) => bool)
- g ((Pair::(nat => real)
- => (nat => real) => (nat => real) * (nat => real))
- D p)))
- ((op <::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real)
-((rsum::(nat => real) * (nat => real) => (real => real) => real)
- ((Pair::(nat => real) => (nat => real) => (nat => real) * (nat => real)) D
- p)
- f)
-k))
- e)))))))))"
-
-lemma Dint: "(All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%k::real.
- (op =::bool => bool => bool)
- ((Dint::real * real => (real => real) => real => bool)
- ((Pair::real => real => real * real) a b) f k)
- ((All::(real => bool) => bool)
- (%e::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool) (0::real) e)
- ((Ex::((real => real) => bool) => bool)
- (%g::real => real.
- (op &::bool => bool => bool)
- ((gauge::(real => bool)
- => (real => real) => bool)
- (%x::real.
- (op &::bool => bool => bool) ((op <=::real => real => bool) a x)
- ((op <=::real => real => bool) x b))
- g)
- ((All::((nat => real) => bool) => bool)
- (%D::nat => real.
- (All::((nat => real) => bool) => bool)
- (%p::nat => real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((tdiv::real * real => (nat => real) * (nat => real) => bool)
- ((Pair::real => real => real * real) a b)
- ((Pair::(nat => real)
- => (nat => real) => (nat => real) * (nat => real))
- D p))
- ((fine::(real => real) => (nat => real) * (nat => real) => bool)
- g ((Pair::(nat => real)
- => (nat => real) => (nat => real) * (nat => real))
- D p)))
- ((op <::real => real => bool)
- ((abs::real => real)
- ((op -::real => real => real)
- ((rsum::(nat => real) * (nat => real)
- => (real => real) => real)
- ((Pair::(nat => real)
- => (nat => real) => (nat => real) * (nat => real))
- D p)
- f)
- k))
- e))))))))))))"
+ "Dint ==
+%(a::real, b::real) (f::real => real) k::real.
+ ALL e>0.
+ EX g::real => real.
+ gauge (%x::real. a <= x & x <= b) g &
+ (ALL (D::nat => real) p::nat => real.
+ tdiv (a, b) (D, p) & fine g (D, p) -->
+ abs (rsum (D, p) f - k) < e)"
+
+lemma Dint: "ALL (a::real) (b::real) (f::real => real) k::real.
+ Dint (a, b) f k =
+ (ALL e>0.
+ EX g::real => real.
+ gauge (%x::real. a <= x & x <= b) g &
+ (ALL (D::nat => real) p::nat => real.
+ tdiv (a, b) (D, p) & fine g (D, p) -->
+ abs (rsum (D, p) f - k) < e))"
by (import transc Dint)
-lemma DIVISION_0: "(All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool) ((op =::real => real => bool) a b)
- ((op =::nat => nat => bool)
- ((dsize::(nat => real) => nat)
- (%n::nat.
- (If::bool => real => real => real)
- ((op =::nat => nat => bool) n (0::nat)) a b))
- (0::nat))))"
+lemma DIVISION_0: "ALL (a::real) b::real. a = b --> dsize (%n::nat. if n = 0 then a else b) = 0"
by (import transc DIVISION_0)
-lemma DIVISION_1: "(All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool) ((op <::real => real => bool) a b)
- ((op =::nat => nat => bool)
- ((dsize::(nat => real) => nat)
- (%n::nat.
- (If::bool => real => real => real)
- ((op =::nat => nat => bool) n (0::nat)) a b))
- (1::nat))))"
+lemma DIVISION_1: "ALL (a::real) b::real. a < b --> dsize (%n::nat. if n = 0 then a else b) = 1"
by (import transc DIVISION_1)
-lemma DIVISION_SINGLE: "(All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool) ((op <=::real => real => bool) a b)
- ((division::real * real => (nat => real) => bool)
- ((Pair::real => real => real * real) a b)
- (%n::nat.
- (If::bool => real => real => real)
- ((op =::nat => nat => bool) n (0::nat)) a b))))"
+lemma DIVISION_SINGLE: "ALL (a::real) b::real.
+ a <= b --> division (a, b) (%n::nat. if n = 0 then a else b)"
by (import transc DIVISION_SINGLE)
-lemma DIVISION_LHS: "(All::((nat => real) => bool) => bool)
- (%D::nat => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((division::real * real => (nat => real) => bool)
- ((Pair::real => real => real * real) a b) D)
- ((op =::real => real => bool) (D (0::nat)) a))))"
+lemma DIVISION_LHS: "ALL (D::nat => real) (a::real) b::real. division (a, b) D --> D 0 = a"
by (import transc DIVISION_LHS)
lemma DIVISION_THM: "(All::((nat => real) => bool) => bool)
@@ -6136,39 +3074,12 @@
((op =::real => real => bool) (D n) b))))))))"
by (import transc DIVISION_THM)
-lemma DIVISION_RHS: "(All::((nat => real) => bool) => bool)
- (%D::nat => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((division::real * real => (nat => real) => bool)
- ((Pair::real => real => real * real) a b) D)
- ((op =::real => real => bool)
- (D ((dsize::(nat => real) => nat) D)) b))))"
+lemma DIVISION_RHS: "ALL (D::nat => real) (a::real) b::real.
+ division (a, b) D --> D (dsize D) = b"
by (import transc DIVISION_RHS)
-lemma DIVISION_LT_GEN: "(All::((nat => real) => bool) => bool)
- (%D::nat => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (All::(nat => bool) => bool)
- (%m::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((division::real * real
- => (nat => real) => bool)
- ((Pair::real => real => real * real) a b) D)
- ((op &::bool => bool => bool)
- ((op <::nat => nat => bool) m n)
- ((op <=::nat => nat => bool) n
- ((dsize::(nat => real) => nat) D))))
- ((op <::real => real => bool) (D m) (D n)))))))"
+lemma DIVISION_LT_GEN: "ALL (D::nat => real) (a::real) (b::real) (m::nat) n::nat.
+ division (a, b) D & m < n & n <= dsize D --> D m < D n"
by (import transc DIVISION_LT_GEN)
lemma DIVISION_LT: "(All::((nat => real) => bool) => bool)
@@ -6189,16 +3100,7 @@
(D ((Suc::nat => nat) n))))))))"
by (import transc DIVISION_LT)
-lemma DIVISION_LE: "(All::((nat => real) => bool) => bool)
- (%D::nat => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((division::real * real => (nat => real) => bool)
- ((Pair::real => real => real * real) a b) D)
- ((op <=::real => real => bool) a b))))"
+lemma DIVISION_LE: "ALL (D::nat => real) (a::real) b::real. division (a, b) D --> a <= b"
by (import transc DIVISION_LE)
lemma DIVISION_GT: "(All::((nat => real) => bool) => bool)
@@ -6219,525 +3121,125 @@
(D ((dsize::(nat => real) => nat) D))))))))"
by (import transc DIVISION_GT)
-lemma DIVISION_EQ: "(All::((nat => real) => bool) => bool)
- (%D::nat => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((division::real * real => (nat => real) => bool)
- ((Pair::real => real => real * real) a b) D)
- ((op =::bool => bool => bool)
- ((op =::real => real => bool) a b)
- ((op =::nat => nat => bool)
- ((dsize::(nat => real) => nat) D) (0::nat))))))"
+lemma DIVISION_EQ: "ALL (D::nat => real) (a::real) b::real.
+ division (a, b) D --> (a = b) = (dsize D = 0)"
by (import transc DIVISION_EQ)
-lemma DIVISION_LBOUND: "(All::((nat => real) => bool) => bool)
- (%D::nat => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((division::real * real => (nat => real) => bool)
- ((Pair::real => real => real * real) a b) D)
- ((All::(nat => bool) => bool)
- (%r::nat. (op <=::real => real => bool) a (D r))))))"
+lemma DIVISION_LBOUND: "ALL (D::nat => real) (a::real) b::real.
+ division (a, b) D --> (ALL r::nat. a <= D r)"
by (import transc DIVISION_LBOUND)
-lemma DIVISION_LBOUND_LT: "(All::((nat => real) => bool) => bool)
- (%D::nat => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((division::real * real => (nat => real) => bool)
- ((Pair::real => real => real * real) a b) D)
- ((Not::bool => bool)
- ((op =::nat => nat => bool)
- ((dsize::(nat => real) => nat) D) (0::nat))))
- ((All::(nat => bool) => bool)
- (%n::nat.
- (op <::real => real => bool) a
- (D ((Suc::nat => nat) n)))))))"
+lemma DIVISION_LBOUND_LT: "ALL (D::nat => real) (a::real) b::real.
+ division (a, b) D & dsize D ~= 0 --> (ALL n::nat. a < D (Suc n))"
by (import transc DIVISION_LBOUND_LT)
-lemma DIVISION_UBOUND: "(All::((nat => real) => bool) => bool)
- (%D::nat => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((division::real * real => (nat => real) => bool)
- ((Pair::real => real => real * real) a b) D)
- ((All::(nat => bool) => bool)
- (%r::nat. (op <=::real => real => bool) (D r) b)))))"
+lemma DIVISION_UBOUND: "ALL (D::nat => real) (a::real) b::real.
+ division (a, b) D --> (ALL r::nat. D r <= b)"
by (import transc DIVISION_UBOUND)
-lemma DIVISION_UBOUND_LT: "(All::((nat => real) => bool) => bool)
- (%D::nat => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((division::real * real => (nat => real) => bool)
- ((Pair::real => real => real * real) a b) D)
- ((op <::nat => nat => bool) n
- ((dsize::(nat => real) => nat) D)))
- ((op <::real => real => bool) (D n) b)))))"
+lemma DIVISION_UBOUND_LT: "ALL (D::nat => real) (a::real) (b::real) n::nat.
+ division (a, b) D & n < dsize D --> D n < b"
by (import transc DIVISION_UBOUND_LT)
-lemma DIVISION_APPEND: "(All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (All::(real => bool) => bool)
- (%c::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((Ex::((nat => real) => bool) => bool)
- (%D1::nat => real.
- (Ex::((nat => real) => bool) => bool)
- (%p1::nat => real.
- (op &::bool => bool => bool)
- ((tdiv::real * real
-=> (nat => real) * (nat => real) => bool)
- ((Pair::real => real => real * real) a b)
- ((Pair::(nat => real)
- => (nat => real) => (nat => real) * (nat => real))
- D1 p1))
- ((fine::(real => real)
-=> (nat => real) * (nat => real) => bool)
- (g::real => real)
- ((Pair::(nat => real)
- => (nat => real) => (nat => real) * (nat => real))
- D1 p1)))))
- ((Ex::((nat => real) => bool) => bool)
- (%D2::nat => real.
- (Ex::((nat => real) => bool) => bool)
- (%p2::nat => real.
- (op &::bool => bool => bool)
- ((tdiv::real * real
-=> (nat => real) * (nat => real) => bool)
- ((Pair::real => real => real * real) b c)
- ((Pair::(nat => real)
- => (nat => real) => (nat => real) * (nat => real))
- D2 p2))
- ((fine::(real => real)
-=> (nat => real) * (nat => real) => bool)
- g ((Pair::(nat => real)
- => (nat => real) => (nat => real) * (nat => real))
- D2 p2))))))
- ((Ex::((nat => real) => bool) => bool)
- (%x::nat => real.
- (Ex::((nat => real) => bool) => bool)
- (%p::nat => real.
- (op &::bool => bool => bool)
- ((tdiv::real * real
- => (nat => real) * (nat => real)
- => bool)
- ((Pair::real => real => real * real) a c)
- ((Pair::(nat => real)
-=> (nat => real) => (nat => real) * (nat => real))
- x p))
- ((fine::(real => real)
- => (nat => real) * (nat => real)
- => bool)
- g ((Pair::(nat => real)
- => (nat => real) => (nat => real) * (nat => real))
- x p))))))))"
+lemma DIVISION_APPEND: "ALL (a::real) (b::real) c::real.
+ (EX (D1::nat => real) p1::nat => real.
+ tdiv (a, b) (D1, p1) & fine (g::real => real) (D1, p1)) &
+ (EX (D2::nat => real) p2::nat => real.
+ tdiv (b, c) (D2, p2) & fine g (D2, p2)) -->
+ (EX (x::nat => real) p::nat => real. tdiv (a, c) (x, p) & fine g (x, p))"
by (import transc DIVISION_APPEND)
-lemma DIVISION_EXISTS: "(All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (All::((real => real) => bool) => bool)
- (%g::real => real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a b)
- ((gauge::(real => bool) => (real => real) => bool)
- (%x::real.
- (op &::bool => bool => bool)
- ((op <=::real => real => bool) a x)
- ((op <=::real => real => bool) x b))
- g))
- ((Ex::((nat => real) => bool) => bool)
- (%D::nat => real.
- (Ex::((nat => real) => bool) => bool)
- (%p::nat => real.
- (op &::bool => bool => bool)
- ((tdiv::real * real
- => (nat => real) * (nat => real)
- => bool)
- ((Pair::real => real => real * real) a b)
- ((Pair::(nat => real)
-=> (nat => real) => (nat => real) * (nat => real))
- D p))
- ((fine::(real => real)
- => (nat => real) * (nat => real)
- => bool)
- g ((Pair::(nat => real)
- => (nat => real) => (nat => real) * (nat => real))
- D p))))))))"
+lemma DIVISION_EXISTS: "ALL (a::real) (b::real) g::real => real.
+ a <= b & gauge (%x::real. a <= x & x <= b) g -->
+ (EX (D::nat => real) p::nat => real. tdiv (a, b) (D, p) & fine g (D, p))"
by (import transc DIVISION_EXISTS)
-lemma GAUGE_MIN: "(All::((real => bool) => bool) => bool)
- (%E::real => bool.
- (All::((real => real) => bool) => bool)
- (%g1::real => real.
- (All::((real => real) => bool) => bool)
- (%g2::real => real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((gauge::(real => bool) => (real => real) => bool) E g1)
- ((gauge::(real => bool) => (real => real) => bool) E g2))
- ((gauge::(real => bool) => (real => real) => bool) E
- (%x::real.
- (If::bool => real => real => real)
- ((op <::real => real => bool) (g1 x) (g2 x)) (g1 x)
- (g2 x))))))"
+lemma GAUGE_MIN: "ALL (E::real => bool) (g1::real => real) g2::real => real.
+ gauge E g1 & gauge E g2 -->
+ gauge E (%x::real. if g1 x < g2 x then g1 x else g2 x)"
by (import transc GAUGE_MIN)
-lemma FINE_MIN: "(All::((real => real) => bool) => bool)
- (%g1::real => real.
- (All::((real => real) => bool) => bool)
- (%g2::real => real.
- (All::((nat => real) => bool) => bool)
- (%D::nat => real.
- (All::((nat => real) => bool) => bool)
- (%p::nat => real.
- (op -->::bool => bool => bool)
- ((fine::(real => real)
- => (nat => real) * (nat => real) => bool)
- (%x::real.
- (If::bool => real => real => real)
- ((op <::real => real => bool) (g1 x) (g2 x))
- (g1 x) (g2 x))
- ((Pair::(nat => real)
- => (nat => real)
- => (nat => real) * (nat => real))
- D p))
- ((op &::bool => bool => bool)
- ((fine::(real => real)
- => (nat => real) * (nat => real) => bool)
- g1 ((Pair::(nat => real)
- => (nat => real)
- => (nat => real) * (nat => real))
- D p))
- ((fine::(real => real)
- => (nat => real) * (nat => real) => bool)
- g2 ((Pair::(nat => real)
- => (nat => real)
- => (nat => real) * (nat => real))
- D p)))))))"
+lemma FINE_MIN: "ALL (g1::real => real) (g2::real => real) (D::nat => real) p::nat => real.
+ fine (%x::real. if g1 x < g2 x then g1 x else g2 x) (D, p) -->
+ fine g1 (D, p) & fine g2 (D, p)"
by (import transc FINE_MIN)
-lemma DINT_UNIQ: "(All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::(real => bool) => bool)
- (%k1::real.
- (All::(real => bool) => bool)
- (%k2::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a b)
- ((op &::bool => bool => bool)
- ((Dint::real * real
-=> (real => real) => real => bool)
- ((Pair::real => real => real * real) a b) f
- k1)
- ((Dint::real * real
-=> (real => real) => real => bool)
- ((Pair::real => real => real * real) a b) f
- k2)))
- ((op =::real => real => bool) k1 k2))))))"
+lemma DINT_UNIQ: "ALL (a::real) (b::real) (f::real => real) (k1::real) k2::real.
+ a <= b & Dint (a, b) f k1 & Dint (a, b) f k2 --> k1 = k2"
by (import transc DINT_UNIQ)
lemma INTEGRAL_NULL: "ALL (f::real => real) a::real. Dint (a, a) f 0"
by (import transc INTEGRAL_NULL)
-lemma FTC1: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((real => real) => bool) => bool)
- (%f'::real => real.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a b)
- ((All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <=::real => real => bool) a x)
- ((op <=::real => real => bool) x b))
- ((diffl::(real => real)
- => real => real => bool)
- f (f' x) x))))
- ((Dint::real * real => (real => real) => real => bool)
- ((Pair::real => real => real * real) a b) f'
- ((op -::real => real => real) (f b) (f a)))))))"
+lemma FTC1: "ALL (f::real => real) (f'::real => real) (a::real) b::real.
+ a <= b & (ALL x::real. a <= x & x <= b --> diffl f (f' x) x) -->
+ Dint (a, b) f' (f b - f a)"
by (import transc FTC1)
-lemma MCLAURIN: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((nat => real => real) => bool) => bool)
- (%diff::nat => real => real.
- (All::(real => bool) => bool)
- (%h::real.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) h)
- ((op &::bool => bool => bool)
- ((op <::nat => nat => bool) (0::nat) n)
- ((op &::bool => bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- (diff (0::nat)) f)
- ((All::(nat => bool) => bool)
- (%m::nat.
- (All::(real => bool) => bool)
- (%t::real.
-(op -->::bool => bool => bool)
- ((op &::bool => bool => bool) ((op <::nat => nat => bool) m n)
- ((op &::bool => bool => bool) ((op <=::real => real => bool) (0::real) t)
- ((op <=::real => real => bool) t h)))
- ((diffl::(real => real) => real => real => bool) (diff m)
- (diff ((Suc::nat => nat) m) t) t)))))))
- ((Ex::(real => bool) => bool)
- (%t::real.
- (op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real) t)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) t h)
- ((op =::real => real => bool) (f h)
- ((op +::real => real => real)
- ((real.sum::nat * nat
- => (nat => real) => real)
- ((Pair::nat => nat => nat * nat)
-(0::nat) n)
- (%m::nat.
- (op *::real => real => real)
- ((op /::real => real => real) (diff m (0::real))
- ((real::nat => real) ((FACT::nat => nat) m)))
- ((op ^::real => nat => real) h m)))
- ((op *::real => real => real)
- ((op /::real => real => real) (diff n t)
-((real::nat => real) ((FACT::nat => nat) n)))
- ((op ^::real => nat => real) h
-n)))))))))))"
+lemma MCLAURIN: "ALL (f::real => real) (diff::nat => real => real) (h::real) n::nat.
+ 0 < h &
+ 0 < n &
+ diff 0 = f &
+ (ALL (m::nat) t::real.
+ m < n & 0 <= t & t <= h --> diffl (diff m) (diff (Suc m) t) t) -->
+ (EX t>0.
+ t < h &
+ f h =
+ real.sum (0, n) (%m::nat. diff m 0 / real (FACT m) * h ^ m) +
+ diff n t / real (FACT n) * h ^ n)"
by (import transc MCLAURIN)
-lemma MCLAURIN_NEG: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((nat => real => real) => bool) => bool)
- (%diff::nat => real => real.
- (All::(real => bool) => bool)
- (%h::real.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) h (0::real))
- ((op &::bool => bool => bool)
- ((op <::nat => nat => bool) (0::nat) n)
- ((op &::bool => bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- (diff (0::nat)) f)
- ((All::(nat => bool) => bool)
- (%m::nat.
- (All::(real => bool) => bool)
- (%t::real.
-(op -->::bool => bool => bool)
- ((op &::bool => bool => bool) ((op <::nat => nat => bool) m n)
- ((op &::bool => bool => bool) ((op <=::real => real => bool) h t)
- ((op <=::real => real => bool) t (0::real))))
- ((diffl::(real => real) => real => real => bool) (diff m)
- (diff ((Suc::nat => nat) m) t) t)))))))
- ((Ex::(real => bool) => bool)
- (%t::real.
- (op &::bool => bool => bool)
- ((op <::real => real => bool) h t)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) t (0::real))
- ((op =::real => real => bool) (f h)
- ((op +::real => real => real)
- ((real.sum::nat * nat
- => (nat => real) => real)
- ((Pair::nat => nat => nat * nat)
-(0::nat) n)
- (%m::nat.
- (op *::real => real => real)
- ((op /::real => real => real) (diff m (0::real))
- ((real::nat => real) ((FACT::nat => nat) m)))
- ((op ^::real => nat => real) h m)))
- ((op *::real => real => real)
- ((op /::real => real => real) (diff n t)
-((real::nat => real) ((FACT::nat => nat) n)))
- ((op ^::real => nat => real) h
-n)))))))))))"
+lemma MCLAURIN_NEG: "ALL (f::real => real) (diff::nat => real => real) (h::real) n::nat.
+ h < 0 &
+ 0 < n &
+ diff 0 = f &
+ (ALL (m::nat) t::real.
+ m < n & h <= t & t <= 0 --> diffl (diff m) (diff (Suc m) t) t) -->
+ (EX t::real.
+ h < t &
+ t < 0 &
+ f h =
+ real.sum (0, n) (%m::nat. diff m 0 / real (FACT m) * h ^ m) +
+ diff n t / real (FACT n) * h ^ n)"
by (import transc MCLAURIN_NEG)
-lemma MCLAURIN_ALL_LT: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((nat => real => real) => bool) => bool)
- (%diff::nat => real => real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- (diff (0::nat)) f)
- ((All::(nat => bool) => bool)
- (%m::nat.
- (All::(real => bool) => bool)
- (%x::real.
- (diffl::(real => real) => real => real => bool)
- (diff m) (diff ((Suc::nat => nat) m) x) x))))
- ((All::(real => bool) => bool)
- (%x::real.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::real => real => bool) x (0::real)))
- ((op <::nat => nat => bool) (0::nat) n))
- ((Ex::(real => bool) => bool)
- (%t::real.
- (op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real)
- ((abs::real => real) t))
- ((op &::bool => bool => bool)
- ((op <::real => real => bool)
- ((abs::real => real) t)
- ((abs::real => real) x))
- ((op =::real => real => bool) (f x)
- ((op +::real => real => real)
- ((real.sum::nat * nat
- => (nat => real) => real)
-((Pair::nat => nat => nat * nat) (0::nat) n)
-(%m::nat.
- (op *::real => real => real)
- ((op /::real => real => real) (diff m (0::real))
- ((real::nat => real) ((FACT::nat => nat) m)))
- ((op ^::real => nat => real) x m)))
- ((op *::real => real => real)
-((op /::real => real => real) (diff n t)
- ((real::nat => real) ((FACT::nat => nat) n)))
-((op ^::real => nat => real) x n))))))))))))"
+lemma MCLAURIN_ALL_LT: "ALL (f::real => real) diff::nat => real => real.
+ diff 0 = f &
+ (ALL (m::nat) x::real. diffl (diff m) (diff (Suc m) x) x) -->
+ (ALL (x::real) n::nat.
+ x ~= 0 & 0 < n -->
+ (EX t::real.
+ 0 < abs t &
+ abs t < abs x &
+ f x =
+ real.sum (0, n) (%m::nat. diff m 0 / real (FACT m) * x ^ m) +
+ diff n t / real (FACT n) * x ^ n))"
by (import transc MCLAURIN_ALL_LT)
-lemma MCLAURIN_ZERO: "(All::((nat => real => real) => bool) => bool)
- (%diff::nat => real => real.
- (All::(nat => bool) => bool)
- (%n::nat.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op =::real => real => bool) x (0::real))
- ((op <::nat => nat => bool) (0::nat) n))
- ((op =::real => real => bool)
- ((real.sum::nat * nat => (nat => real) => real)
- ((Pair::nat => nat => nat * nat) (0::nat) n)
- (%m::nat.
- (op *::real => real => real)
- ((op /::real => real => real) (diff m (0::real))
- ((real::nat => real) ((FACT::nat => nat) m)))
- ((op ^::real => nat => real) x m)))
- (diff (0::nat) (0::real))))))"
+lemma MCLAURIN_ZERO: "ALL (diff::nat => real => real) (n::nat) x::real.
+ x = 0 & 0 < n -->
+ real.sum (0, n) (%m::nat. diff m 0 / real (FACT m) * x ^ m) = diff 0 0"
by (import transc MCLAURIN_ZERO)
-lemma MCLAURIN_ALL_LE: "(All::((real => real) => bool) => bool)
- (%f::real => real.
- (All::((nat => real => real) => bool) => bool)
- (%diff::nat => real => real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- (diff (0::nat)) f)
- ((All::(nat => bool) => bool)
- (%m::nat.
- (All::(real => bool) => bool)
- (%x::real.
- (diffl::(real => real) => real => real => bool)
- (diff m) (diff ((Suc::nat => nat) m) x) x))))
- ((All::(real => bool) => bool)
- (%x::real.
- (All::(nat => bool) => bool)
- (%n::nat.
- (Ex::(real => bool) => bool)
- (%t::real.
- (op &::bool => bool => bool)
- ((op <=::real => real => bool)
- ((abs::real => real) t)
- ((abs::real => real) x))
- ((op =::real => real => bool) (f x)
- ((op +::real => real => real)
- ((real.sum::nat * nat
- => (nat => real) => real)
- ((Pair::nat => nat => nat * nat) (0::nat)
- n)
- (%m::nat.
-(op *::real => real => real)
- ((op /::real => real => real) (diff m (0::real))
- ((real::nat => real) ((FACT::nat => nat) m)))
- ((op ^::real => nat => real) x m)))
- ((op *::real => real => real)
- ((op /::real => real => real) (diff n t)
- ((real::nat => real)
-((FACT::nat => nat) n)))
- ((op ^::real => nat => real) x n))))))))))"
+lemma MCLAURIN_ALL_LE: "ALL (f::real => real) diff::nat => real => real.
+ diff 0 = f &
+ (ALL (m::nat) x::real. diffl (diff m) (diff (Suc m) x) x) -->
+ (ALL (x::real) n::nat.
+ EX t::real.
+ abs t <= abs x &
+ f x =
+ real.sum (0, n) (%m::nat. diff m 0 / real (FACT m) * x ^ m) +
+ diff n t / real (FACT n) * x ^ n)"
by (import transc MCLAURIN_ALL_LE)
-lemma MCLAURIN_EXP_LT: "(All::(real => bool) => bool)
- (%x::real.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::real => real => bool) x (0::real)))
- ((op <::nat => nat => bool) (0::nat) n))
- ((Ex::(real => bool) => bool)
- (%xa::real.
- (op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real)
- ((abs::real => real) xa))
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) ((abs::real => real) xa)
- ((abs::real => real) x))
- ((op =::real => real => bool) ((exp::real => real) x)
- ((op +::real => real => real)
- ((real.sum::nat * nat => (nat => real) => real)
- ((Pair::nat => nat => nat * nat) (0::nat) n)
- (%m::nat.
- (op /::real => real => real)
- ((op ^::real => nat => real) x m)
- ((real::nat => real)
- ((FACT::nat => nat) m))))
- ((op *::real => real => real)
- ((op /::real => real => real)
- ((exp::real => real) xa)
- ((real::nat => real) ((FACT::nat => nat) n)))
- ((op ^::real => nat => real) x n)))))))))"
+lemma MCLAURIN_EXP_LT: "ALL (x::real) n::nat.
+ x ~= 0 & 0 < n -->
+ (EX xa::real.
+ 0 < abs xa &
+ abs xa < abs x &
+ exp x =
+ real.sum (0, n) (%m::nat. x ^ m / real (FACT m)) +
+ exp xa / real (FACT n) * x ^ n)"
by (import transc MCLAURIN_EXP_LT)
lemma MCLAURIN_EXP_LE: "ALL (x::real) n::nat.
@@ -6748,21 +3250,9 @@
exp xa / real (FACT n) * x ^ n"
by (import transc MCLAURIN_EXP_LE)
-lemma DIFF_LN_COMPOSITE: "(All::((real => real) => bool) => bool)
- (%g::real => real.
- (All::(real => bool) => bool)
- (%m::real.
- (All::(real => bool) => bool)
- (%x::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((diffl::(real => real) => real => real => bool) g m x)
- ((op <::real => real => bool) (0::real) (g x)))
- ((diffl::(real => real) => real => real => bool)
- (%x::real. (ln::real => real) (g x))
- ((op *::real => real => real)
- ((inverse::real => real) (g x)) m)
- x))))"
+lemma DIFF_LN_COMPOSITE: "ALL (g::real => real) (m::real) x::real.
+ diffl g m x & 0 < g x -->
+ diffl (%x::real. ln (g x)) (inverse (g x) * m) x"
by (import transc DIFF_LN_COMPOSITE)
;end_setup
@@ -6885,78 +3375,20 @@
lemma POLY_CONT: "ALL l::real list. All (contl (poly l))"
by (import poly POLY_CONT)
-lemma POLY_IVT_POS: "(All::(real list => bool) => bool)
- (%x::real list.
- (All::(real => bool) => bool)
- (%xa::real.
- (All::(real => bool) => bool)
- (%xb::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) xa xb)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool)
- ((poly::real list => real => real) x xa) (0::real))
- ((op <::real => real => bool) (0::real)
- ((poly::real list => real => real) x xb))))
- ((Ex::(real => bool) => bool)
- (%xc::real.
- (op &::bool => bool => bool)
- ((op <::real => real => bool) xa xc)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) xc xb)
- ((op =::real => real => bool)
- ((poly::real list => real => real) x xc)
- (0::real))))))))"
+lemma POLY_IVT_POS: "ALL (x::real list) (xa::real) xb::real.
+ xa < xb & poly x xa < 0 & 0 < poly x xb -->
+ (EX xc::real. xa < xc & xc < xb & poly x xc = 0)"
by (import poly POLY_IVT_POS)
-lemma POLY_IVT_NEG: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) a b)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) (0::real)
- ((poly::real list => real => real) p a))
- ((op <::real => real => bool)
- ((poly::real list => real => real) p b) (0::real))))
- ((Ex::(real => bool) => bool)
- (%x::real.
- (op &::bool => bool => bool)
- ((op <::real => real => bool) a x)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) x b)
- ((op =::real => real => bool)
- ((poly::real list => real => real) p x)
- (0::real))))))))"
+lemma POLY_IVT_NEG: "ALL (p::real list) (a::real) b::real.
+ a < b & 0 < poly p a & poly p b < 0 -->
+ (EX x::real. a < x & x < b & poly p x = 0)"
by (import poly POLY_IVT_NEG)
-lemma POLY_MVT: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(real => bool) => bool)
- (%b::real.
- (op -->::bool => bool => bool)
- ((op <::real => real => bool) a b)
- ((Ex::(real => bool) => bool)
- (%x::real.
- (op &::bool => bool => bool)
- ((op <::real => real => bool) a x)
- ((op &::bool => bool => bool)
- ((op <::real => real => bool) x b)
- ((op =::real => real => bool)
- ((op -::real => real => real)
- ((poly::real list => real => real) p b)
- ((poly::real list => real => real) p a))
- ((op *::real => real => real)
- ((op -::real => real => real) b a)
- ((poly::real list => real => real)
- ((diff::real list => real list) p) x)))))))))"
+lemma POLY_MVT: "ALL (p::real list) (a::real) b::real.
+ a < b -->
+ (EX x::real.
+ a < x & x < b & poly p b - poly p a = (b - a) * poly (diff p) x)"
by (import poly POLY_MVT)
lemma POLY_ADD_RZERO: "ALL x::real list. poly (poly_add x []) = poly x"
@@ -7146,25 +3578,8 @@
((op =::real => real => bool) x (i n)))))))))"
by (import poly POLY_ROOTS_FINITE)
-lemma POLY_ENTIRE_LEMMA: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(real list => bool) => bool)
- (%q::real list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real) p)
- ((poly::real list => real => real) ([]::real list))))
- ((Not::bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real) q)
- ((poly::real list => real => real) ([]::real list)))))
- ((Not::bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real)
- ((poly_mul::real list => real list => real list) p q))
- ((poly::real list => real => real) ([]::real list))))))"
+lemma POLY_ENTIRE_LEMMA: "ALL (p::real list) q::real list.
+ poly p ~= poly [] & poly q ~= poly [] --> poly (poly_mul p q) ~= poly []"
by (import poly POLY_ENTIRE_LEMMA)
lemma POLY_ENTIRE: "ALL (p::real list) q::real list.
@@ -7186,20 +3601,8 @@
lemma POLY_EXP_PRIME_EQ_0: "ALL (a::real) n::nat. poly (poly_exp [a, 1] n) ~= poly []"
by (import poly POLY_EXP_PRIME_EQ_0)
-lemma POLY_ZERO_LEMMA: "(All::(real => bool) => bool)
- (%h::real.
- (All::(real list => bool) => bool)
- (%t::real list.
- (op -->::bool => bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real)
- ((op #::real => real list => real list) h t))
- ((poly::real list => real => real) ([]::real list)))
- ((op &::bool => bool => bool)
- ((op =::real => real => bool) h (0::real))
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real) t)
- ((poly::real list => real => real) ([]::real list))))))"
+lemma POLY_ZERO_LEMMA: "ALL (h::real) t::real list.
+ poly (h # t) = poly [] --> h = 0 & poly t = poly []"
by (import poly POLY_ZERO_LEMMA)
lemma POLY_ZERO: "ALL t::real list. (poly t = poly []) = list_all (%c::real. c = 0) t"
@@ -7210,47 +3613,15 @@
list_all (%c::real. c = 0) t"
by (import poly POLY_DIFF_AUX_ISZERO)
-lemma POLY_DIFF_ISZERO: "(All::(real list => bool) => bool)
- (%x::real list.
- (op -->::bool => bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real)
- ((diff::real list => real list) x))
- ((poly::real list => real => real) ([]::real list)))
- ((Ex::(real => bool) => bool)
- (%h::real.
- (op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real) x)
- ((poly::real list => real => real)
- ((op #::real => real list => real list) h
- ([]::real list))))))"
+lemma POLY_DIFF_ISZERO: "ALL x::real list.
+ poly (diff x) = poly [] --> (EX h::real. poly x = poly [h])"
by (import poly POLY_DIFF_ISZERO)
-lemma POLY_DIFF_ZERO: "(All::(real list => bool) => bool)
- (%x::real list.
- (op -->::bool => bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real) x)
- ((poly::real list => real => real) ([]::real list)))
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real)
- ((diff::real list => real list) x))
- ((poly::real list => real => real) ([]::real list))))"
+lemma POLY_DIFF_ZERO: "ALL x::real list. poly x = poly [] --> poly (diff x) = poly []"
by (import poly POLY_DIFF_ZERO)
-lemma POLY_DIFF_WELLDEF: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(real list => bool) => bool)
- (%q::real list.
- (op -->::bool => bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real) p)
- ((poly::real list => real => real) q))
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real)
- ((diff::real list => real list) p))
- ((poly::real list => real => real)
- ((diff::real list => real list) q)))))"
+lemma POLY_DIFF_WELLDEF: "ALL (p::real list) q::real list.
+ poly p = poly q --> poly (diff p) = poly (diff q)"
by (import poly POLY_DIFF_WELLDEF)
constdefs
@@ -7271,168 +3642,45 @@
lemma POLY_DIVIDES_REFL: "ALL p::real list. poly_divides p p"
by (import poly POLY_DIVIDES_REFL)
-lemma POLY_DIVIDES_TRANS: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(real list => bool) => bool)
- (%q::real list.
- (All::(real list => bool) => bool)
- (%r::real list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((poly_divides::real list => real list => bool) p q)
- ((poly_divides::real list => real list => bool) q r))
- ((poly_divides::real list => real list => bool) p r))))"
+lemma POLY_DIVIDES_TRANS: "ALL (p::real list) (q::real list) r::real list.
+ poly_divides p q & poly_divides q r --> poly_divides p r"
by (import poly POLY_DIVIDES_TRANS)
-lemma POLY_DIVIDES_EXP: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(nat => bool) => bool)
- (%m::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op <=::nat => nat => bool) m n)
- ((poly_divides::real list => real list => bool)
- ((poly_exp::real list => nat => real list) p m)
- ((poly_exp::real list => nat => real list) p n)))))"
+lemma POLY_DIVIDES_EXP: "ALL (p::real list) (m::nat) n::nat.
+ m <= n --> poly_divides (poly_exp p m) (poly_exp p n)"
by (import poly POLY_DIVIDES_EXP)
-lemma POLY_EXP_DIVIDES: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(real list => bool) => bool)
- (%q::real list.
- (All::(nat => bool) => bool)
- (%m::nat.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((poly_divides::real list => real list => bool)
- ((poly_exp::real list => nat => real list) p n) q)
- ((op <=::nat => nat => bool) m n))
- ((poly_divides::real list => real list => bool)
- ((poly_exp::real list => nat => real list) p m)
- q)))))"
+lemma POLY_EXP_DIVIDES: "ALL (p::real list) (q::real list) (m::nat) n::nat.
+ poly_divides (poly_exp p n) q & m <= n --> poly_divides (poly_exp p m) q"
by (import poly POLY_EXP_DIVIDES)
-lemma POLY_DIVIDES_ADD: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(real list => bool) => bool)
- (%q::real list.
- (All::(real list => bool) => bool)
- (%r::real list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((poly_divides::real list => real list => bool) p q)
- ((poly_divides::real list => real list => bool) p r))
- ((poly_divides::real list => real list => bool) p
- ((poly_add::real list => real list => real list) q r)))))"
+lemma POLY_DIVIDES_ADD: "ALL (p::real list) (q::real list) r::real list.
+ poly_divides p q & poly_divides p r --> poly_divides p (poly_add q r)"
by (import poly POLY_DIVIDES_ADD)
-lemma POLY_DIVIDES_SUB: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(real list => bool) => bool)
- (%q::real list.
- (All::(real list => bool) => bool)
- (%r::real list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((poly_divides::real list => real list => bool) p q)
- ((poly_divides::real list => real list => bool) p
- ((poly_add::real list => real list => real list) q r)))
- ((poly_divides::real list => real list => bool) p r))))"
+lemma POLY_DIVIDES_SUB: "ALL (p::real list) (q::real list) r::real list.
+ poly_divides p q & poly_divides p (poly_add q r) --> poly_divides p r"
by (import poly POLY_DIVIDES_SUB)
-lemma POLY_DIVIDES_SUB2: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(real list => bool) => bool)
- (%q::real list.
- (All::(real list => bool) => bool)
- (%r::real list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((poly_divides::real list => real list => bool) p r)
- ((poly_divides::real list => real list => bool) p
- ((poly_add::real list => real list => real list) q r)))
- ((poly_divides::real list => real list => bool) p q))))"
+lemma POLY_DIVIDES_SUB2: "ALL (p::real list) (q::real list) r::real list.
+ poly_divides p r & poly_divides p (poly_add q r) --> poly_divides p q"
by (import poly POLY_DIVIDES_SUB2)
-lemma POLY_DIVIDES_ZERO: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(real list => bool) => bool)
- (%q::real list.
- (op -->::bool => bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real) p)
- ((poly::real list => real => real) ([]::real list)))
- ((poly_divides::real list => real list => bool) q p)))"
+lemma POLY_DIVIDES_ZERO: "ALL (p::real list) q::real list. poly p = poly [] --> poly_divides q p"
by (import poly POLY_DIVIDES_ZERO)
-lemma POLY_ORDER_EXISTS: "(All::(real => bool) => bool)
- (%a::real.
- (All::(nat => bool) => bool)
- (%d::nat.
- (All::(real list => bool) => bool)
- (%p::real list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((op =::nat => nat => bool) ((size::real list => nat) p)
- d)
- ((Not::bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real) p)
- ((poly::real list => real => real) ([]::real list)))))
- ((Ex::(nat => bool) => bool)
- (%x::nat.
- (op &::bool => bool => bool)
- ((poly_divides::real list => real list => bool)
- ((poly_exp::real list => nat => real list)
- ((op #::real => real list => real list)
- ((uminus::real => real) a)
- ((op #::real => real list => real list)
- (1::real) ([]::real list)))
- x)
- p)
- ((Not::bool => bool)
- ((poly_divides::real list => real list => bool)
- ((poly_exp::real list => nat => real list)
- ((op #::real => real list => real list)
- ((uminus::real => real) a)
- ((op #::real => real list => real list)
- (1::real) ([]::real list)))
- ((Suc::nat => nat) x))
- p)))))))"
+lemma POLY_ORDER_EXISTS: "ALL (a::real) (d::nat) p::real list.
+ length p = d & poly p ~= poly [] -->
+ (EX x::nat.
+ poly_divides (poly_exp [- a, 1] x) p &
+ ~ poly_divides (poly_exp [- a, 1] (Suc x)) p)"
by (import poly POLY_ORDER_EXISTS)
-lemma POLY_ORDER: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(real => bool) => bool)
- (%a::real.
- (op -->::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real) p)
- ((poly::real list => real => real) ([]::real list))))
- ((Ex1::(nat => bool) => bool)
- (%n::nat.
- (op &::bool => bool => bool)
- ((poly_divides::real list => real list => bool)
- ((poly_exp::real list => nat => real list)
- ((op #::real => real list => real list)
- ((uminus::real => real) a)
- ((op #::real => real list => real list) (1::real)
- ([]::real list)))
- n)
- p)
- ((Not::bool => bool)
- ((poly_divides::real list => real list => bool)
- ((poly_exp::real list => nat => real list)
- ((op #::real => real list => real list)
- ((uminus::real => real) a)
- ((op #::real => real list => real list) (1::real)
- ([]::real list)))
- ((Suc::nat => nat) n))
- p))))))"
+lemma POLY_ORDER: "ALL (p::real list) a::real.
+ poly p ~= poly [] -->
+ (EX! n::nat.
+ poly_divides (poly_exp [- a, 1] n) p &
+ ~ poly_divides (poly_exp [- a, 1] (Suc n)) p)"
by (import poly POLY_ORDER)
constdefs
@@ -7456,83 +3704,21 @@
(n = poly_order a p & poly p ~= poly [])"
by (import poly ORDER)
-lemma ORDER_THM: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(real => bool) => bool)
- (%a::real.
- (op -->::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real) p)
- ((poly::real list => real => real) ([]::real list))))
- ((op &::bool => bool => bool)
- ((poly_divides::real list => real list => bool)
- ((poly_exp::real list => nat => real list)
- ((op #::real => real list => real list)
- ((uminus::real => real) a)
- ((op #::real => real list => real list) (1::real)
- ([]::real list)))
- ((poly_order::real => real list => nat) a p))
- p)
- ((Not::bool => bool)
- ((poly_divides::real list => real list => bool)
- ((poly_exp::real list => nat => real list)
- ((op #::real => real list => real list)
- ((uminus::real => real) a)
- ((op #::real => real list => real list) (1::real)
- ([]::real list)))
- ((Suc::nat => nat)
- ((poly_order::real => real list => nat) a p)))
- p)))))"
+lemma ORDER_THM: "ALL (p::real list) a::real.
+ poly p ~= poly [] -->
+ poly_divides (poly_exp [- a, 1] (poly_order a p)) p &
+ ~ poly_divides (poly_exp [- a, 1] (Suc (poly_order a p))) p"
by (import poly ORDER_THM)
-lemma ORDER_UNIQUE: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(real => bool) => bool)
- (%a::real.
- (All::(nat => bool) => bool)
- (%n::nat.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real) p)
- ((poly::real list => real => real) ([]::real list))))
- ((op &::bool => bool => bool)
- ((poly_divides::real list => real list => bool)
- ((poly_exp::real list => nat => real list)
- ((op #::real => real list => real list)
- ((uminus::real => real) a)
- ((op #::real => real list => real list) (1::real)
- ([]::real list)))
- n)
- p)
- ((Not::bool => bool)
- ((poly_divides::real list => real list => bool)
- ((poly_exp::real list => nat => real list)
- ((op #::real => real list => real list)
- ((uminus::real => real) a)
- ((op #::real => real list => real list)
- (1::real) ([]::real list)))
- ((Suc::nat => nat) n))
- p))))
- ((op =::nat => nat => bool) n
- ((poly_order::real => real list => nat) a p)))))"
+lemma ORDER_UNIQUE: "ALL (p::real list) (a::real) n::nat.
+ poly p ~= poly [] &
+ poly_divides (poly_exp [- a, 1] n) p &
+ ~ poly_divides (poly_exp [- a, 1] (Suc n)) p -->
+ n = poly_order a p"
by (import poly ORDER_UNIQUE)
-lemma ORDER_POLY: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(real list => bool) => bool)
- (%q::real list.
- (All::(real => bool) => bool)
- (%a::real.
- (op -->::bool => bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real) p)
- ((poly::real list => real => real) q))
- ((op =::nat => nat => bool)
- ((poly_order::real => real list => nat) a p)
- ((poly_order::real => real list => nat) a q)))))"
+lemma ORDER_POLY: "ALL (p::real list) (q::real list) a::real.
+ poly p = poly q --> poly_order a p = poly_order a q"
by (import poly ORDER_POLY)
lemma ORDER_ROOT: "ALL (p::real list) a::real.
@@ -7544,128 +3730,30 @@
(poly p = poly [] | n <= poly_order a p)"
by (import poly ORDER_DIVIDES)
-lemma ORDER_DECOMP: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(real => bool) => bool)
- (%a::real.
- (op -->::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real) p)
- ((poly::real list => real => real) ([]::real list))))
- ((Ex::(real list => bool) => bool)
- (%x::real list.
- (op &::bool => bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real) p)
- ((poly::real list => real => real)
- ((poly_mul::real list => real list => real list)
- ((poly_exp::real list => nat => real list)
- ((op #::real => real list => real list)
- ((uminus::real => real) a)
- ((op #::real => real list => real list)
- (1::real) ([]::real list)))
- ((poly_order::real => real list => nat) a p))
- x)))
- ((Not::bool => bool)
- ((poly_divides::real list => real list => bool)
- ((op #::real => real list => real list)
- ((uminus::real => real) a)
- ((op #::real => real list => real list) (1::real)
- ([]::real list)))
- x))))))"
+lemma ORDER_DECOMP: "ALL (p::real list) a::real.
+ poly p ~= poly [] -->
+ (EX x::real list.
+ poly p = poly (poly_mul (poly_exp [- a, 1] (poly_order a p)) x) &
+ ~ poly_divides [- a, 1] x)"
by (import poly ORDER_DECOMP)
-lemma ORDER_MUL: "(All::(real => bool) => bool)
- (%a::real.
- (All::(real list => bool) => bool)
- (%p::real list.
- (All::(real list => bool) => bool)
- (%q::real list.
- (op -->::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real)
- ((poly_mul::real list => real list => real list) p q))
- ((poly::real list => real => real) ([]::real list))))
- ((op =::nat => nat => bool)
- ((poly_order::real => real list => nat) a
- ((poly_mul::real list => real list => real list) p q))
- ((op +::nat => nat => nat)
- ((poly_order::real => real list => nat) a p)
- ((poly_order::real => real list => nat) a q))))))"
+lemma ORDER_MUL: "ALL (a::real) (p::real list) q::real list.
+ poly (poly_mul p q) ~= poly [] -->
+ poly_order a (poly_mul p q) = poly_order a p + poly_order a q"
by (import poly ORDER_MUL)
-lemma ORDER_DIFF: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(real => bool) => bool)
- (%a::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real)
- ((diff::real list => real list) p))
- ((poly::real list => real => real) ([]::real list))))
- ((Not::bool => bool)
- ((op =::nat => nat => bool)
- ((poly_order::real => real list => nat) a p) (0::nat))))
- ((op =::nat => nat => bool)
- ((poly_order::real => real list => nat) a p)
- ((Suc::nat => nat)
- ((poly_order::real => real list => nat) a
- ((diff::real list => real list) p))))))"
+lemma ORDER_DIFF: "ALL (p::real list) a::real.
+ poly (diff p) ~= poly [] & poly_order a p ~= 0 -->
+ poly_order a p = Suc (poly_order a (diff p))"
by (import poly ORDER_DIFF)
-lemma POLY_SQUAREFREE_DECOMP_ORDER: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(real list => bool) => bool)
- (%q::real list.
- (All::(real list => bool) => bool)
- (%d::real list.
- (All::(real list => bool) => bool)
- (%e::real list.
- (All::(real list => bool) => bool)
- (%r::real list.
- (All::(real list => bool) => bool)
- (%s::real list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::(real => real)
- => (real => real) => bool)
- ((poly::real list => real => real)
- ((diff::real list => real list) p))
- ((poly::real list => real => real)
- ([]::real list))))
- ((op &::bool => bool => bool)
- ((op =::(real => real)
- => (real => real) => bool)
- ((poly::real list => real => real) p)
- ((poly::real list => real => real)
- ((poly_mul::real list => real list => real list) q d)))
- ((op &::bool => bool => bool)
- ((op =::(real => real)
- => (real => real) => bool)
- ((poly::real list => real => real) ((diff::real list => real list) p))
- ((poly::real list => real => real)
- ((poly_mul::real list => real list => real list) e d)))
- ((op =::(real => real)
- => (real => real) => bool)
- ((poly::real list => real => real) d)
- ((poly::real list => real => real)
- ((poly_add::real list => real list => real list)
- ((poly_mul::real list => real list => real list) r p)
- ((poly_mul::real list => real list => real list) s
- ((diff::real list => real list) p))))))))
- ((All::(real => bool) => bool)
- (%a::real.
- (op =::nat => nat => bool)
-((poly_order::real => real list => nat) a q)
-((If::bool => nat => nat => nat)
- ((op =::nat => nat => bool) ((poly_order::real => real list => nat) a p)
- (0::nat))
- (0::nat) (1::nat))))))))))"
+lemma POLY_SQUAREFREE_DECOMP_ORDER: "ALL (p::real list) (q::real list) (d::real list) (e::real list)
+ (r::real list) s::real list.
+ poly (diff p) ~= poly [] &
+ poly p = poly (poly_mul q d) &
+ poly (diff p) = poly (poly_mul e d) &
+ poly d = poly (poly_add (poly_mul r p) (poly_mul s (diff p))) -->
+ (ALL a::real. poly_order a q = (if poly_order a p = 0 then 0 else 1))"
by (import poly POLY_SQUAREFREE_DECOMP_ORDER)
constdefs
@@ -7685,83 +3773,18 @@
rsquarefree p = (ALL a::real. ~ (poly p a = 0 & poly (diff p) a = 0))"
by (import poly RSQUAREFREE_ROOTS)
-lemma RSQUAREFREE_DECOMP: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(real => bool) => bool)
- (%a::real.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((rsquarefree::real list => bool) p)
- ((op =::real => real => bool)
- ((poly::real list => real => real) p a) (0::real)))
- ((Ex::(real list => bool) => bool)
- (%q::real list.
- (op &::bool => bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real) p)
- ((poly::real list => real => real)
- ((poly_mul::real list => real list => real list)
- ((op #::real => real list => real list)
- ((uminus::real => real) a)
- ((op #::real => real list => real list) (1::real)
- ([]::real list)))
- q)))
- ((Not::bool => bool)
- ((op =::real => real => bool)
- ((poly::real list => real => real) q a)
- (0::real)))))))"
+lemma RSQUAREFREE_DECOMP: "ALL (p::real list) a::real.
+ rsquarefree p & poly p a = 0 -->
+ (EX q::real list. poly p = poly (poly_mul [- a, 1] q) & poly q a ~= 0)"
by (import poly RSQUAREFREE_DECOMP)
-lemma POLY_SQUAREFREE_DECOMP: "(All::(real list => bool) => bool)
- (%p::real list.
- (All::(real list => bool) => bool)
- (%q::real list.
- (All::(real list => bool) => bool)
- (%d::real list.
- (All::(real list => bool) => bool)
- (%e::real list.
- (All::(real list => bool) => bool)
- (%r::real list.
- (All::(real list => bool) => bool)
- (%s::real list.
- (op -->::bool => bool => bool)
- ((op &::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::(real => real)
- => (real => real) => bool)
- ((poly::real list => real => real)
- ((diff::real list => real list) p))
- ((poly::real list => real => real)
- ([]::real list))))
- ((op &::bool => bool => bool)
- ((op =::(real => real)
- => (real => real) => bool)
- ((poly::real list => real => real) p)
- ((poly::real list => real => real)
- ((poly_mul::real list => real list => real list) q d)))
- ((op &::bool => bool => bool)
- ((op =::(real => real)
- => (real => real) => bool)
- ((poly::real list => real => real) ((diff::real list => real list) p))
- ((poly::real list => real => real)
- ((poly_mul::real list => real list => real list) e d)))
- ((op =::(real => real)
- => (real => real) => bool)
- ((poly::real list => real => real) d)
- ((poly::real list => real => real)
- ((poly_add::real list => real list => real list)
- ((poly_mul::real list => real list => real list) r p)
- ((poly_mul::real list => real list => real list) s
- ((diff::real list => real list) p))))))))
- ((op &::bool => bool => bool)
- ((rsquarefree::real list => bool) q)
- ((All::(real => bool) => bool)
- (%x::real.
- (op =::bool => bool => bool)
- ((op =::real => real => bool) ((poly::real list => real => real) q x)
- (0::real))
- ((op =::real => real => bool) ((poly::real list => real => real) p x)
- (0::real)))))))))))"
+lemma POLY_SQUAREFREE_DECOMP: "ALL (p::real list) (q::real list) (d::real list) (e::real list)
+ (r::real list) s::real list.
+ poly (diff p) ~= poly [] &
+ poly p = poly (poly_mul q d) &
+ poly (diff p) = poly (poly_mul e d) &
+ poly d = poly (poly_add (poly_mul r p) (poly_mul s (diff p))) -->
+ rsquarefree q & (ALL x::real. (poly q x = 0) = (poly p x = 0))"
by (import poly POLY_SQUAREFREE_DECOMP)
consts
@@ -7784,45 +3807,15 @@
lemma degree: "ALL p::real list. degree p = PRE (length (normalize p))"
by (import poly degree)
-lemma DEGREE_ZERO: "(All::(real list => bool) => bool)
- (%p::real list.
- (op -->::bool => bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real) p)
- ((poly::real list => real => real) ([]::real list)))
- ((op =::nat => nat => bool) ((degree::real list => nat) p) (0::nat)))"
+lemma DEGREE_ZERO: "ALL p::real list. poly p = poly [] --> degree p = 0"
by (import poly DEGREE_ZERO)
-lemma POLY_ROOTS_FINITE_SET: "(All::(real list => bool) => bool)
- (%p::real list.
- (op -->::bool => bool => bool)
- ((Not::bool => bool)
- ((op =::(real => real) => (real => real) => bool)
- ((poly::real list => real => real) p)
- ((poly::real list => real => real) ([]::real list))))
- ((FINITE::(real => bool) => bool)
- ((GSPEC::(real => real * bool) => real => bool)
- (%x::real.
- (Pair::real => bool => real * bool) x
- ((op =::real => real => bool)
- ((poly::real list => real => real) p x) (0::real))))))"
+lemma POLY_ROOTS_FINITE_SET: "ALL p::real list.
+ poly p ~= poly [] --> FINITE (GSPEC (%x::real. (x, poly p x = 0)))"
by (import poly POLY_ROOTS_FINITE_SET)
-lemma POLY_MONO: "(All::(real => bool) => bool)
- (%x::real.
- (All::(real => bool) => bool)
- (%k::real.
- (All::(real list => bool) => bool)
- (%xa::real list.
- (op -->::bool => bool => bool)
- ((op <=::real => real => bool) ((abs::real => real) x) k)
- ((op <=::real => real => bool)
- ((abs::real => real)
- ((poly::real list => real => real) xa x))
- ((poly::real list => real => real)
- ((map::(real => real) => real list => real list)
- (abs::real => real) xa)
- k)))))"
+lemma POLY_MONO: "ALL (x::real) (k::real) xa::real list.
+ abs x <= k --> abs (poly xa x) <= poly (map abs xa) k"
by (import poly POLY_MONO)
;end_setup
--- a/src/HOL/Import/HOL/bool.imp Wed Sep 28 11:50:15 2005 +0200
+++ b/src/HOL/Import/HOL/bool.imp Wed Sep 28 13:17:23 2005 +0200
@@ -37,7 +37,7 @@
"bool_case_thm" > "HOL4Base.bool.bool_case_thm"
"bool_case_ID" > "HOL4Base.bool.bool_case_ID"
"bool_case_DEF" > "HOL4Compat.bool_case_DEF"
- "bool_INDUCT" > "Datatype.bool.induct_correctness"
+ "bool_INDUCT" > "Datatype.bool.induct"
"boolAxiom" > "HOL4Base.bool.boolAxiom"
"UNWIND_THM2" > "HOL.simp_thms_39"
"UNWIND_THM1" > "HOL.simp_thms_40"
--- a/src/HOL/Import/HOL/pair.imp Wed Sep 28 11:50:15 2005 +0200
+++ b/src/HOL/Import/HOL/pair.imp Wed Sep 28 13:17:23 2005 +0200
@@ -21,7 +21,7 @@
"##" > "prod_fun"
thm_maps
- "pair_induction" > "Datatype.prod.induct_correctness"
+ "pair_induction" > "Datatype.prod.induct"
"pair_case_thm" > "Product_Type.split"
"pair_case_def" > "HOL4Compat.pair_case_def"
"pair_case_cong" > "HOL4Base.pair.pair_case_cong"
--- a/src/HOL/Import/HOL/seq.imp Wed Sep 28 11:50:15 2005 +0200
+++ b/src/HOL/Import/HOL/seq.imp Wed Sep 28 13:17:23 2005 +0200
@@ -9,9 +9,9 @@
"subseq" > "subseq_def"
"mono" > "mono_def"
"lim" > "lim_def"
+ "hol4-->" > "hol4-->_def"
"convergent" > "convergent_def"
"cauchy" > "cauchy_def"
- "-->" > "-->_def"
const_maps
"sums" > "HOL4Real.seq.sums"
@@ -20,9 +20,12 @@
"subseq" > "HOL4Real.seq.subseq"
"mono" > "HOL4Real.seq.mono"
"lim" > "HOL4Real.seq.lim"
+ "hol4-->" > "HOL4Real.seq.hol4-->"
"convergent" > "HOL4Real.seq.convergent"
"cauchy" > "HOL4Real.seq.cauchy"
- "-->" > "HOL4Real.seq.-->"
+
+const_renames
+ "-->" > "hol4-->"
thm_maps
"tends_num_real" > "HOL4Real.seq.tends_num_real"
@@ -38,6 +41,7 @@
"mono" > "HOL4Real.seq.mono"
"lim_def" > "HOL4Real.seq.lim_def"
"lim" > "HOL4Real.seq.lim"
+ "hol4-->_def" > "HOL4Real.seq.hol4-->_def"
"convergent_def" > "HOL4Real.seq.convergent_def"
"convergent" > "HOL4Real.seq.convergent"
"cauchy_def" > "HOL4Real.seq.cauchy_def"
@@ -104,6 +108,5 @@
"GP" > "HOL4Real.seq.GP"
"BOLZANO_LEMMA" > "HOL4Real.seq.BOLZANO_LEMMA"
"ABS_NEG_LEMMA" > "HOL4Real.seq.ABS_NEG_LEMMA"
- "-->_def" > "HOL4Real.seq.-->_def"
end