:: Functional Sequence from a Domain to a Domain
:: by Beata Perkowska
::
:: Received May 22, 1992
:: Copyright (c) 1992-2012 Association of Mizar Users


begin

definition
let D1, D2 be set ;
mode Functional_Sequence of D1,D2 is sequence of (PFuncs (D1,D2));
end;

definition
let D1, D2 be set ;
let F be Functional_Sequence of D1,D2;
let n be Nat;
:: original: .
redefine func F . n -> PartFunc of D1,D2;
coherence
F . n is PartFunc of D1,D2
proof end;
end;

Lm1: for D1, D2 being set
for f being Function holds
( f is Functional_Sequence of D1,D2 iff ( dom f = NAT & ( for x being set st x in NAT holds
f . x is PartFunc of D1,D2 ) ) )

proof end;

theorem :: SEQFUNC:1
for D1, D2 being set
for f being Function holds
( f is Functional_Sequence of D1,D2 iff ( dom f = NAT & ( for n being Element of NAT holds f . n is PartFunc of D1,D2 ) ) )
proof end;

scheme :: SEQFUNC:sch 1
ExFuncSeq{ F1() -> set , F2() -> set , F3( set ) -> PartFunc of F1(),F2() } :
ex G being Functional_Sequence of F1(),F2() st
for n being Nat holds G . n = F3(n)
proof end;

definition
let D be non empty set ;
let H be Functional_Sequence of D,REAL;
let r be real number ;
func r (#) H -> Functional_Sequence of D,REAL means :Def1: :: SEQFUNC:def 1
for n being Nat holds it . n = r (#) (H . n);
existence
ex b1 being Functional_Sequence of D,REAL st
for n being Nat holds b1 . n = r (#) (H . n)
proof end;
uniqueness
for b1, b2 being Functional_Sequence of D,REAL st ( for n being Nat holds b1 . n = r (#) (H . n) ) & ( for n being Nat holds b2 . n = r (#) (H . n) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def1 defines (#) SEQFUNC:def 1 :
for D being non empty set
for H being Functional_Sequence of D,REAL
for r being real number
for b4 being Functional_Sequence of D,REAL holds
( b4 = r (#) H iff for n being Nat holds b4 . n = r (#) (H . n) );

definition
let D be non empty set ;
let H be Functional_Sequence of D,REAL;
func H " -> Functional_Sequence of D,REAL means :Def2: :: SEQFUNC:def 2
for n being Nat holds it . n = (H . n) ^ ;
existence
ex b1 being Functional_Sequence of D,REAL st
for n being Nat holds b1 . n = (H . n) ^
proof end;
uniqueness
for b1, b2 being Functional_Sequence of D,REAL st ( for n being Nat holds b1 . n = (H . n) ^ ) & ( for n being Nat holds b2 . n = (H . n) ^ ) holds
b1 = b2
proof end;
func - H -> Functional_Sequence of D,REAL means :Def3: :: SEQFUNC:def 3
for n being Nat holds it . n = - (H . n);
existence
ex b1 being Functional_Sequence of D,REAL st
for n being Nat holds b1 . n = - (H . n)
proof end;
uniqueness
for b1, b2 being Functional_Sequence of D,REAL st ( for n being Nat holds b1 . n = - (H . n) ) & ( for n being Nat holds b2 . n = - (H . n) ) holds
b1 = b2
proof end;
involutiveness
for b1, b2 being Functional_Sequence of D,REAL st ( for n being Nat holds b1 . n = - (b2 . n) ) holds
for n being Nat holds b2 . n = - (b1 . n)
proof end;
func abs H -> Functional_Sequence of D,REAL means :Def4: :: SEQFUNC:def 4
for n being Nat holds it . n = abs (H . n);
existence
ex b1 being Functional_Sequence of D,REAL st
for n being Nat holds b1 . n = abs (H . n)
proof end;
uniqueness
for b1, b2 being Functional_Sequence of D,REAL st ( for n being Nat holds b1 . n = abs (H . n) ) & ( for n being Nat holds b2 . n = abs (H . n) ) holds
b1 = b2
proof end;
projectivity
for b1, b2 being Functional_Sequence of D,REAL st ( for n being Nat holds b1 . n = abs (b2 . n) ) holds
for n being Nat holds b1 . n = abs (b1 . n)
proof end;
end;

:: deftheorem Def2 defines " SEQFUNC:def 2 :
for D being non empty set
for H, b3 being Functional_Sequence of D,REAL holds
( b3 = H " iff for n being Nat holds b3 . n = (H . n) ^ );

:: deftheorem Def3 defines - SEQFUNC:def 3 :
for D being non empty set
for H, b3 being Functional_Sequence of D,REAL holds
( b3 = - H iff for n being Nat holds b3 . n = - (H . n) );

:: deftheorem Def4 defines abs SEQFUNC:def 4 :
for D being non empty set
for H, b3 being Functional_Sequence of D,REAL holds
( b3 = abs H iff for n being Nat holds b3 . n = abs (H . n) );

definition
let D be non empty set ;
let G, H be Functional_Sequence of D,REAL;
func G + H -> Functional_Sequence of D,REAL means :Def5: :: SEQFUNC:def 5
for n being Nat holds it . n = (G . n) + (H . n);
existence
ex b1 being Functional_Sequence of D,REAL st
for n being Nat holds b1 . n = (G . n) + (H . n)
proof end;
uniqueness
for b1, b2 being Functional_Sequence of D,REAL st ( for n being Nat holds b1 . n = (G . n) + (H . n) ) & ( for n being Nat holds b2 . n = (G . n) + (H . n) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def5 defines + SEQFUNC:def 5 :
for D being non empty set
for G, H, b4 being Functional_Sequence of D,REAL holds
( b4 = G + H iff for n being Nat holds b4 . n = (G . n) + (H . n) );

definition
let D be non empty set ;
let G, H be Functional_Sequence of D,REAL;
func G - H -> Functional_Sequence of D,REAL equals :: SEQFUNC:def 6
G + (- H);
correctness
coherence
G + (- H) is Functional_Sequence of D,REAL
;
;
end;

:: deftheorem defines - SEQFUNC:def 6 :
for D being non empty set
for G, H being Functional_Sequence of D,REAL holds G - H = G + (- H);

definition
let D be non empty set ;
let G, H be Functional_Sequence of D,REAL;
func G (#) H -> Functional_Sequence of D,REAL means :Def7: :: SEQFUNC:def 7
for n being Nat holds it . n = (G . n) (#) (H . n);
existence
ex b1 being Functional_Sequence of D,REAL st
for n being Nat holds b1 . n = (G . n) (#) (H . n)
proof end;
uniqueness
for b1, b2 being Functional_Sequence of D,REAL st ( for n being Nat holds b1 . n = (G . n) (#) (H . n) ) & ( for n being Nat holds b2 . n = (G . n) (#) (H . n) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def7 defines (#) SEQFUNC:def 7 :
for D being non empty set
for G, H, b4 being Functional_Sequence of D,REAL holds
( b4 = G (#) H iff for n being Nat holds b4 . n = (G . n) (#) (H . n) );

definition
let D be non empty set ;
let H, G be Functional_Sequence of D,REAL;
func G / H -> Functional_Sequence of D,REAL equals :: SEQFUNC:def 8
G (#) (H ");
correctness
coherence
G (#) (H ") is Functional_Sequence of D,REAL
;
;
end;

:: deftheorem defines / SEQFUNC:def 8 :
for D being non empty set
for H, G being Functional_Sequence of D,REAL holds G / H = G (#) (H ");

theorem :: SEQFUNC:2
for D being non empty set
for H1, G, H being Functional_Sequence of D,REAL holds
( H1 = G / H iff for n being Element of NAT holds H1 . n = (G . n) / (H . n) )
proof end;

theorem Th3: :: SEQFUNC:3
for D being non empty set
for H1, G, H being Functional_Sequence of D,REAL holds
( H1 = G - H iff for n being Element of NAT holds H1 . n = (G . n) - (H . n) )
proof end;

theorem :: SEQFUNC:4
for D being non empty set
for G, H, J being Functional_Sequence of D,REAL holds
( G + H = H + G & (G + H) + J = G + (H + J) )
proof end;

theorem Th5: :: SEQFUNC:5
for D being non empty set
for G, H, J being Functional_Sequence of D,REAL holds
( G (#) H = H (#) G & (G (#) H) (#) J = G (#) (H (#) J) )
proof end;

theorem :: SEQFUNC:6
for D being non empty set
for G, H, J being Functional_Sequence of D,REAL holds
( (G + H) (#) J = (G (#) J) + (H (#) J) & J (#) (G + H) = (J (#) G) + (J (#) H) )
proof end;

theorem :: SEQFUNC:7
for D being non empty set
for H being Functional_Sequence of D,REAL holds - H = (- 1) (#) H
proof end;

theorem :: SEQFUNC:8
for D being non empty set
for G, H, J being Functional_Sequence of D,REAL holds
( (G - H) (#) J = (G (#) J) - (H (#) J) & (J (#) G) - (J (#) H) = J (#) (G - H) )
proof end;

theorem :: SEQFUNC:9
for D being non empty set
for r being Real
for G, H being Functional_Sequence of D,REAL holds
( r (#) (G + H) = (r (#) G) + (r (#) H) & r (#) (G - H) = (r (#) G) - (r (#) H) )
proof end;

theorem :: SEQFUNC:10
for D being non empty set
for r, p being Real
for H being Functional_Sequence of D,REAL holds (r * p) (#) H = r (#) (p (#) H)
proof end;

theorem :: SEQFUNC:11
for D being non empty set
for H being Functional_Sequence of D,REAL holds 1 (#) H = H
proof end;

theorem :: SEQFUNC:12
canceled;

theorem :: SEQFUNC:13
for D being non empty set
for G, H being Functional_Sequence of D,REAL holds (G ") (#) (H ") = (G (#) H) "
proof end;

theorem :: SEQFUNC:14
for D being non empty set
for r being Real
for H being Functional_Sequence of D,REAL st r <> 0 holds
(r (#) H) " = (r ") (#) (H ")
proof end;

theorem Th15: :: SEQFUNC:15
for D being non empty set
for H being Functional_Sequence of D,REAL holds (abs H) " = abs (H ")
proof end;

theorem Th16: :: SEQFUNC:16
for D being non empty set
for G, H being Functional_Sequence of D,REAL holds abs (G (#) H) = (abs G) (#) (abs H)
proof end;

theorem :: SEQFUNC:17
for D being non empty set
for G, H being Functional_Sequence of D,REAL holds abs (G / H) = (abs G) / (abs H)
proof end;

theorem :: SEQFUNC:18
for D being non empty set
for r being Real
for H being Functional_Sequence of D,REAL holds abs (r (#) H) = (abs r) (#) (abs H)
proof end;

definition
let D1, D2 be set ;
let F be Functional_Sequence of D1,D2;
let X be set ;
pred X common_on_dom F means :Def9: :: SEQFUNC:def 9
( X <> {} & ( for n being Element of NAT holds X c= dom (F . n) ) );
end;

:: deftheorem Def9 defines common_on_dom SEQFUNC:def 9 :
for D1, D2 being set
for F being Functional_Sequence of D1,D2
for X being set holds
( X common_on_dom F iff ( X <> {} & ( for n being Element of NAT holds X c= dom (F . n) ) ) );

definition
let D be non empty set ;
let H be Functional_Sequence of D,REAL;
let x be Element of D;
func H # x -> Real_Sequence means :Def10: :: SEQFUNC:def 10
for n being Element of NAT holds it . n = (H . n) . x;
existence
ex b1 being Real_Sequence st
for n being Element of NAT holds b1 . n = (H . n) . x
proof end;
uniqueness
for b1, b2 being Real_Sequence st ( for n being Element of NAT holds b1 . n = (H . n) . x ) & ( for n being Element of NAT holds b2 . n = (H . n) . x ) holds
b1 = b2
proof end;
end;

:: deftheorem Def10 defines # SEQFUNC:def 10 :
for D being non empty set
for H being Functional_Sequence of D,REAL
for x being Element of D
for b4 being Real_Sequence holds
( b4 = H # x iff for n being Element of NAT holds b4 . n = (H . n) . x );

definition
let D be non empty set ;
let H be Functional_Sequence of D,REAL;
let X be set ;
pred H is_point_conv_on X means :Def11: :: SEQFUNC:def 11
( X common_on_dom H & ex f being PartFunc of D,REAL st
( X = dom f & ( for x being Element of D st x in X holds
for p being Real st p > 0 holds
ex k being Element of NAT st
for n being Element of NAT st n >= k holds
abs (((H . n) . x) - (f . x)) < p ) ) );
end;

:: deftheorem Def11 defines is_point_conv_on SEQFUNC:def 11 :
for D being non empty set
for H being Functional_Sequence of D,REAL
for X being set holds
( H is_point_conv_on X iff ( X common_on_dom H & ex f being PartFunc of D,REAL st
( X = dom f & ( for x being Element of D st x in X holds
for p being Real st p > 0 holds
ex k being Element of NAT st
for n being Element of NAT st n >= k holds
abs (((H . n) . x) - (f . x)) < p ) ) ) );

theorem Th19: :: SEQFUNC:19
for D being non empty set
for H being Functional_Sequence of D,REAL
for X being set holds
( H is_point_conv_on X iff ( X common_on_dom H & ex f being PartFunc of D,REAL st
( X = dom f & ( for x being Element of D st x in X holds
( H # x is convergent & lim (H # x) = f . x ) ) ) ) )
proof end;

theorem Th20: :: SEQFUNC:20
for D being non empty set
for H being Functional_Sequence of D,REAL
for X being set holds
( H is_point_conv_on X iff ( X common_on_dom H & ( for x being Element of D st x in X holds
H # x is convergent ) ) )
proof end;

definition
let D be non empty set ;
let H be Functional_Sequence of D,REAL;
let X be set ;
pred H is_unif_conv_on X means :Def12: :: SEQFUNC:def 12
( X common_on_dom H & ex f being PartFunc of D,REAL st
( X = dom f & ( for p being Real st p > 0 holds
ex k being Element of NAT st
for n being Element of NAT
for x being Element of D st n >= k & x in X holds
abs (((H . n) . x) - (f . x)) < p ) ) );
end;

:: deftheorem Def12 defines is_unif_conv_on SEQFUNC:def 12 :
for D being non empty set
for H being Functional_Sequence of D,REAL
for X being set holds
( H is_unif_conv_on X iff ( X common_on_dom H & ex f being PartFunc of D,REAL st
( X = dom f & ( for p being Real st p > 0 holds
ex k being Element of NAT st
for n being Element of NAT
for x being Element of D st n >= k & x in X holds
abs (((H . n) . x) - (f . x)) < p ) ) ) );

definition
let D be non empty set ;
let H be Functional_Sequence of D,REAL;
let X be set ;
assume A1: H is_point_conv_on X ;
func lim (H,X) -> PartFunc of D,REAL means :Def13: :: SEQFUNC:def 13
( dom it = X & ( for x being Element of D st x in dom it holds
it . x = lim (H # x) ) );
existence
ex b1 being PartFunc of D,REAL st
( dom b1 = X & ( for x being Element of D st x in dom b1 holds
b1 . x = lim (H # x) ) )
proof end;
uniqueness
for b1, b2 being PartFunc of D,REAL st dom b1 = X & ( for x being Element of D st x in dom b1 holds
b1 . x = lim (H # x) ) & dom b2 = X & ( for x being Element of D st x in dom b2 holds
b2 . x = lim (H # x) ) holds
b1 = b2
proof end;
end;

:: deftheorem Def13 defines lim SEQFUNC:def 13 :
for D being non empty set
for H being Functional_Sequence of D,REAL
for X being set st H is_point_conv_on X holds
for b4 being PartFunc of D,REAL holds
( b4 = lim (H,X) iff ( dom b4 = X & ( for x being Element of D st x in dom b4 holds
b4 . x = lim (H # x) ) ) );

theorem Th21: :: SEQFUNC:21
for D being non empty set
for H being Functional_Sequence of D,REAL
for X being set
for f being PartFunc of D,REAL st H is_point_conv_on X holds
( f = lim (H,X) iff ( dom f = X & ( for x being Element of D st x in X holds
for p being Real st p > 0 holds
ex k being Element of NAT st
for n being Element of NAT st n >= k holds
abs (((H . n) . x) - (f . x)) < p ) ) )
proof end;

theorem Th22: :: SEQFUNC:22
for D being non empty set
for H being Functional_Sequence of D,REAL
for X being set st H is_unif_conv_on X holds
H is_point_conv_on X
proof end;

theorem Th23: :: SEQFUNC:23
for D being non empty set
for H being Functional_Sequence of D,REAL
for Y, X being set st Y c= X & Y <> {} & X common_on_dom H holds
Y common_on_dom H
proof end;

theorem :: SEQFUNC:24
for D being non empty set
for H being Functional_Sequence of D,REAL
for Y, X being set st Y c= X & Y <> {} & H is_point_conv_on X holds
( H is_point_conv_on Y & (lim (H,X)) | Y = lim (H,Y) )
proof end;

theorem :: SEQFUNC:25
for D being non empty set
for H being Functional_Sequence of D,REAL
for Y, X being set st Y c= X & Y <> {} & H is_unif_conv_on X holds
H is_unif_conv_on Y
proof end;

theorem Th26: :: SEQFUNC:26
for D being non empty set
for H being Functional_Sequence of D,REAL
for X being set st X common_on_dom H holds
for x being Element of D st x in X holds
{x} common_on_dom H
proof end;

theorem :: SEQFUNC:27
for D being non empty set
for H being Functional_Sequence of D,REAL
for X being set st H is_point_conv_on X holds
for x being Element of D st x in X holds
{x} common_on_dom H
proof end;

theorem Th28: :: SEQFUNC:28
for D being non empty set
for H1, H2 being Functional_Sequence of D,REAL
for x being Element of D st {x} common_on_dom H1 & {x} common_on_dom H2 holds
( (H1 # x) + (H2 # x) = (H1 + H2) # x & (H1 # x) - (H2 # x) = (H1 - H2) # x & (H1 # x) (#) (H2 # x) = (H1 (#) H2) # x )
proof end;

theorem Th29: :: SEQFUNC:29
for D being non empty set
for H being Functional_Sequence of D,REAL
for x being Element of D holds
( (abs H) # x = abs (H # x) & (- H) # x = - (H # x) )
proof end;

theorem Th30: :: SEQFUNC:30
for D being non empty set
for r being Real
for H being Functional_Sequence of D,REAL
for x being Element of D st {x} common_on_dom H holds
(r (#) H) # x = r (#) (H # x)
proof end;

theorem Th31: :: SEQFUNC:31
for D being non empty set
for H1, H2 being Functional_Sequence of D,REAL
for X being set st X common_on_dom H1 & X common_on_dom H2 holds
for x being Element of D st x in X holds
( (H1 # x) + (H2 # x) = (H1 + H2) # x & (H1 # x) - (H2 # x) = (H1 - H2) # x & (H1 # x) (#) (H2 # x) = (H1 (#) H2) # x )
proof end;

theorem Th32: :: SEQFUNC:32
for D being non empty set
for H being Functional_Sequence of D,REAL
for x being Element of D holds
( (abs H) # x = abs (H # x) & (- H) # x = - (H # x) ) by Th29;

theorem Th33: :: SEQFUNC:33
for D being non empty set
for r being Real
for H being Functional_Sequence of D,REAL
for X being set st X common_on_dom H holds
for x being Element of D st x in X holds
(r (#) H) # x = r (#) (H # x)
proof end;

theorem Th34: :: SEQFUNC:34
for D being non empty set
for H1, H2 being Functional_Sequence of D,REAL
for X being set st H1 is_point_conv_on X & H2 is_point_conv_on X holds
for x being Element of D st x in X holds
( (H1 # x) + (H2 # x) = (H1 + H2) # x & (H1 # x) - (H2 # x) = (H1 - H2) # x & (H1 # x) (#) (H2 # x) = (H1 (#) H2) # x )
proof end;

theorem :: SEQFUNC:35
for D being non empty set
for H being Functional_Sequence of D,REAL
for x being Element of D holds
( (abs H) # x = abs (H # x) & (- H) # x = - (H # x) ) by Th32;

theorem :: SEQFUNC:36
for D being non empty set
for r being Real
for H being Functional_Sequence of D,REAL
for X being set st H is_point_conv_on X holds
for x being Element of D st x in X holds
(r (#) H) # x = r (#) (H # x)
proof end;

theorem Th37: :: SEQFUNC:37
for D being non empty set
for H1, H2 being Functional_Sequence of D,REAL
for X being set st X common_on_dom H1 & X common_on_dom H2 holds
( X common_on_dom H1 + H2 & X common_on_dom H1 - H2 & X common_on_dom H1 (#) H2 )
proof end;

theorem Th38: :: SEQFUNC:38
for D being non empty set
for H being Functional_Sequence of D,REAL
for X being set st X common_on_dom H holds
( X common_on_dom abs H & X common_on_dom - H )
proof end;

theorem Th39: :: SEQFUNC:39
for D being non empty set
for r being Real
for H being Functional_Sequence of D,REAL
for X being set st X common_on_dom H holds
X common_on_dom r (#) H
proof end;

theorem :: SEQFUNC:40
for D being non empty set
for H1, H2 being Functional_Sequence of D,REAL
for X being set st H1 is_point_conv_on X & H2 is_point_conv_on X holds
( H1 + H2 is_point_conv_on X & lim ((H1 + H2),X) = (lim (H1,X)) + (lim (H2,X)) & H1 - H2 is_point_conv_on X & lim ((H1 - H2),X) = (lim (H1,X)) - (lim (H2,X)) & H1 (#) H2 is_point_conv_on X & lim ((H1 (#) H2),X) = (lim (H1,X)) (#) (lim (H2,X)) )
proof end;

theorem :: SEQFUNC:41
for D being non empty set
for H being Functional_Sequence of D,REAL
for X being set st H is_point_conv_on X holds
( abs H is_point_conv_on X & lim ((abs H),X) = abs (lim (H,X)) & - H is_point_conv_on X & lim ((- H),X) = - (lim (H,X)) )
proof end;

theorem :: SEQFUNC:42
for D being non empty set
for r being Real
for H being Functional_Sequence of D,REAL
for X being set st H is_point_conv_on X holds
( r (#) H is_point_conv_on X & lim ((r (#) H),X) = r (#) (lim (H,X)) )
proof end;

theorem Th43: :: SEQFUNC:43
for D being non empty set
for H being Functional_Sequence of D,REAL
for X being set holds
( H is_unif_conv_on X iff ( X common_on_dom H & H is_point_conv_on X & ( for r being Real st 0 < r holds
ex k being Element of NAT st
for n being Element of NAT
for x being Element of D st n >= k & x in X holds
abs (((H . n) . x) - ((lim (H,X)) . x)) < r ) ) )
proof end;

theorem :: SEQFUNC:44
for X being set
for H being Functional_Sequence of REAL,REAL st H is_unif_conv_on X & ( for n being Element of NAT holds (H . n) | X is continuous ) holds
(lim (H,X)) | X is continuous
proof end;