:: ASYMPT_0 semantic presentation

scheme :: ASYMPT_0:sch 1
s1{ F1() -> Nat, F2() -> Nat, F3() -> non empty set , F4( set ) -> Element of F3() } :
{ F4(b1) where B is Nat : ( F1() <= b1 & b1 <= F2() ) } is non empty finite Subset of F3()
provided
E1: F1() <= F2()
proof end;

scheme :: ASYMPT_0:sch 2
s2{ F1() -> Nat, F2() -> non empty set , F3( set ) -> Element of F2() } :
{ F3(b1) where B is Nat : b1 <= F1() } is non empty finite Subset of F2()
proof end;

scheme :: ASYMPT_0:sch 3
s3{ F1() -> Nat, F2() -> non empty set , F3( set ) -> Element of F2() } :
{ F3(b1) where B is Nat : b1 < F1() } is non empty finite Subset of F2()
provided
E1: F1() > 0
proof end;

definition
let c1 be real number ;
canceled;
canceled;
attr a1 is logbase means :Def3: :: ASYMPT_0:def 3
( a1 > 0 & a1 <> 1 );
end;

:: deftheorem Def1 ASYMPT_0:def 1 :
canceled;

:: deftheorem Def2 ASYMPT_0:def 2 :
canceled;

:: deftheorem Def3 defines logbase ASYMPT_0:def 3 :
for b1 being real number holds
( b1 is logbase iff ( b1 > 0 & b1 <> 1 ) );

registration
cluster positive Element of REAL ;
existence
ex b1 being Real st b1 is positive
proof end;
cluster negative Element of REAL ;
existence
ex b1 being Real st b1 is negative
proof end;
cluster logbase Element of REAL ;
existence
ex b1 being Real st b1 is logbase
proof end;
cluster non negative Element of REAL ;
existence
not for b1 being Real holds b1 is negative
by XREAL_0:def 4;
cluster non positive Element of REAL ;
existence
not for b1 being Real holds b1 is positive
by XREAL_0:def 3;
cluster non logbase Element of REAL ;
existence
not for b1 being Real holds b1 is logbase
proof end;
end;

definition
let c1 be Real_Sequence;
attr a1 is eventually-nonnegative means :Def4: :: ASYMPT_0:def 4
ex b1 being Nat st
for b2 being Nat st b2 >= b1 holds
a1 . b2 >= 0;
attr a1 is positive means :Def5: :: ASYMPT_0:def 5
for b1 being Nat holds a1 . b1 > 0;
attr a1 is eventually-positive means :Def6: :: ASYMPT_0:def 6
ex b1 being Nat st
for b2 being Nat st b2 >= b1 holds
a1 . b2 > 0;
attr a1 is eventually-nonzero means :Def7: :: ASYMPT_0:def 7
ex b1 being Nat st
for b2 being Nat st b2 >= b1 holds
a1 . b2 <> 0;
attr a1 is eventually-nondecreasing means :Def8: :: ASYMPT_0:def 8
ex b1 being Nat st
for b2 being Nat st b2 >= b1 holds
a1 . b2 <= a1 . (b2 + 1);
end;

:: deftheorem Def4 defines eventually-nonnegative ASYMPT_0:def 4 :
for b1 being Real_Sequence holds
( b1 is eventually-nonnegative iff ex b2 being Nat st
for b3 being Nat st b3 >= b2 holds
b1 . b3 >= 0 );

:: deftheorem Def5 defines positive ASYMPT_0:def 5 :
for b1 being Real_Sequence holds
( b1 is positive iff for b2 being Nat holds b1 . b2 > 0 );

:: deftheorem Def6 defines eventually-positive ASYMPT_0:def 6 :
for b1 being Real_Sequence holds
( b1 is eventually-positive iff ex b2 being Nat st
for b3 being Nat st b3 >= b2 holds
b1 . b3 > 0 );

:: deftheorem Def7 defines eventually-nonzero ASYMPT_0:def 7 :
for b1 being Real_Sequence holds
( b1 is eventually-nonzero iff ex b2 being Nat st
for b3 being Nat st b3 >= b2 holds
b1 . b3 <> 0 );

:: deftheorem Def8 defines eventually-nondecreasing ASYMPT_0:def 8 :
for b1 being Real_Sequence holds
( b1 is eventually-nondecreasing iff ex b2 being Nat st
for b3 being Nat st b3 >= b2 holds
b1 . b3 <= b1 . (b3 + 1) );

registration
cluster eventually-nonnegative positive eventually-positive eventually-nonzero eventually-nondecreasing M5( NAT , REAL );
existence
ex b1 being Real_Sequence st
( b1 is eventually-nonnegative & b1 is eventually-nonzero & b1 is positive & b1 is eventually-positive & b1 is eventually-nondecreasing )
proof end;
end;

registration
cluster positive -> eventually-positive M5( NAT , REAL );
coherence
for b1 being Real_Sequence st b1 is positive holds
b1 is eventually-positive
proof end;
cluster eventually-positive -> eventually-nonnegative eventually-nonzero M5( NAT , REAL );
coherence
for b1 being Real_Sequence st b1 is eventually-positive holds
( b1 is eventually-nonnegative & b1 is eventually-nonzero )
proof end;
cluster eventually-nonnegative eventually-nonzero -> eventually-positive M5( NAT , REAL );
coherence
for b1 being Real_Sequence st b1 is eventually-nonnegative & b1 is eventually-nonzero holds
b1 is eventually-positive
proof end;
end;

definition
let c1, c2 be eventually-nonnegative Real_Sequence;
redefine func + as c1 + c2 -> eventually-nonnegative Real_Sequence;
coherence
c1 + c2 is eventually-nonnegative Real_Sequence
proof end;
end;

definition
let c1 be Real_Sequence;
let c2 be real number ;
func c2 + c1 -> Real_Sequence means :Def9: :: ASYMPT_0:def 9
for b1 being Nat holds a3 . b1 = a2 + (a1 . b1);
existence
ex b1 being Real_Sequence st
for b2 being Nat holds b1 . b2 = c2 + (c1 . b2)
proof end;
uniqueness
for b1, b2 being Real_Sequence st ( for b3 being Nat holds b1 . b3 = c2 + (c1 . b3) ) & ( for b3 being Nat holds b2 . b3 = c2 + (c1 . b3) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def9 defines + ASYMPT_0:def 9 :
for b1 being Real_Sequence
for b2 being real number
for b3 being Real_Sequence holds
( b3 = b2 + b1 iff for b4 being Nat holds b3 . b4 = b2 + (b1 . b4) );

notation
let c1 be Real_Sequence;
let c2 be real number ;
synonym c1 + c2 for c2 + c1;
end;

definition
let c1 be eventually-nonnegative Real_Sequence;
let c2 be positive Real;
redefine func (#) as c2 (#) c1 -> eventually-nonnegative Real_Sequence;
coherence
c2 (#) c1 is eventually-nonnegative Real_Sequence
proof end;
end;

registration
let c1 be eventually-nonnegative Real_Sequence;
let c2 be non negative Real;
cluster a2 + a1 -> eventually-nonnegative ;
coherence
c2 + c1 is eventually-nonnegative
proof end;
end;

registration
let c1 be eventually-nonnegative Real_Sequence;
let c2 be positive Real;
cluster a2 + a1 -> eventually-nonnegative eventually-positive eventually-nonzero ;
coherence
c2 + c1 is eventually-positive
proof end;
end;

definition
let c1, c2 be Real_Sequence;
func max c1,c2 -> Real_Sequence means :Def10: :: ASYMPT_0:def 10
for b1 being Nat holds a3 . b1 = max (a1 . b1),(a2 . b1);
existence
ex b1 being Real_Sequence st
for b2 being Nat holds b1 . b2 = max (c1 . b2),(c2 . b2)
proof end;
uniqueness
for b1, b2 being Real_Sequence st ( for b3 being Nat holds b1 . b3 = max (c1 . b3),(c2 . b3) ) & ( for b3 being Nat holds b2 . b3 = max (c1 . b3),(c2 . b3) ) holds
b1 = b2
proof end;
commutativity
for b1, b2, b3 being Real_Sequence st ( for b4 being Nat holds b1 . b4 = max (b2 . b4),(b3 . b4) ) holds
for b4 being Nat holds b1 . b4 = max (b3 . b4),(b2 . b4)
;
end;

:: deftheorem Def10 defines max ASYMPT_0:def 10 :
for b1, b2, b3 being Real_Sequence holds
( b3 = max b1,b2 iff for b4 being Nat holds b3 . b4 = max (b1 . b4),(b2 . b4) );

registration
let c1 be Real_Sequence;
let c2 be eventually-nonnegative Real_Sequence;
cluster max a1,a2 -> eventually-nonnegative ;
coherence
max c1,c2 is eventually-nonnegative
proof end;
end;

registration
let c1 be Real_Sequence;
let c2 be eventually-positive Real_Sequence;
cluster max a1,a2 -> eventually-nonnegative eventually-positive eventually-nonzero ;
coherence
max c1,c2 is eventually-positive
proof end;
end;

definition
let c1, c2 be Real_Sequence;
pred c2 majorizes c1 means :Def11: :: ASYMPT_0:def 11
ex b1 being Nat st
for b2 being Nat st b2 >= b1 holds
a1 . b2 <= a2 . b2;
end;

:: deftheorem Def11 defines majorizes ASYMPT_0:def 11 :
for b1, b2 being Real_Sequence holds
( b2 majorizes b1 iff ex b3 being Nat st
for b4 being Nat st b4 >= b3 holds
b1 . b4 <= b2 . b4 );

Lemma10: for b1, b2 being Real_Sequence
for b3 being Nat holds (b1 /" b2) . b3 = (b1 . b3) / (b2 . b3)
proof end;

theorem Th1: :: ASYMPT_0:1
for b1 being Real_Sequence
for b2 being Nat st ( for b3 being Nat st b3 >= b2 holds
b1 . b3 <= b1 . (b3 + 1) ) holds
for b3, b4 being Nat st b2 <= b3 & b3 <= b4 holds
b1 . b3 <= b1 . b4
proof end;

theorem Th2: :: ASYMPT_0:2
for b1, b2 being eventually-positive Real_Sequence st b1 /" b2 is convergent & lim (b1 /" b2) <> 0 holds
( b2 /" b1 is convergent & lim (b2 /" b1) = (lim (b1 /" b2)) " )
proof end;

theorem Th3: :: ASYMPT_0:3
for b1 being eventually-nonnegative Real_Sequence st b1 is convergent holds
0 <= lim b1
proof end;

theorem Th4: :: ASYMPT_0:4
for b1, b2 being Real_Sequence st b1 is convergent & b2 is convergent & b2 majorizes b1 holds
lim b1 <= lim b2
proof end;

theorem Th5: :: ASYMPT_0:5
for b1 being Real_Sequence
for b2 being eventually-nonzero Real_Sequence st b1 /" b2 is divergent_to+infty holds
( b2 /" b1 is convergent & lim (b2 /" b1) = 0 )
proof end;

definition
let c1 be eventually-nonnegative Real_Sequence;
func Big_Oh c1 -> FUNCTION_DOMAIN of NAT , REAL equals :: ASYMPT_0:def 12
{ b1 where B is Element of Funcs NAT ,REAL : ex b1 being Realex b2 being Nat st
( b2 > 0 & ( for b3 being Nat st b4 >= b3 holds
( b1 . b4 <= b2 * (a1 . b4) & b1 . b4 >= 0 ) ) )
}
;
coherence
{ b1 where B is Element of Funcs NAT ,REAL : ex b1 being Realex b2 being Nat st
( b2 > 0 & ( for b3 being Nat st b4 >= b3 holds
( b1 . b4 <= b2 * (c1 . b4) & b1 . b4 >= 0 ) ) )
}
is FUNCTION_DOMAIN of NAT , REAL
proof end;
end;

:: deftheorem Def12 defines Big_Oh ASYMPT_0:def 12 :
for b1 being eventually-nonnegative Real_Sequence holds Big_Oh b1 = { b2 where B is Element of Funcs NAT ,REAL : ex b1 being Realex b2 being Nat st
( b3 > 0 & ( for b3 being Nat st b5 >= b4 holds
( b2 . b5 <= b3 * (b1 . b5) & b2 . b5 >= 0 ) ) )
}
;

theorem Th6: :: ASYMPT_0:6
for b1 being set
for b2 being eventually-nonnegative Real_Sequence st b1 in Big_Oh b2 holds
b1 is eventually-nonnegative Real_Sequence
proof end;

theorem Th7: :: ASYMPT_0:7
for b1 being positive Real_Sequence
for b2 being eventually-nonnegative Real_Sequence holds
( b2 in Big_Oh b1 iff ex b3 being Real st
( b3 > 0 & ( for b4 being Nat holds b2 . b4 <= b3 * (b1 . b4) ) ) )
proof end;

theorem Th8: :: ASYMPT_0:8
for b1 being eventually-positive Real_Sequence
for b2 being eventually-nonnegative Real_Sequence
for b3 being Nat st b2 in Big_Oh b1 & ( for b4 being Nat st b4 >= b3 holds
b1 . b4 > 0 ) holds
ex b4 being Real st
( b4 > 0 & ( for b5 being Nat st b5 >= b3 holds
b2 . b5 <= b4 * (b1 . b5) ) )
proof end;

theorem Th9: :: ASYMPT_0:9
for b1, b2 being eventually-nonnegative Real_Sequence holds Big_Oh (b1 + b2) = Big_Oh (max b1,b2)
proof end;

theorem Th10: :: ASYMPT_0:10
for b1 being eventually-nonnegative Real_Sequence holds b1 in Big_Oh b1
proof end;

theorem Th11: :: ASYMPT_0:11
for b1, b2 being eventually-nonnegative Real_Sequence st b1 in Big_Oh b2 holds
Big_Oh b1 c= Big_Oh b2
proof end;

theorem Th12: :: ASYMPT_0:12
for b1, b2, b3 being eventually-nonnegative Real_Sequence st b1 in Big_Oh b2 & b2 in Big_Oh b3 holds
b1 in Big_Oh b3
proof end;

Lemma20: for b1, b2 being eventually-nonnegative Real_Sequence holds
( ( b1 in Big_Oh b2 & b2 in Big_Oh b1 ) iff Big_Oh b1 = Big_Oh b2 )
proof end;

theorem Th13: :: ASYMPT_0:13
for b1 being eventually-nonnegative Real_Sequence
for b2 being positive Real holds Big_Oh b1 = Big_Oh (b2 (#) b1)
proof end;

theorem Th14: :: ASYMPT_0:14
for b1 being non negative Real
for b2, b3 being eventually-nonnegative Real_Sequence st b2 in Big_Oh b3 holds
b2 in Big_Oh (b1 + b3)
proof end;

Lemma21: for b1, b2 being eventually-positive Real_Sequence st b1 /" b2 is convergent & lim (b1 /" b2) > 0 holds
b1 in Big_Oh b2
proof end;

theorem Th15: :: ASYMPT_0:15
for b1, b2 being eventually-positive Real_Sequence st b1 /" b2 is convergent & lim (b1 /" b2) > 0 holds
Big_Oh b1 = Big_Oh b2
proof end;

theorem Th16: :: ASYMPT_0:16
for b1, b2 being eventually-positive Real_Sequence st b1 /" b2 is convergent & lim (b1 /" b2) = 0 holds
( b1 in Big_Oh b2 & not b2 in Big_Oh b1 )
proof end;

theorem Th17: :: ASYMPT_0:17
for b1, b2 being eventually-positive Real_Sequence st b1 /" b2 is divergent_to+infty holds
( not b1 in Big_Oh b2 & b2 in Big_Oh b1 )
proof end;

definition
let c1 be eventually-nonnegative Real_Sequence;
func Big_Omega c1 -> FUNCTION_DOMAIN of NAT , REAL equals :: ASYMPT_0:def 13
{ b1 where B is Element of Funcs NAT ,REAL : ex b1 being Realex b2 being Nat st
( b2 > 0 & ( for b3 being Nat st b4 >= b3 holds
( b1 . b4 >= b2 * (a1 . b4) & b1 . b4 >= 0 ) ) )
}
;
coherence
{ b1 where B is Element of Funcs NAT ,REAL : ex b1 being Realex b2 being Nat st
( b2 > 0 & ( for b3 being Nat st b4 >= b3 holds
( b1 . b4 >= b2 * (c1 . b4) & b1 . b4 >= 0 ) ) )
}
is FUNCTION_DOMAIN of NAT , REAL
proof end;
end;

:: deftheorem Def13 defines Big_Omega ASYMPT_0:def 13 :
for b1 being eventually-nonnegative Real_Sequence holds Big_Omega b1 = { b2 where B is Element of Funcs NAT ,REAL : ex b1 being Realex b2 being Nat st
( b3 > 0 & ( for b3 being Nat st b5 >= b4 holds
( b2 . b5 >= b3 * (b1 . b5) & b2 . b5 >= 0 ) ) )
}
;

theorem Th18: :: ASYMPT_0:18
for b1 being set
for b2 being eventually-nonnegative Real_Sequence st b1 in Big_Omega b2 holds
b1 is eventually-nonnegative Real_Sequence
proof end;

theorem Th19: :: ASYMPT_0:19
for b1, b2 being eventually-nonnegative Real_Sequence holds
( b1 in Big_Omega b2 iff b2 in Big_Oh b1 )
proof end;

theorem Th20: :: ASYMPT_0:20
for b1 being eventually-nonnegative Real_Sequence holds b1 in Big_Omega b1
proof end;

theorem Th21: :: ASYMPT_0:21
for b1, b2, b3 being eventually-nonnegative Real_Sequence st b1 in Big_Omega b2 & b2 in Big_Omega b3 holds
b1 in Big_Omega b3
proof end;

theorem Th22: :: ASYMPT_0:22
for b1, b2 being eventually-positive Real_Sequence st b1 /" b2 is convergent & lim (b1 /" b2) > 0 holds
Big_Omega b1 = Big_Omega b2
proof end;

theorem Th23: :: ASYMPT_0:23
for b1, b2 being eventually-positive Real_Sequence st b1 /" b2 is convergent & lim (b1 /" b2) = 0 holds
( b2 in Big_Omega b1 & not b1 in Big_Omega b2 )
proof end;

theorem Th24: :: ASYMPT_0:24
for b1, b2 being eventually-positive Real_Sequence st b1 /" b2 is divergent_to+infty holds
( not b2 in Big_Omega b1 & b1 in Big_Omega b2 )
proof end;

theorem Th25: :: ASYMPT_0:25
for b1, b2 being positive Real_Sequence holds
( b2 in Big_Omega b1 iff ex b3 being Real st
( b3 > 0 & ( for b4 being Nat holds b3 * (b1 . b4) <= b2 . b4 ) ) )
proof end;

theorem Th26: :: ASYMPT_0:26
for b1, b2 being eventually-nonnegative Real_Sequence holds Big_Omega (b1 + b2) = Big_Omega (max b1,b2)
proof end;

definition
let c1 be eventually-nonnegative Real_Sequence;
func Big_Theta c1 -> FUNCTION_DOMAIN of NAT , REAL equals :: ASYMPT_0:def 14
(Big_Oh a1) /\ (Big_Omega a1);
coherence
(Big_Oh c1) /\ (Big_Omega c1) is FUNCTION_DOMAIN of NAT , REAL
proof end;
end;

:: deftheorem Def14 defines Big_Theta ASYMPT_0:def 14 :
for b1 being eventually-nonnegative Real_Sequence holds Big_Theta b1 = (Big_Oh b1) /\ (Big_Omega b1);

theorem Th27: :: ASYMPT_0:27
for b1 being eventually-nonnegative Real_Sequence holds Big_Theta b1 = { b2 where B is Element of Funcs NAT ,REAL : ex b1, b2 being Realex b3 being Nat st
( b3 > 0 & b4 > 0 & ( for b4 being Nat st b6 >= b5 holds
( b4 * (b1 . b6) <= b2 . b6 & b2 . b6 <= b3 * (b1 . b6) ) ) )
}
proof end;

theorem Th28: :: ASYMPT_0:28
for b1 being eventually-nonnegative Real_Sequence holds b1 in Big_Theta b1
proof end;

theorem Th29: :: ASYMPT_0:29
for b1, b2 being eventually-nonnegative Real_Sequence st b1 in Big_Theta b2 holds
b2 in Big_Theta b1
proof end;

theorem Th30: :: ASYMPT_0:30
for b1, b2, b3 being eventually-nonnegative Real_Sequence st b1 in Big_Theta b2 & b2 in Big_Theta b3 holds
b1 in Big_Theta b3
proof end;

theorem Th31: :: ASYMPT_0:31
for b1, b2 being positive Real_Sequence holds
( b2 in Big_Theta b1 iff ex b3, b4 being Real st
( b3 > 0 & b4 > 0 & ( for b5 being Nat holds
( b4 * (b1 . b5) <= b2 . b5 & b2 . b5 <= b3 * (b1 . b5) ) ) ) )
proof end;

theorem Th32: :: ASYMPT_0:32
for b1, b2 being eventually-nonnegative Real_Sequence holds Big_Theta (b1 + b2) = Big_Theta (max b1,b2)
proof end;

theorem Th33: :: ASYMPT_0:33
for b1, b2 being eventually-positive Real_Sequence st b1 /" b2 is convergent & lim (b1 /" b2) > 0 holds
b1 in Big_Theta b2
proof end;

theorem Th34: :: ASYMPT_0:34
for b1, b2 being eventually-positive Real_Sequence st b1 /" b2 is convergent & lim (b1 /" b2) = 0 holds
( b1 in Big_Oh b2 & not b1 in Big_Theta b2 )
proof end;

theorem Th35: :: ASYMPT_0:35
for b1, b2 being eventually-positive Real_Sequence st b1 /" b2 is divergent_to+infty holds
( b1 in Big_Omega b2 & not b1 in Big_Theta b2 )
proof end;

definition
let c1 be eventually-nonnegative Real_Sequence;
let c2 be set ;
func Big_Oh c1,c2 -> FUNCTION_DOMAIN of NAT , REAL equals :: ASYMPT_0:def 15
{ b1 where B is Element of Funcs NAT ,REAL : ex b1 being Realex b2 being Nat st
( b2 > 0 & ( for b3 being Nat st b4 >= b3 & b4 in a2 holds
( b1 . b4 <= b2 * (a1 . b4) & b1 . b4 >= 0 ) ) )
}
;
coherence
{ b1 where B is Element of Funcs NAT ,REAL : ex b1 being Realex b2 being Nat st
( b2 > 0 & ( for b3 being Nat st b4 >= b3 & b4 in c2 holds
( b1 . b4 <= b2 * (c1 . b4) & b1 . b4 >= 0 ) ) )
}
is FUNCTION_DOMAIN of NAT , REAL
proof end;
end;

:: deftheorem Def15 defines Big_Oh ASYMPT_0:def 15 :
for b1 being eventually-nonnegative Real_Sequence
for b2 being set holds Big_Oh b1,b2 = { b3 where B is Element of Funcs NAT ,REAL : ex b1 being Realex b2 being Nat st
( b4 > 0 & ( for b3 being Nat st b6 >= b5 & b6 in b2 holds
( b3 . b6 <= b4 * (b1 . b6) & b3 . b6 >= 0 ) ) )
}
;

definition
let c1 be eventually-nonnegative Real_Sequence;
let c2 be set ;
func Big_Omega c1,c2 -> FUNCTION_DOMAIN of NAT , REAL equals :: ASYMPT_0:def 16
{ b1 where B is Element of Funcs NAT ,REAL : ex b1 being Realex b2 being Nat st
( b2 > 0 & ( for b3 being Nat st b4 >= b3 & b4 in a2 holds
( b1 . b4 >= b2 * (a1 . b4) & b1 . b4 >= 0 ) ) )
}
;
coherence
{ b1 where B is Element of Funcs NAT ,REAL : ex b1 being Realex b2 being Nat st
( b2 > 0 & ( for b3 being Nat st b4 >= b3 & b4 in c2 holds
( b1 . b4 >= b2 * (c1 . b4) & b1 . b4 >= 0 ) ) )
}
is FUNCTION_DOMAIN of NAT , REAL
proof end;
end;

:: deftheorem Def16 defines Big_Omega ASYMPT_0:def 16 :
for b1 being eventually-nonnegative Real_Sequence
for b2 being set holds Big_Omega b1,b2 = { b3 where B is Element of Funcs NAT ,REAL : ex b1 being Realex b2 being Nat st
( b4 > 0 & ( for b3 being Nat st b6 >= b5 & b6 in b2 holds
( b3 . b6 >= b4 * (b1 . b6) & b3 . b6 >= 0 ) ) )
}
;

definition
let c1 be eventually-nonnegative Real_Sequence;
let c2 be set ;
func Big_Theta c1,c2 -> FUNCTION_DOMAIN of NAT , REAL equals :: ASYMPT_0:def 17
{ b1 where B is Element of Funcs NAT ,REAL : ex b1, b2 being Realex b3 being Nat st
( b2 > 0 & b3 > 0 & ( for b4 being Nat st b5 >= b4 & b5 in a2 holds
( b3 * (a1 . b5) <= b1 . b5 & b1 . b5 <= b2 * (a1 . b5) ) ) )
}
;
coherence
{ b1 where B is Element of Funcs NAT ,REAL : ex b1, b2 being Realex b3 being Nat st
( b2 > 0 & b3 > 0 & ( for b4 being Nat st b5 >= b4 & b5 in c2 holds
( b3 * (c1 . b5) <= b1 . b5 & b1 . b5 <= b2 * (c1 . b5) ) ) )
}
is FUNCTION_DOMAIN of NAT , REAL
proof end;
end;

:: deftheorem Def17 defines Big_Theta ASYMPT_0:def 17 :
for b1 being eventually-nonnegative Real_Sequence
for b2 being set holds Big_Theta b1,b2 = { b3 where B is Element of Funcs NAT ,REAL : ex b1, b2 being Realex b3 being Nat st
( b4 > 0 & b5 > 0 & ( for b4 being Nat st b7 >= b6 & b7 in b2 holds
( b5 * (b1 . b7) <= b3 . b7 & b3 . b7 <= b4 * (b1 . b7) ) ) )
}
;

theorem Th36: :: ASYMPT_0:36
for b1 being eventually-nonnegative Real_Sequence
for b2 being set holds Big_Theta b1,b2 = (Big_Oh b1,b2) /\ (Big_Omega b1,b2)
proof end;

definition
let c1 be Real_Sequence;
let c2 be Nat;
func c1 taken_every c2 -> Real_Sequence means :Def18: :: ASYMPT_0:def 18
for b1 being Nat holds a3 . b1 = a1 . (a2 * b1);
existence
ex b1 being Real_Sequence st
for b2 being Nat holds b1 . b2 = c1 . (c2 * b2)
proof end;
uniqueness
for b1, b2 being Real_Sequence st ( for b3 being Nat holds b1 . b3 = c1 . (c2 * b3) ) & ( for b3 being Nat holds b2 . b3 = c1 . (c2 * b3) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def18 defines taken_every ASYMPT_0:def 18 :
for b1 being Real_Sequence
for b2 being Nat
for b3 being Real_Sequence holds
( b3 = b1 taken_every b2 iff for b4 being Nat holds b3 . b4 = b1 . (b2 * b4) );

definition
let c1 be eventually-nonnegative Real_Sequence;
let c2 be Nat;
pred c1 is_smooth_wrt c2 means :Def19: :: ASYMPT_0:def 19
( a1 is eventually-nondecreasing & a1 taken_every a2 in Big_Oh a1 );
end;

:: deftheorem Def19 defines is_smooth_wrt ASYMPT_0:def 19 :
for b1 being eventually-nonnegative Real_Sequence
for b2 being Nat holds
( b1 is_smooth_wrt b2 iff ( b1 is eventually-nondecreasing & b1 taken_every b2 in Big_Oh b1 ) );

definition
let c1 be eventually-nonnegative Real_Sequence;
attr a1 is smooth means :Def20: :: ASYMPT_0:def 20
for b1 being Nat st b1 >= 2 holds
a1 is_smooth_wrt b1;
end;

:: deftheorem Def20 defines smooth ASYMPT_0:def 20 :
for b1 being eventually-nonnegative Real_Sequence holds
( b1 is smooth iff for b2 being Nat st b2 >= 2 holds
b1 is_smooth_wrt b2 );

theorem Th37: :: ASYMPT_0:37
for b1 being eventually-nonnegative Real_Sequence st ex b2 being Nat st
( b2 >= 2 & b1 is_smooth_wrt b2 ) holds
b1 is smooth
proof end;

theorem Th38: :: ASYMPT_0:38
for b1 being eventually-nonnegative Real_Sequence
for b2 being eventually-nonnegative eventually-nondecreasing Real_Sequence
for b3 being Nat st b1 is smooth & b3 >= 2 & b2 in Big_Oh b1,{ (b3 |^ b4) where B is Nat : verum } holds
b2 in Big_Oh b1
proof end;

theorem Th39: :: ASYMPT_0:39
for b1 being eventually-nonnegative Real_Sequence
for b2 being eventually-nonnegative eventually-nondecreasing Real_Sequence
for b3 being Nat st b1 is smooth & b3 >= 2 & b2 in Big_Omega b1,{ (b3 |^ b4) where B is Nat : verum } holds
b2 in Big_Omega b1
proof end;

theorem Th40: :: ASYMPT_0:40
for b1 being eventually-nonnegative Real_Sequence
for b2 being eventually-nonnegative eventually-nondecreasing Real_Sequence
for b3 being Nat st b1 is smooth & b3 >= 2 & b2 in Big_Theta b1,{ (b3 |^ b4) where B is Nat : verum } holds
b2 in Big_Theta b1
proof end;

definition
let c1 be non empty set ;
let c2, c3 be FUNCTION_DOMAIN of c1, REAL ;
func c2 + c3 -> FUNCTION_DOMAIN of a1, REAL equals :: ASYMPT_0:def 21
{ b1 where B is Element of Funcs a1,REAL : ex b1, b2 being Element of Funcs a1,REAL st
( b2 in a2 & b3 in a3 & ( for b3 being Element of a1 holds b1 . b4 = (b2 . b4) + (b3 . b4) ) )
}
;
coherence
{ b1 where B is Element of Funcs c1,REAL : ex b1, b2 being Element of Funcs c1,REAL st
( b2 in c2 & b3 in c3 & ( for b3 being Element of c1 holds b1 . b4 = (b2 . b4) + (b3 . b4) ) )
}
is FUNCTION_DOMAIN of c1, REAL
proof end;
end;

:: deftheorem Def21 defines + ASYMPT_0:def 21 :
for b1 being non empty set
for b2, b3 being FUNCTION_DOMAIN of b1, REAL holds b2 + b3 = { b4 where B is Element of Funcs b1,REAL : ex b1, b2 being Element of Funcs b1,REAL st
( b5 in b2 & b6 in b3 & ( for b3 being Element of b1 holds b4 . b7 = (b5 . b7) + (b6 . b7) ) )
}
;

definition
let c1 be non empty set ;
let c2, c3 be FUNCTION_DOMAIN of c1, REAL ;
func max c2,c3 -> FUNCTION_DOMAIN of a1, REAL equals :: ASYMPT_0:def 22
{ b1 where B is Element of Funcs a1,REAL : ex b1, b2 being Element of Funcs a1,REAL st
( b2 in a2 & b3 in a3 & ( for b3 being Element of a1 holds b1 . b4 = max (b2 . b4),(b3 . b4) ) )
}
;
coherence
{ b1 where B is Element of Funcs c1,REAL : ex b1, b2 being Element of Funcs c1,REAL st
( b2 in c2 & b3 in c3 & ( for b3 being Element of c1 holds b1 . b4 = max (b2 . b4),(b3 . b4) ) )
}
is FUNCTION_DOMAIN of c1, REAL
proof end;
end;

:: deftheorem Def22 defines max ASYMPT_0:def 22 :
for b1 being non empty set
for b2, b3 being FUNCTION_DOMAIN of b1, REAL holds max b2,b3 = { b4 where B is Element of Funcs b1,REAL : ex b1, b2 being Element of Funcs b1,REAL st
( b5 in b2 & b6 in b3 & ( for b3 being Element of b1 holds b4 . b7 = max (b5 . b7),(b6 . b7) ) )
}
;

theorem Th41: :: ASYMPT_0:41
for b1, b2 being eventually-nonnegative Real_Sequence holds (Big_Oh b1) + (Big_Oh b2) = Big_Oh (b1 + b2)
proof end;

theorem Th42: :: ASYMPT_0:42
for b1, b2 being eventually-nonnegative Real_Sequence holds max (Big_Oh b1),(Big_Oh b2) = Big_Oh (max b1,b2)
proof end;

definition
let c1, c2 be FUNCTION_DOMAIN of NAT , REAL ;
func c1 to_power c2 -> FUNCTION_DOMAIN of NAT , REAL equals :: ASYMPT_0:def 23
{ b1 where B is Element of Funcs NAT ,REAL : ex b1, b2 being Element of Funcs NAT ,REAL ex b3 being Element of NAT st
( b2 in a1 & b3 in a2 & ( for b4 being Element of NAT st b5 >= b4 holds
b1 . b5 = (b2 . b5) to_power (b3 . b5) ) )
}
;
coherence
{ b1 where B is Element of Funcs NAT ,REAL : ex b1, b2 being Element of Funcs NAT ,REAL ex b3 being Element of NAT st
( b2 in c1 & b3 in c2 & ( for b4 being Element of NAT st b5 >= b4 holds
b1 . b5 = (b2 . b5) to_power (b3 . b5) ) )
}
is FUNCTION_DOMAIN of NAT , REAL
proof end;
end;

:: deftheorem Def23 defines to_power ASYMPT_0:def 23 :
for b1, b2 being FUNCTION_DOMAIN of NAT , REAL holds b1 to_power b2 = { b3 where B is Element of Funcs NAT ,REAL : ex b1, b2 being Element of Funcs NAT ,REAL ex b3 being Element of NAT st
( b4 in b1 & b5 in b2 & ( for b4 being Element of NAT st b7 >= b6 holds
b3 . b7 = (b4 . b7) to_power (b5 . b7) ) )
}
;