:: POWER semantic presentation

theorem Th1: :: POWER:1
for b1 being real number
for b2 being Nat st ex b3 being Nat st b2 = 2 * b3 holds
(- b1) |^ b2 = b1 |^ b2
proof end;

theorem Th2: :: POWER:2
for b1 being real number
for b2 being Nat st ex b3 being Nat st b2 = (2 * b3) + 1 holds
(- b1) |^ b2 = - (b1 |^ b2)
proof end;

theorem Th3: :: POWER:3
for b1 being real number
for b2 being Nat st ( b1 >= 0 or ex b3 being Nat st b2 = 2 * b3 ) holds
b1 |^ b2 >= 0
proof end;

definition
let c1 be Nat;
let c2 be real number ;
func c1 -root c2 -> real number equals :Def1: :: POWER:def 1
a1 -Root a2 if ( a2 >= 0 & a1 >= 1 )
- (a1 -Root (- a2)) if ( a2 < 0 & ex b1 being Nat st a1 = (2 * b1) + 1 )
;
consistency
for b1 being real number st c2 >= 0 & c1 >= 1 & c2 < 0 & ex b2 being Nat st c1 = (2 * b2) + 1 holds
( b1 = c1 -Root c2 iff b1 = - (c1 -Root (- c2)) )
;
coherence
( ( c2 >= 0 & c1 >= 1 implies c1 -Root c2 is real number ) & ( c2 < 0 & ex b1 being Nat st c1 = (2 * b1) + 1 implies - (c1 -Root (- c2)) is real number ) )
;
end;

:: deftheorem Def1 defines -root POWER:def 1 :
for b1 being Nat
for b2 being real number holds
( ( b2 >= 0 & b1 >= 1 implies b1 -root b2 = b1 -Root b2 ) & ( b2 < 0 & ex b3 being Nat st b1 = (2 * b3) + 1 implies b1 -root b2 = - (b1 -Root (- b2)) ) );

definition
let c1 be Nat;
let c2 be Real;
redefine func -root as c1 -root c2 -> Real;
coherence
c1 -root c2 is Real
by XREAL_0:def 1;
end;

theorem Th4: :: POWER:4
canceled;

theorem Th5: :: POWER:5
for b1 being real number
for b2 being Nat st ( ( b2 >= 1 & b1 >= 0 ) or ex b3 being Nat st b2 = (2 * b3) + 1 ) holds
( (b2 -root b1) |^ b2 = b1 & b2 -root (b1 |^ b2) = b1 )
proof end;

theorem Th6: :: POWER:6
for b1 being Nat st b1 >= 1 holds
b1 -root 0 = 0
proof end;

theorem Th7: :: POWER:7
for b1 being Nat st b1 >= 1 holds
b1 -root 1 = 1
proof end;

theorem Th8: :: POWER:8
for b1 being real number
for b2 being Nat st b1 >= 0 & b2 >= 1 holds
b2 -root b1 >= 0
proof end;

theorem Th9: :: POWER:9
for b1 being Nat st ex b2 being Nat st b1 = (2 * b2) + 1 holds
b1 -root (- 1) = - 1
proof end;

theorem Th10: :: POWER:10
for b1 being real number holds 1 -root b1 = b1
proof end;

theorem Th11: :: POWER:11
for b1 being real number
for b2 being Nat st ex b3 being Nat st b2 = (2 * b3) + 1 holds
b2 -root b1 = - (b2 -root (- b1))
proof end;

theorem Th12: :: POWER:12
for b1, b2 being real number
for b3 being Nat st ( ( b3 >= 1 & b1 >= 0 & b2 >= 0 ) or ex b4 being Nat st b3 = (2 * b4) + 1 ) holds
b3 -root (b1 * b2) = (b3 -root b1) * (b3 -root b2)
proof end;

theorem Th13: :: POWER:13
for b1 being real number
for b2 being Nat st ( ( b1 > 0 & b2 >= 1 ) or ( b1 <> 0 & ex b3 being Nat st b2 = (2 * b3) + 1 ) ) holds
b2 -root (1 / b1) = 1 / (b2 -root b1)
proof end;

theorem Th14: :: POWER:14
for b1, b2 being real number
for b3 being Nat st ( ( b1 >= 0 & b2 > 0 & b3 >= 1 ) or ( b2 <> 0 & ex b4 being Nat st b3 = (2 * b4) + 1 ) ) holds
b3 -root (b1 / b2) = (b3 -root b1) / (b3 -root b2)
proof end;

theorem Th15: :: POWER:15
for b1 being real number
for b2, b3 being Nat st ( ( b1 >= 0 & b2 >= 1 & b3 >= 1 ) or ex b4, b5 being Nat st
( b2 = (2 * b4) + 1 & b3 = (2 * b5) + 1 ) ) holds
b2 -root (b3 -root b1) = (b2 * b3) -root b1
proof end;

theorem Th16: :: POWER:16
for b1 being real number
for b2, b3 being Nat st ( ( b1 >= 0 & b2 >= 1 & b3 >= 1 ) or ex b4, b5 being Nat st
( b2 = (2 * b4) + 1 & b3 = (2 * b5) + 1 ) ) holds
(b2 -root b1) * (b3 -root b1) = (b2 * b3) -root (b1 |^ (b2 + b3))
proof end;

theorem Th17: :: POWER:17
for b1, b2 being real number
for b3 being Nat st b1 <= b2 & ( ( 0 <= b1 & b3 >= 1 ) or ex b4 being Nat st b3 = (2 * b4) + 1 ) holds
b3 -root b1 <= b3 -root b2
proof end;

theorem Th18: :: POWER:18
for b1, b2 being real number
for b3 being Nat st b1 < b2 & ( ( b1 >= 0 & b3 >= 1 ) or ex b4 being Nat st b3 = (2 * b4) + 1 ) holds
b3 -root b1 < b3 -root b2
proof end;

theorem Th19: :: POWER:19
for b1 being real number
for b2 being Nat st b1 >= 1 & b2 >= 1 holds
( b2 -root b1 >= 1 & b1 >= b2 -root b1 )
proof end;

theorem Th20: :: POWER:20
for b1 being real number
for b2 being Nat st b1 <= - 1 & ex b3 being Nat st b2 = (2 * b3) + 1 holds
( b2 -root b1 <= - 1 & b1 <= b2 -root b1 )
proof end;

theorem Th21: :: POWER:21
for b1 being real number
for b2 being Nat st b1 >= 0 & b1 < 1 & b2 >= 1 holds
( b1 <= b2 -root b1 & b2 -root b1 < 1 )
proof end;

theorem Th22: :: POWER:22
for b1 being real number
for b2 being Nat st b1 > - 1 & b1 <= 0 & ex b3 being Nat st b2 = (2 * b3) + 1 holds
( b1 >= b2 -root b1 & b2 -root b1 > - 1 )
proof end;

theorem Th23: :: POWER:23
for b1 being real number
for b2 being Nat st b1 > 0 & b2 >= 1 holds
(b2 -root b1) - 1 <= (b1 - 1) / b2
proof end;

theorem Th24: :: POWER:24
for b1 being Real_Sequence
for b2 being real number st b2 > 0 & ( for b3 being Nat st b3 >= 1 holds
b1 . b3 = b3 -root b2 ) holds
( b1 is convergent & lim b1 = 1 )
proof end;

definition
let c1, c2 be real number ;
func c1 to_power c2 -> real number means :Def2: :: POWER:def 2
a3 = a1 #R a2 if a1 > 0
a3 = 0 if ( a1 = 0 & a2 > 0 )
a3 = 1 if ( a1 = 0 & a2 = 0 )
ex b1 being Integer st
( b1 = a2 & a3 = a1 #Z b1 ) if ( a1 < 0 & a2 is Integer )
;
consistency
for b1 being real number holds
( ( c1 > 0 & c1 = 0 & c2 > 0 implies ( b1 = c1 #R c2 iff b1 = 0 ) ) & ( c1 > 0 & c1 = 0 & c2 = 0 implies ( b1 = c1 #R c2 iff b1 = 1 ) ) & ( c1 > 0 & c1 < 0 & c2 is Integer implies ( b1 = c1 #R c2 iff ex b2 being Integer st
( b2 = c2 & b1 = c1 #Z b2 ) ) ) & ( c1 = 0 & c2 > 0 & c1 = 0 & c2 = 0 implies ( b1 = 0 iff b1 = 1 ) ) & ( c1 = 0 & c2 > 0 & c1 < 0 & c2 is Integer implies ( b1 = 0 iff ex b2 being Integer st
( b2 = c2 & b1 = c1 #Z b2 ) ) ) & ( c1 = 0 & c2 = 0 & c1 < 0 & c2 is Integer implies ( b1 = 1 iff ex b2 being Integer st
( b2 = c2 & b1 = c1 #Z b2 ) ) ) )
;
existence
( ( c1 > 0 implies ex b1 being real number st b1 = c1 #R c2 ) & ( c1 = 0 & c2 > 0 implies ex b1 being real number st b1 = 0 ) & ( c1 = 0 & c2 = 0 implies ex b1 being real number st b1 = 1 ) & ( c1 < 0 & c2 is Integer implies ex b1 being real number ex b2 being Integer st
( b2 = c2 & b1 = c1 #Z b2 ) ) )
proof end;
uniqueness
for b1, b2 being real number holds
( ( c1 > 0 & b1 = c1 #R c2 & b2 = c1 #R c2 implies b1 = b2 ) & ( c1 = 0 & c2 > 0 & b1 = 0 & b2 = 0 implies b1 = b2 ) & ( c1 = 0 & c2 = 0 & b1 = 1 & b2 = 1 implies b1 = b2 ) & ( c1 < 0 & c2 is Integer & ex b3 being Integer st
( b3 = c2 & b1 = c1 #Z b3 ) & ex b3 being Integer st
( b3 = c2 & b2 = c1 #Z b3 ) implies b1 = b2 ) )
;
end;

:: deftheorem Def2 defines to_power POWER:def 2 :
for b1, b2, b3 being real number holds
( ( b1 > 0 implies ( b3 = b1 to_power b2 iff b3 = b1 #R b2 ) ) & ( b1 = 0 & b2 > 0 implies ( b3 = b1 to_power b2 iff b3 = 0 ) ) & ( b1 = 0 & b2 = 0 implies ( b3 = b1 to_power b2 iff b3 = 1 ) ) & ( b1 < 0 & b2 is Integer implies ( b3 = b1 to_power b2 iff ex b4 being Integer st
( b4 = b2 & b3 = b1 #Z b4 ) ) ) );

definition
let c1, c2 be Real;
redefine func to_power as c1 to_power c2 -> Real;
coherence
c1 to_power c2 is Real
by XREAL_0:def 1;
end;

theorem Th25: :: POWER:25
canceled;

theorem Th26: :: POWER:26
canceled;

theorem Th27: :: POWER:27
canceled;

theorem Th28: :: POWER:28
canceled;

theorem Th29: :: POWER:29
for b1 being real number holds b1 to_power 0 = 1
proof end;

theorem Th30: :: POWER:30
for b1 being real number holds b1 to_power 1 = b1
proof end;

theorem Th31: :: POWER:31
for b1 being real number holds 1 to_power b1 = 1
proof end;

theorem Th32: :: POWER:32
for b1, b2, b3 being real number st b1 > 0 holds
b1 to_power (b2 + b3) = (b1 to_power b2) * (b1 to_power b3)
proof end;

theorem Th33: :: POWER:33
for b1, b2 being real number st b1 > 0 holds
b1 to_power (- b2) = 1 / (b1 to_power b2)
proof end;

theorem Th34: :: POWER:34
for b1, b2, b3 being real number st b1 > 0 holds
b1 to_power (b2 - b3) = (b1 to_power b2) / (b1 to_power b3)
proof end;

theorem Th35: :: POWER:35
for b1, b2, b3 being real number st b1 > 0 & b2 > 0 holds
(b1 * b2) to_power b3 = (b1 to_power b3) * (b2 to_power b3)
proof end;

theorem Th36: :: POWER:36
for b1, b2, b3 being real number st b1 > 0 & b2 > 0 holds
(b1 / b2) to_power b3 = (b1 to_power b3) / (b2 to_power b3)
proof end;

theorem Th37: :: POWER:37
for b1, b2 being real number st b1 > 0 holds
(1 / b1) to_power b2 = b1 to_power (- b2)
proof end;

theorem Th38: :: POWER:38
for b1, b2, b3 being real number st b1 > 0 holds
(b1 to_power b2) to_power b3 = b1 to_power (b2 * b3)
proof end;

theorem Th39: :: POWER:39
for b1, b2 being real number st b1 > 0 holds
b1 to_power b2 > 0
proof end;

theorem Th40: :: POWER:40
for b1, b2 being real number st b1 > 1 & b2 > 0 holds
b1 to_power b2 > 1
proof end;

theorem Th41: :: POWER:41
for b1, b2 being real number st b1 > 1 & b2 < 0 holds
b1 to_power b2 < 1
proof end;

theorem Th42: :: POWER:42
for b1, b2, b3 being real number st b1 > 0 & b1 < b2 & b3 > 0 holds
b1 to_power b3 < b2 to_power b3
proof end;

theorem Th43: :: POWER:43
for b1, b2, b3 being real number st b1 > 0 & b1 < b2 & b3 < 0 holds
b1 to_power b3 > b2 to_power b3
proof end;

theorem Th44: :: POWER:44
for b1, b2, b3 being real number st b1 < b2 & b3 > 1 holds
b3 to_power b1 < b3 to_power b2
proof end;

theorem Th45: :: POWER:45
for b1, b2, b3 being real number st b1 < b2 & b3 > 0 & b3 < 1 holds
b3 to_power b1 > b3 to_power b2
proof end;

theorem Th46: :: POWER:46
for b1 being real number
for b2 being Nat st b1 <> 0 holds
b1 to_power b2 = b1 |^ b2
proof end;

theorem Th47: :: POWER:47
for b1 being real number
for b2 being Nat st b2 >= 1 holds
b1 to_power b2 = b1 |^ b2
proof end;

theorem Th48: :: POWER:48
for b1 being real number
for b2 being Nat st b1 <> 0 holds
b1 to_power b2 = b1 |^ b2 by Th46;

theorem Th49: :: POWER:49
for b1 being real number
for b2 being Nat st b2 >= 1 holds
b1 to_power b2 = b1 |^ b2
proof end;

theorem Th50: :: POWER:50
for b1 being real number
for b2 being Integer st b1 <> 0 holds
b1 to_power b2 = b1 #Z b2
proof end;

theorem Th51: :: POWER:51
for b1 being real number
for b2 being Rational st b1 > 0 holds
b1 to_power b2 = b1 #Q b2
proof end;

theorem Th52: :: POWER:52
for b1 being real number
for b2 being Nat st b1 >= 0 & b2 >= 1 holds
b1 to_power (1 / b2) = b2 -root b1
proof end;

theorem Th53: :: POWER:53
for b1 being real number holds b1 to_power 2 = b1 ^2
proof end;

theorem Th54: :: POWER:54
for b1 being real number
for b2 being Integer st b1 <> 0 & ex b3 being Integer st b2 = 2 * b3 holds
(- b1) to_power b2 = b1 to_power b2
proof end;

theorem Th55: :: POWER:55
for b1 being real number
for b2 being Integer st b1 <> 0 & ex b3 being Integer st b2 = (2 * b3) + 1 holds
(- b1) to_power b2 = - (b1 to_power b2)
proof end;

theorem Th56: :: POWER:56
for b1 being real number
for b2 being Nat st - 1 < b1 holds
(1 + b1) to_power b2 >= 1 + (b2 * b1)
proof end;

theorem Th57: :: POWER:57
for b1, b2, b3 being real number st b1 > 0 & b1 <> 1 & b2 <> b3 holds
b1 to_power b2 <> b1 to_power b3
proof end;

definition
let c1, c2 be real number ;
assume that
E37: ( c1 > 0 & c1 <> 1 ) and
E38: c2 > 0 ;
func log c1,c2 -> real number means :Def3: :: POWER:def 3
a1 to_power a3 = a2;
existence
ex b1 being real number st c1 to_power b1 = c2
proof end;
uniqueness
for b1, b2 being real number st c1 to_power b1 = c2 & c1 to_power b2 = c2 holds
b1 = b2
by E37, Th57;
end;

:: deftheorem Def3 defines log POWER:def 3 :
for b1, b2 being real number st b1 > 0 & b1 <> 1 & b2 > 0 holds
for b3 being real number holds
( b3 = log b1,b2 iff b1 to_power b3 = b2 );

definition
let c1, c2 be Real;
redefine func log as log c1,c2 -> Real;
coherence
log c1,c2 is Real
by XREAL_0:def 1;
end;

theorem Th58: :: POWER:58
canceled;

theorem Th59: :: POWER:59
for b1 being real number st b1 > 0 & b1 <> 1 holds
log b1,1 = 0
proof end;

theorem Th60: :: POWER:60
for b1 being real number st b1 > 0 & b1 <> 1 holds
log b1,b1 = 1
proof end;

theorem Th61: :: POWER:61
for b1, b2, b3 being real number st b1 > 0 & b1 <> 1 & b2 > 0 & b3 > 0 holds
(log b1,b2) + (log b1,b3) = log b1,(b2 * b3)
proof end;

theorem Th62: :: POWER:62
for b1, b2, b3 being real number st b1 > 0 & b1 <> 1 & b2 > 0 & b3 > 0 holds
(log b1,b2) - (log b1,b3) = log b1,(b2 / b3)
proof end;

theorem Th63: :: POWER:63
for b1, b2, b3 being real number st b1 > 0 & b1 <> 1 & b2 > 0 holds
log b1,(b2 to_power b3) = b3 * (log b1,b2)
proof end;

theorem Th64: :: POWER:64
for b1, b2, b3 being real number st b1 > 0 & b1 <> 1 & b2 > 0 & b2 <> 1 & b3 > 0 holds
log b1,b3 = (log b1,b2) * (log b2,b3)
proof end;

theorem Th65: :: POWER:65
for b1, b2, b3 being real number st b1 > 1 & b2 > 0 & b3 > b2 holds
log b1,b3 > log b1,b2
proof end;

theorem Th66: :: POWER:66
for b1, b2, b3 being real number st b1 > 0 & b1 < 1 & b2 > 0 & b3 > b2 holds
log b1,b3 < log b1,b2
proof end;

theorem Th67: :: POWER:67
for b1 being Real_Sequence st ( for b2 being Nat holds b1 . b2 = (1 + (1 / (b2 + 1))) to_power (b2 + 1) ) holds
b1 is convergent
proof end;

definition
func number_e -> real number means :: POWER:def 4
for b1 being Real_Sequence st ( for b2 being Nat holds b1 . b2 = (1 + (1 / (b2 + 1))) to_power (b2 + 1) ) holds
a1 = lim b1;
existence
ex b1 being real number st
for b2 being Real_Sequence st ( for b3 being Nat holds b2 . b3 = (1 + (1 / (b3 + 1))) to_power (b3 + 1) ) holds
b1 = lim b2
proof end;
uniqueness
for b1, b2 being real number st ( for b3 being Real_Sequence st ( for b4 being Nat holds b3 . b4 = (1 + (1 / (b4 + 1))) to_power (b4 + 1) ) holds
b1 = lim b3 ) & ( for b3 being Real_Sequence st ( for b4 being Nat holds b3 . b4 = (1 + (1 / (b4 + 1))) to_power (b4 + 1) ) holds
b2 = lim b3 ) holds
b1 = b2
proof end;
end;

:: deftheorem Def4 defines number_e POWER:def 4 :
for b1 being real number holds
( b1 = number_e iff for b2 being Real_Sequence st ( for b3 being Nat holds b2 . b3 = (1 + (1 / (b3 + 1))) to_power (b3 + 1) ) holds
b1 = lim b2 );

definition
redefine func number_e as number_e -> Real;
coherence
number_e is Real
by XREAL_0:def 1;
end;