Lm1: 
 0  in  REAL 
 
by XREAL_0:def 1;
reconsider N =  NAT  as   Subset of REAL by NUMBERS:19;
scheme  
Ind{ 
P1[  
Nat] } :
provided
A1: 
P1[ 
0 ]
 
and A2: 
 for 
k being    
Element of  
NAT   st 
P1[
k] holds 
P1[
k + 1]
 
 
 
scheme  
NatInd{ 
P1[  
Nat] } :
 for 
k being   
Nat holds  
P1[
k]
 
 
provided
A1: 
P1[ 
0 ]
 
and A2: 
 for 
k being   
Nat  st 
P1[
k] holds 
P1[
k + 1]
 
 
 
theorem 
 for 
h, 
i, 
j being   
Nat  st 
i <= j holds 
i * h <= j * h
 
theorem 
 for 
i being   
Nat  holds  
0  < i + 1
 
theorem Th6: 
 for 
i being   
Nat  holds 
( 
i =  0  or  ex 
k being   
Nat st 
i = k + 1 )
 
theorem Th7: 
 for 
i, 
j being   
Nat  st 
i + j =  0  holds 
( 
i =  0  & 
j =  0  )
 
scheme  
DefbyInd{ 
F1() 
->   Nat, 
F2(  
Nat,  
Nat) 
->   Nat, 
P1[  
Nat,  
Nat] } :
( (  for 
k being   
Nat  ex 
n being   
Nat st 
P1[
k,
n] ) & (  for 
k, 
n, 
m being   
Nat  st 
P1[
k,
n] & 
P1[
k,
m] holds 
n = m ) )
 
 
provided
A1: 
 for 
k, 
n being   
Nat holds 
 ( 
P1[
k,
n] iff ( ( 
k =  0  & 
n = F1() ) or  ex 
m, 
l being   
Nat st 
( 
k = m + 1 & 
P1[
m,
l] & 
n = F2(
k,
l) ) ) )
 
 
 
theorem Th8: 
 for 
i, 
j being   
Nat  holds 
(  not 
i <= j + 1 or 
i <= j or 
i = j + 1 )
 
theorem 
 for 
i, 
j being   
Nat  st 
i <= j & 
j <= i + 1 &  not 
i = j holds 
j = i + 1
 
theorem Th10: 
 for 
i, 
j being   
Nat  st 
i <= j holds 
 ex 
k being   
Nat st 
j = i + k
 
theorem Th11: 
 for 
i, 
j being   
Nat holds  
i <= i + j
 
scheme  
CompInd{ 
P1[  
Nat] } :
 for 
k being   
Nat holds  
P1[
k]
 
 
provided
A1: 
 for 
k being   
Nat  st (  for 
n being   
Nat  st 
n < k holds 
P1[
n] ) holds 
P1[
k]
 
 
 
scheme  
Min{ 
P1[  
Nat] } :
 ex 
k being   
Nat st 
( 
P1[
k] & (  for 
n being   
Nat  st 
P1[
n] holds 
k <= n ) )
 
 
provided
A1: 
 ex 
k being   
Nat st 
P1[
k]
 
 
 
scheme  
Max{ 
P1[  
Nat], 
F1() 
->   Nat } :
 ex 
k being   
Nat st 
( 
P1[
k] & (  for 
n being   
Nat  st 
P1[
n] holds 
n <= k ) )
 
 
provided
A1: 
 for 
k being   
Nat  st 
P1[
k] holds 
k <= F1()
 
and A2: 
 ex 
k being   
Nat st 
P1[
k]
 
 
 
theorem Th12: 
 for 
h, 
i, 
j being   
Nat  st 
i <= j holds 
i <= j + h
 
theorem Th13: 
 for 
i, 
j being   
Nat holds 
 ( 
i < j + 1 iff 
i <= j )
 
theorem Th14: 
 for 
j being   
Nat  st 
j < 1 holds 
j =  0  
theorem 
 for 
i, 
j being   
Nat  st 
i * j = 1 holds 
i = 1
 
theorem Th16: 
 for 
k, 
n being   
Nat  st 
k <>  0  holds 
n < n + k
 
scheme  
Regr{ 
P1[  
Nat] } :
provided
A1: 
 ex 
k being   
Nat st 
P1[
k]
 
and A2: 
 for 
k being   
Nat  st 
k <>  0  & 
P1[
k] holds 
 ex 
n being   
Nat st 
( 
n < k & 
P1[
n] )
 
 
 
theorem 
 for 
m being   
Nat  st  
0  < m holds 
 for 
n being   
Nat  ex 
k, 
t being   
Nat st 
( 
n = (m * k) + t & 
t < m )
 
theorem 
 for 
k, 
m, 
n, 
k1, 
t, 
t1 being   
Nat  st 
n = (m * k) + t & 
t < m & 
n = (m * k1) + t1 & 
t1 < m holds 
( 
k = k1 & 
t = t1 )
 
theorem 
 for 
k, 
n being   
Nat holds 
 ( 
k < k + n iff 1 
<= n )
 
theorem Th22: 
 for 
m, 
n being   
Nat  holds 
(  not 
m < n + 1 or 
m < n or 
m = n )
 
theorem 
 for 
k being   
Nat  holds 
(  not 
k < 2 or 
k =  0  or 
k = 1 )
 
theorem 
 for 
h, 
i, 
j being   
Nat  st 
i <>  0  & 
h = j * i holds 
j <= h
 
scheme  
Ind1{ 
F1() 
->   Nat, 
P1[  
Nat] } :
 for 
i being   
Nat  st 
F1() 
<= i holds 
P1[
i]
 
 
provided
A1: 
P1[
F1()]
 
and A2: 
 for 
j being   
Nat  st 
F1() 
<= j & 
P1[
j] holds 
P1[
j + 1]
 
 
 
scheme  
CompInd1{ 
F1() 
->   Nat, 
P1[  
Nat] } :
 for 
k being   
Nat  st 
k >= F1() holds 
P1[
k]
 
 
provided
A1: 
 for 
k being   
Nat  st 
k >= F1() & (  for 
n being   
Nat  st 
n >= F1() & 
n < k holds 
P1[
n] ) holds 
P1[
k]
 
 
 
theorem 
 for 
n being   
Nat  holds 
(  not 
n <= 1 or 
n =  0  or 
n = 1 )
 
Lm2: 
 0  =  {} 
 
;
scheme  
Indfrom1{ 
P1[  
Nat] } :
 for 
k being   non  
zero  Nat holds  
P1[
k]
 
 
provided
A1: 
P1[1]
 
and A2: 
 for 
k being   non  
zero  Nat  st 
P1[
k] holds 
P1[
k + 1]
 
 
 
theorem Th27: 
 for 
m, 
n being   
Nat holds 
 ( 
n <= m iff 
n c= m )
 
theorem Th32: 
 for 
k, 
n being   
Nat holds 
 ( 
k in n iff 
k < n )
 
theorem 
 for 
n being   
Nat holds  
n in n + 1
 
scheme  
RecUn{ 
F1() 
->    element , 
F2() 
->   Function, 
F3() 
->   Function, 
P1[   
set ,   
set ,   
set ] } :
provided
A1: 
 
dom F2() 
=  NAT 
 and A2: 
F2() 
. 0 = F1()
 
and A3: 
 for 
n being   
Nat holds  
P1[
n,
F2() 
. n,
F2() 
. (n + 1)]
 
and A4: 
 
dom F3() 
=  NAT 
 and A5: 
F3() 
. 0 = F1()
 
and A6: 
 for 
n being   
Nat holds  
P1[
n,
F3() 
. n,
F3() 
. (n + 1)]
 
and A7: 
 for 
n being   
Nat  for 
x, 
y1, 
y2 being    
set   st 
P1[
n,
x,
y1] & 
P1[
n,
x,
y2] holds 
y1 = y2
  
 
scheme  
RecUnD{ 
F1() 
->   non  
empty   set , 
F2() 
->    Element of 
F1(), 
P1[   
set ,   
set ,   
set ], 
F3() 
->   sequence of 
F1(), 
F4() 
->   sequence of 
F1() } :
provided
A1: 
F3() 
. 0 = F2()
 
and A2: 
 for 
n being   
Nat holds  
P1[
n,
F3() 
. n,
F3() 
. (n + 1)]
 
and A3: 
F4() 
. 0 = F2()
 
and A4: 
 for 
n being   
Nat holds  
P1[
n,
F4() 
. n,
F4() 
. (n + 1)]
 
and A5: 
 for 
n being   
Nat  for 
x, 
y1, 
y2 being    
Element of 
F1()  st 
P1[
n,
x,
y1] & 
P1[
n,
x,
y2] holds 
y1 = y2
  
 
scheme  
MinIndex{ 
F1(  
Nat) 
->   Nat } :
 ex 
k being   
Nat st 
( 
F1(
k) 
=  0  & (  for 
n being   
Nat  st 
F1(
n) 
=  0  holds 
k <= n ) )
 
 
provided
A1: 
 for 
k being   
Nat  holds 
( 
F1(
(k + 1)) 
< F1(
k) or 
F1(
k) 
=  0  )
 
 
 
Lm3: 
 for s being   ManySortedSet of  NAT 
  for k being   Nat holds   rng (s ^\ k) c=  rng s
 
theorem 
 for 
n being   
Nat  holds 
( 
n is  
zero  or 
n = 1 or 
n > 1 )
 
scheme  
MinPred{ 
F1(  
Nat) 
->   Nat, 
P1[   
set ] } :
 ex 
k being   
Nat st 
( 
P1[
k] & (  for 
n being   
Nat  st 
P1[
n] holds 
k <= n ) )
 
 
provided
A1: 
 for 
k being   
Nat  holds 
( 
F1(
(k + 1)) 
< F1(
k) or 
P1[
k] )
 
 
 
theorem 
 for 
k, 
n being   
Nat  st 
k <= n holds 
 not  not 
k =  0  &  ...  &  not 
k = n
 
theorem 
 for 
n being   
Nat  for 
x being    
set   st 
x in n + 1 holds 
 not  not 
x =  0  &  ...  &  not 
x = n
 
theorem 
 for 
k, 
m, 
i being   
Nat  st 
m <= i & 
i <= m + k holds 
 not  not 
i = m + 0 &  ...  &  not 
i = m + k
 
registration
let A be   non  
zero   element ;
coherence 
{A} is  with_non-empty_elements 
 
let B be   non  
zero   element ;
coherence 
{A,B} is  with_non-empty_elements 
 
let C be   non  
zero   element ;
coherence 
{A,B,C} is  with_non-empty_elements 
 
let D be   non  
zero   element ;
coherence 
{A,B,C,D} is  with_non-empty_elements 
 
let E be   non  
zero   element ;
coherence 
{A,B,C,D,E} is  with_non-empty_elements 
 
let F be   non  
zero   element ;
coherence 
{A,B,C,D,E,F} is  with_non-empty_elements 
 
let G be   non  
zero   element ;
coherence 
{A,B,C,D,E,F,G} is  with_non-empty_elements 
 
let H be   non  
zero   element ;
coherence 
{A,B,C,D,E,F,G,H} is  with_non-empty_elements 
 
let I be   non  
zero   element ;
coherence 
{A,B,C,D,E,F,G,H,I} is  with_non-empty_elements 
 
let J be   non  
zero   element ;
coherence 
{A,B,C,D,E,F,G,H,I,J} is  with_non-empty_elements 
 
 
end;