:: NAT_2 semantic presentation

scheme :: NAT_2:sch 1
s1{ F1() -> non empty set , F2() -> Element of F1(), F3() -> Nat, P1[ set , set , set ] } :
ex b1 being FinSequence of F1() st
( len b1 = F3() & ( b1 /. 1 = F2() or F3() = 0 ) & ( for b2 being Nat st 1 <= b2 & b2 < F3() holds
P1[b2,b1 /. b2,b1 /. (b2 + 1)] ) )
provided
E1: for b1 being Nat st 1 <= b1 & b1 < F3() holds
for b2 being Element of F1() ex b3 being Element of F1() st P1[b1,b2,b3]
proof end;

theorem Th1: :: NAT_2:1
canceled;

theorem Th2: :: NAT_2:2
for b1, b2 being real number st b1 >= 0 & b2 > 0 holds
b1 / ([\(b1 / b2)/] + 1) < b2
proof end;

theorem Th3: :: NAT_2:3
canceled;

theorem Th4: :: NAT_2:4
for b1 being natural number holds 0 div b1 = 0
proof end;

theorem Th5: :: NAT_2:5
for b1 being non empty Nat holds b1 div b1 = 1
proof end;

theorem Th6: :: NAT_2:6
for b1 being Nat holds b1 div 1 = b1
proof end;

theorem Th7: :: NAT_2:7
for b1, b2, b3, b4 being natural number st b1 <= b2 & b3 <= b2 & b1 = (b2 -' b3) + b4 holds
b3 = (b2 -' b1) + b4
proof end;

theorem Th8: :: NAT_2:8
for b1, b2 being natural number st b1 in Seg b2 holds
(b2 -' b1) + 1 in Seg b2
proof end;

theorem Th9: :: NAT_2:9
for b1, b2 being natural number st b2 < b1 holds
(b1 -' (b2 + 1)) + 1 = b1 -' b2
proof end;

theorem Th10: :: NAT_2:10
for b1, b2 being natural number st b1 >= b2 holds
b2 -' b1 = 0
proof end;

theorem Th11: :: NAT_2:11
for b1, b2 being non empty natural number holds b1 -' b2 < b1
proof end;

theorem Th12: :: NAT_2:12
for b1, b2 being natural number st b2 <= b1 holds
2 to_power b1 = (2 to_power b2) * (2 to_power (b1 -' b2))
proof end;

theorem Th13: :: NAT_2:13
for b1, b2 being Nat st b2 <= b1 holds
2 to_power b2 divides 2 to_power b1
proof end;

theorem Th14: :: NAT_2:14
for b1, b2 being natural number st b2 > 0 & b1 div b2 = 0 holds
b1 < b2
proof end;

theorem Th15: :: NAT_2:15
for b1, b2 being natural number st b1 > 0 & b1 <= b2 holds
b2 div b1 >= 1
proof end;

theorem Th16: :: NAT_2:16
for b1, b2 being natural number st b1 <> 0 holds
(b2 + b1) div b1 = (b2 div b1) + 1
proof end;

theorem Th17: :: NAT_2:17
for b1, b2, b3 being natural number st b1 divides b2 & 1 <= b2 & 1 <= b3 & b3 <= b1 holds
(b2 -' b3) div b1 = (b2 div b1) - 1
proof end;

theorem Th18: :: NAT_2:18
for b1, b2 being Nat st b2 <= b1 holds
(2 to_power b1) div (2 to_power b2) = 2 to_power (b1 -' b2)
proof end;

theorem Th19: :: NAT_2:19
for b1 being Nat st b1 > 0 holds
(2 to_power b1) mod 2 = 0
proof end;

theorem Th20: :: NAT_2:20
for b1 being Nat st b1 > 0 holds
( b1 mod 2 = 0 iff (b1 -' 1) mod 2 = 1 )
proof end;

theorem Th21: :: NAT_2:21
for b1 being non empty natural number st b1 <> 1 holds
b1 > 1
proof end;

theorem Th22: :: NAT_2:22
for b1, b2 being natural number st b1 <= b2 & b2 < b1 + b1 holds
b2 div b1 = 1
proof end;

theorem Th23: :: NAT_2:23
for b1 being Nat holds
( b1 is even iff b1 mod 2 = 0 )
proof end;

theorem Th24: :: NAT_2:24
for b1 being Nat holds
( not b1 is even iff b1 mod 2 = 1 )
proof end;

theorem Th25: :: NAT_2:25
for b1, b2, b3 being Nat st 1 <= b3 & b2 <= b1 & 2 * b3 divides b2 holds
( b1 div b3 is even iff (b1 -' b2) div b3 is even )
proof end;

theorem Th26: :: NAT_2:26
for b1, b2, b3 being Nat st b1 <= b2 holds
b1 div b3 <= b2 div b3
proof end;

theorem Th27: :: NAT_2:27
for b1, b2 being Nat st b2 <= 2 * b1 holds
(b2 + 1) div 2 <= b1
proof end;

theorem Th28: :: NAT_2:28
for b1 being even Nat holds b1 div 2 = (b1 + 1) div 2
proof end;

theorem Th29: :: NAT_2:29
for b1, b2, b3 being Nat holds (b1 div b2) div b3 = b1 div (b2 * b3)
proof end;

definition
let c1 be natural number ;
redefine attr a1 is trivial means :Def1: :: NAT_2:def 1
( a1 = 0 or a1 = 1 );
compatibility
( c1 is trivial iff ( c1 = 0 or c1 = 1 ) )
proof end;
end;

:: deftheorem Def1 defines trivial NAT_2:def 1 :
for b1 being natural number holds
( b1 is trivial iff ( b1 = 0 or b1 = 1 ) );

registration
cluster non trivial Element of K76();
existence
not for b1 being Nat holds b1 is trivial
proof end;
cluster natural non trivial set ;
existence
ex b1 being number st
( not b1 is trivial & b1 is natural )
proof end;
end;

theorem Th30: :: NAT_2:30
for b1 being natural number holds
( not b1 is trivial iff ( not b1 is empty & b1 <> 1 ) ) by Def1;

theorem Th31: :: NAT_2:31
for b1 being natural non trivial number holds b1 >= 2
proof end;

scheme :: NAT_2:sch 2
s2{ P1[ Nat] } :
for b1 being non trivial Nat holds P1[b1]
provided
E9: P1[2] and
E10: for b1 being non trivial Nat st P1[b1] holds
P1[b1 + 1]
proof end;