:: FUNCT_7 semantic presentation begin theorem :: FUNCT_7:1 for f being Function for X being set st rng f c= X holds (id X) * f = f proof let f be Function; ::_thesis: for X being set st rng f c= X holds (id X) * f = f let X be set ; ::_thesis: ( rng f c= X implies (id X) * f = f ) assume rng f c= X ; ::_thesis: (id X) * f = f then reconsider g = f as Function of (dom f),X by FUNCT_2:2; (id X) * g = g by FUNCT_2:17; hence (id X) * f = f ; ::_thesis: verum end; theorem :: FUNCT_7:2 for X being set for Y being non empty set for f being Function of X,Y st f is one-to-one holds for B being Subset of X for C being Subset of Y st C c= f .: B holds f " C c= B proof let X be set ; ::_thesis: for Y being non empty set for f being Function of X,Y st f is one-to-one holds for B being Subset of X for C being Subset of Y st C c= f .: B holds f " C c= B let Y be non empty set ; ::_thesis: for f being Function of X,Y st f is one-to-one holds for B being Subset of X for C being Subset of Y st C c= f .: B holds f " C c= B let f be Function of X,Y; ::_thesis: ( f is one-to-one implies for B being Subset of X for C being Subset of Y st C c= f .: B holds f " C c= B ) assume A1: f is one-to-one ; ::_thesis: for B being Subset of X for C being Subset of Y st C c= f .: B holds f " C c= B let B be Subset of X; ::_thesis: for C being Subset of Y st C c= f .: B holds f " C c= B let C be Subset of Y; ::_thesis: ( C c= f .: B implies f " C c= B ) assume C c= f .: B ; ::_thesis: f " C c= B then A2: f " C c= f " (f .: B) by RELAT_1:143; f " (f .: B) c= B by A1, FUNCT_1:82; hence f " C c= B by A2, XBOOLE_1:1; ::_thesis: verum end; theorem Th3: :: FUNCT_7:3 for X, Y being non empty set for f being Function of X,Y st f is one-to-one holds for x being Element of X for A being Subset of X st f . x in f .: A holds x in A proof let X, Y be non empty set ; ::_thesis: for f being Function of X,Y st f is one-to-one holds for x being Element of X for A being Subset of X st f . x in f .: A holds x in A let f be Function of X,Y; ::_thesis: ( f is one-to-one implies for x being Element of X for A being Subset of X st f . x in f .: A holds x in A ) assume A1: f is one-to-one ; ::_thesis: for x being Element of X for A being Subset of X st f . x in f .: A holds x in A let x be Element of X; ::_thesis: for A being Subset of X st f . x in f .: A holds x in A let A be Subset of X; ::_thesis: ( f . x in f .: A implies x in A ) assume f . x in f .: A ; ::_thesis: x in A then ex y being Element of X st ( y in A & f . y = f . x ) by FUNCT_2:65; hence x in A by A1, FUNCT_2:19; ::_thesis: verum end; theorem Th4: :: FUNCT_7:4 for X, Y being non empty set for f being Function of X,Y st f is one-to-one holds for x being Element of X for A being Subset of X for B being Subset of Y st f . x in (f .: A) \ B holds x in A \ (f " B) proof let X, Y be non empty set ; ::_thesis: for f being Function of X,Y st f is one-to-one holds for x being Element of X for A being Subset of X for B being Subset of Y st f . x in (f .: A) \ B holds x in A \ (f " B) let f be Function of X,Y; ::_thesis: ( f is one-to-one implies for x being Element of X for A being Subset of X for B being Subset of Y st f . x in (f .: A) \ B holds x in A \ (f " B) ) assume A1: f is one-to-one ; ::_thesis: for x being Element of X for A being Subset of X for B being Subset of Y st f . x in (f .: A) \ B holds x in A \ (f " B) let x be Element of X; ::_thesis: for A being Subset of X for B being Subset of Y st f . x in (f .: A) \ B holds x in A \ (f " B) let A be Subset of X; ::_thesis: for B being Subset of Y st f . x in (f .: A) \ B holds x in A \ (f " B) let B be Subset of Y; ::_thesis: ( f . x in (f .: A) \ B implies x in A \ (f " B) ) assume A2: f . x in (f .: A) \ B ; ::_thesis: x in A \ (f " B) A3: now__::_thesis:_not_x_in_f_"_B assume x in f " B ; ::_thesis: contradiction then f . x in B by FUNCT_1:def_7; hence contradiction by A2, XBOOLE_0:def_5; ::_thesis: verum end; f . x in f .: A by A2, XBOOLE_0:def_5; then x in A by A1, Th3; hence x in A \ (f " B) by A3, XBOOLE_0:def_5; ::_thesis: verum end; theorem :: FUNCT_7:5 for X, Y being non empty set for f being Function of X,Y st f is one-to-one holds for y being Element of Y for A being Subset of X for B being Subset of Y st y in (f .: A) \ B holds (f ") . y in A \ (f " B) proof let X, Y be non empty set ; ::_thesis: for f being Function of X,Y st f is one-to-one holds for y being Element of Y for A being Subset of X for B being Subset of Y st y in (f .: A) \ B holds (f ") . y in A \ (f " B) let f be Function of X,Y; ::_thesis: ( f is one-to-one implies for y being Element of Y for A being Subset of X for B being Subset of Y st y in (f .: A) \ B holds (f ") . y in A \ (f " B) ) assume A1: f is one-to-one ; ::_thesis: for y being Element of Y for A being Subset of X for B being Subset of Y st y in (f .: A) \ B holds (f ") . y in A \ (f " B) let y be Element of Y; ::_thesis: for A being Subset of X for B being Subset of Y st y in (f .: A) \ B holds (f ") . y in A \ (f " B) let A be Subset of X; ::_thesis: for B being Subset of Y st y in (f .: A) \ B holds (f ") . y in A \ (f " B) let B be Subset of Y; ::_thesis: ( y in (f .: A) \ B implies (f ") . y in A \ (f " B) ) assume A2: y in (f .: A) \ B ; ::_thesis: (f ") . y in A \ (f " B) then A3: y in f .: A by XBOOLE_0:def_5; A4: f .: A c= rng f by RELAT_1:111; then (f ") . y in dom f by A1, A3, FUNCT_1:32; then reconsider x = (f ") . y as Element of X ; y = f . x by A1, A3, A4, FUNCT_1:35; hence (f ") . y in A \ (f " B) by A1, A2, Th4; ::_thesis: verum end; theorem Th6: :: FUNCT_7:6 for f being Function for a being set st a in dom f holds f | {a} = a .--> (f . a) proof let f be Function; ::_thesis: for a being set st a in dom f holds f | {a} = a .--> (f . a) let a be set ; ::_thesis: ( a in dom f implies f | {a} = a .--> (f . a) ) assume a in dom f ; ::_thesis: f | {a} = a .--> (f . a) hence f | {a} = {[a,(f . a)]} by GRFUNC_1:28 .= a .--> (f . a) by ZFMISC_1:29 ; ::_thesis: verum end; registration let x, y be set ; clusterx .--> y -> non empty ; coherence not x .--> y is empty ; end; registration let x, y, a, b be set ; cluster(x,y) --> (a,b) -> non empty ; coherence not (x,y) --> (a,b) is empty ; end; theorem Th7: :: FUNCT_7:7 for I being set for M being ManySortedSet of I for i being set st i in I holds i .--> (M . i) = M | {i} proof let I be set ; ::_thesis: for M being ManySortedSet of I for i being set st i in I holds i .--> (M . i) = M | {i} let M be ManySortedSet of I; ::_thesis: for i being set st i in I holds i .--> (M . i) = M | {i} let i be set ; ::_thesis: ( i in I implies i .--> (M . i) = M | {i} ) assume i in I ; ::_thesis: i .--> (M . i) = M | {i} then i in dom M by PARTFUN1:def_2; hence i .--> (M . i) = M | {i} by Th6; ::_thesis: verum end; theorem :: FUNCT_7:8 for I, J being set for M being ManySortedSet of [:I,J:] for i, j being set st i in I & j in J holds (i,j) :-> (M . (i,j)) = M | [:{i},{j}:] proof let I, J be set ; ::_thesis: for M being ManySortedSet of [:I,J:] for i, j being set st i in I & j in J holds (i,j) :-> (M . (i,j)) = M | [:{i},{j}:] let M be ManySortedSet of [:I,J:]; ::_thesis: for i, j being set st i in I & j in J holds (i,j) :-> (M . (i,j)) = M | [:{i},{j}:] let i, j be set ; ::_thesis: ( i in I & j in J implies (i,j) :-> (M . (i,j)) = M | [:{i},{j}:] ) assume ( i in I & j in J ) ; ::_thesis: (i,j) :-> (M . (i,j)) = M | [:{i},{j}:] then A1: [i,j] in [:I,J:] by ZFMISC_1:87; thus (i,j) :-> (M . (i,j)) = [i,j] .--> (M . [i,j]) .= M | {[i,j]} by A1, Th7 .= M | [:{i},{j}:] by ZFMISC_1:29 ; ::_thesis: verum end; theorem Th9: :: FUNCT_7:9 for f, g, h being Function st rng h c= dom f holds f * (g +* h) = (f * g) +* (f * h) proof let f, g, h be Function; ::_thesis: ( rng h c= dom f implies f * (g +* h) = (f * g) +* (f * h) ) assume A1: rng h c= dom f ; ::_thesis: f * (g +* h) = (f * g) +* (f * h) A2: dom h c= dom (g +* h) by FUNCT_4:10; A3: dom g c= dom (g +* h) by FUNCT_4:10; A4: dom (f * (g +* h)) = (dom (f * g)) \/ (dom (f * h)) proof thus dom (f * (g +* h)) c= (dom (f * g)) \/ (dom (f * h)) :: according to XBOOLE_0:def_10 ::_thesis: (dom (f * g)) \/ (dom (f * h)) c= dom (f * (g +* h)) proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in dom (f * (g +* h)) or x in (dom (f * g)) \/ (dom (f * h)) ) assume A5: x in dom (f * (g +* h)) ; ::_thesis: x in (dom (f * g)) \/ (dom (f * h)) then A6: (g +* h) . x in dom f by FUNCT_1:11; x in dom (g +* h) by A5, FUNCT_1:11; then A7: x in (dom g) \/ (dom h) by FUNCT_4:def_1; percases ( x in dom h or not x in dom h ) ; supposeA8: x in dom h ; ::_thesis: x in (dom (f * g)) \/ (dom (f * h)) then h . x in dom f by A6, FUNCT_4:13; then x in dom (f * h) by A8, FUNCT_1:11; hence x in (dom (f * g)) \/ (dom (f * h)) by XBOOLE_0:def_3; ::_thesis: verum end; suppose not x in dom h ; ::_thesis: x in (dom (f * g)) \/ (dom (f * h)) then ( g . x in dom f & x in dom g ) by A7, A6, FUNCT_4:11, XBOOLE_0:def_3; then x in dom (f * g) by FUNCT_1:11; hence x in (dom (f * g)) \/ (dom (f * h)) by XBOOLE_0:def_3; ::_thesis: verum end; end; end; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in (dom (f * g)) \/ (dom (f * h)) or x in dom (f * (g +* h)) ) assume A9: x in (dom (f * g)) \/ (dom (f * h)) ; ::_thesis: x in dom (f * (g +* h)) percases ( x in dom (f * h) or not x in dom (f * h) ) ; supposeA10: x in dom (f * h) ; ::_thesis: x in dom (f * (g +* h)) then A11: h . x in dom f by FUNCT_1:11; A12: x in dom h by A10, FUNCT_1:11; then (g +* h) . x = h . x by FUNCT_4:13; hence x in dom (f * (g +* h)) by A2, A12, A11, FUNCT_1:11; ::_thesis: verum end; supposeA13: not x in dom (f * h) ; ::_thesis: x in dom (f * (g +* h)) ( x in dom h implies h . x in dom f ) proof assume x in dom h ; ::_thesis: h . x in dom f then h . x in rng h by FUNCT_1:3; hence h . x in dom f by A1; ::_thesis: verum end; then not x in dom h by A13, FUNCT_1:11; then A14: (g +* h) . x = g . x by FUNCT_4:11; x in dom (f * g) by A9, A13, XBOOLE_0:def_3; then ( g . x in dom f & x in dom g ) by FUNCT_1:11; hence x in dom (f * (g +* h)) by A3, A14, FUNCT_1:11; ::_thesis: verum end; end; end; now__::_thesis:_for_x_being_set_st_x_in_(dom_(f_*_g))_\/_(dom_(f_*_h))_holds_ (_(_x_in_dom_(f_*_h)_implies_(f_*_(g_+*_h))_._x_=_(f_*_h)_._x_)_&_(_not_x_in_dom_(f_*_h)_implies_(f_*_(g_+*_h))_._x_=_(f_*_g)_._x_)_) let x be set ; ::_thesis: ( x in (dom (f * g)) \/ (dom (f * h)) implies ( ( x in dom (f * h) implies (f * (g +* h)) . x = (f * h) . x ) & ( not x in dom (f * h) implies (f * (g +* h)) . x = (f * g) . x ) ) ) assume A15: x in (dom (f * g)) \/ (dom (f * h)) ; ::_thesis: ( ( x in dom (f * h) implies (f * (g +* h)) . x = (f * h) . x ) & ( not x in dom (f * h) implies (f * (g +* h)) . x = (f * g) . x ) ) thus ( x in dom (f * h) implies (f * (g +* h)) . x = (f * h) . x ) ::_thesis: ( not x in dom (f * h) implies (f * (g +* h)) . x = (f * g) . x ) proof assume x in dom (f * h) ; ::_thesis: (f * (g +* h)) . x = (f * h) . x then A16: x in dom h by FUNCT_1:11; hence (f * (g +* h)) . x = f . ((g +* h) . x) by A2, FUNCT_1:13 .= f . (h . x) by A16, FUNCT_4:13 .= (f * h) . x by A16, FUNCT_1:13 ; ::_thesis: verum end; assume A17: not x in dom (f * h) ; ::_thesis: (f * (g +* h)) . x = (f * g) . x ( x in dom h implies h . x in dom f ) proof assume x in dom h ; ::_thesis: h . x in dom f then h . x in rng h by FUNCT_1:3; hence h . x in dom f by A1; ::_thesis: verum end; then A18: not x in dom h by A17, FUNCT_1:11; x in dom (f * g) by A15, A17, XBOOLE_0:def_3; then A19: x in dom g by FUNCT_1:11; hence (f * (g +* h)) . x = f . ((g +* h) . x) by A3, FUNCT_1:13 .= f . (g . x) by A18, FUNCT_4:11 .= (f * g) . x by A19, FUNCT_1:13 ; ::_thesis: verum end; hence f * (g +* h) = (f * g) +* (f * h) by A4, FUNCT_4:def_1; ::_thesis: verum end; theorem Th10: :: FUNCT_7:10 for f, g, h being Function holds (g +* h) * f = (g * f) +* (h * f) proof let f, g, h be Function; ::_thesis: (g +* h) * f = (g * f) +* (h * f) A1: dom ((g +* h) * f) = (dom (g * f)) \/ (dom (h * f)) proof thus dom ((g +* h) * f) c= (dom (g * f)) \/ (dom (h * f)) :: according to XBOOLE_0:def_10 ::_thesis: (dom (g * f)) \/ (dom (h * f)) c= dom ((g +* h) * f) proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in dom ((g +* h) * f) or x in (dom (g * f)) \/ (dom (h * f)) ) assume A2: x in dom ((g +* h) * f) ; ::_thesis: x in (dom (g * f)) \/ (dom (h * f)) then f . x in dom (g +* h) by FUNCT_1:11; then f . x in (dom g) \/ (dom h) by FUNCT_4:def_1; then A3: ( f . x in dom g or f . x in dom h ) by XBOOLE_0:def_3; x in dom f by A2, FUNCT_1:11; then ( x in dom (g * f) or x in dom (h * f) ) by A3, FUNCT_1:11; hence x in (dom (g * f)) \/ (dom (h * f)) by XBOOLE_0:def_3; ::_thesis: verum end; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in (dom (g * f)) \/ (dom (h * f)) or x in dom ((g +* h) * f) ) assume x in (dom (g * f)) \/ (dom (h * f)) ; ::_thesis: x in dom ((g +* h) * f) then A4: ( x in dom (g * f) or x in dom (h * f) ) by XBOOLE_0:def_3; then ( f . x in dom g or f . x in dom h ) by FUNCT_1:11; then f . x in (dom g) \/ (dom h) by XBOOLE_0:def_3; then A5: f . x in dom (g +* h) by FUNCT_4:def_1; x in dom f by A4, FUNCT_1:11; hence x in dom ((g +* h) * f) by A5, FUNCT_1:11; ::_thesis: verum end; now__::_thesis:_for_x_being_set_st_x_in_(dom_(g_*_f))_\/_(dom_(h_*_f))_holds_ (_(_x_in_dom_(h_*_f)_implies_((g_+*_h)_*_f)_._x_=_(h_*_f)_._x_)_&_(_not_x_in_dom_(h_*_f)_implies_((g_+*_h)_*_f)_._x_=_(g_*_f)_._x_)_) let x be set ; ::_thesis: ( x in (dom (g * f)) \/ (dom (h * f)) implies ( ( x in dom (h * f) implies ((g +* h) * f) . x = (h * f) . x ) & ( not x in dom (h * f) implies ((g +* h) * f) . x = (g * f) . x ) ) ) assume x in (dom (g * f)) \/ (dom (h * f)) ; ::_thesis: ( ( x in dom (h * f) implies ((g +* h) * f) . x = (h * f) . x ) & ( not x in dom (h * f) implies ((g +* h) * f) . x = (g * f) . x ) ) then ( x in dom (g * f) or x in dom (h * f) ) by XBOOLE_0:def_3; then A6: x in dom f by FUNCT_1:11; hereby ::_thesis: ( not x in dom (h * f) implies ((g +* h) * f) . x = (g * f) . x ) assume A7: x in dom (h * f) ; ::_thesis: ((g +* h) * f) . x = (h * f) . x then A8: f . x in dom h by FUNCT_1:11; thus ((g +* h) * f) . x = (g +* h) . (f . x) by A6, FUNCT_1:13 .= h . (f . x) by A8, FUNCT_4:13 .= (h * f) . x by A7, FUNCT_1:12 ; ::_thesis: verum end; assume not x in dom (h * f) ; ::_thesis: ((g +* h) * f) . x = (g * f) . x then A9: not f . x in dom h by A6, FUNCT_1:11; thus ((g +* h) * f) . x = (g +* h) . (f . x) by A6, FUNCT_1:13 .= g . (f . x) by A9, FUNCT_4:11 .= (g * f) . x by A6, FUNCT_1:13 ; ::_thesis: verum end; hence (g +* h) * f = (g * f) +* (h * f) by A1, FUNCT_4:def_1; ::_thesis: verum end; theorem :: FUNCT_7:11 for f, g, h being Function st rng f misses dom g holds (h +* g) * f = h * f proof let f, g, h be Function; ::_thesis: ( rng f misses dom g implies (h +* g) * f = h * f ) assume A1: rng f misses dom g ; ::_thesis: (h +* g) * f = h * f thus (h +* g) * f = (h * f) +* (g * f) by Th10 .= (h * f) +* {} by A1, RELAT_1:44 .= h * f ; ::_thesis: verum end; theorem Th12: :: FUNCT_7:12 for A, B, y being set st A meets rng ((id B) +* (A --> y)) holds y in A proof let A, B be set ; ::_thesis: for y being set st A meets rng ((id B) +* (A --> y)) holds y in A let y be set ; ::_thesis: ( A meets rng ((id B) +* (A --> y)) implies y in A ) assume A meets rng ((id B) +* (A --> y)) ; ::_thesis: y in A then consider x being set such that A1: x in A and A2: x in rng ((id B) +* (A --> y)) by XBOOLE_0:3; consider z being set such that A3: z in dom ((id B) +* (A --> y)) and A4: ((id B) +* (A --> y)) . z = x by A2, FUNCT_1:def_3; A5: z in (dom (id B)) \/ (dom (A --> y)) by A3, FUNCT_4:def_1; percases ( z in dom (A --> y) or not z in dom (A --> y) ) ; supposeA6: z in dom (A --> y) ; ::_thesis: y in A then y = (A --> y) . z by FUNCOP_1:7 .= x by A4, A6, FUNCT_4:13 ; hence y in A by A1; ::_thesis: verum end; supposeA7: not z in dom (A --> y) ; ::_thesis: y in A then A8: z in dom (id B) by A5, XBOOLE_0:def_3; x = (id B) . z by A4, A7, FUNCT_4:11 .= z by A8, FUNCT_1:18 ; hence y in A by A1, A7, FUNCOP_1:13; ::_thesis: verum end; end; end; theorem :: FUNCT_7:13 for x, y, A being set st x <> y holds not x in rng ((id A) +* (x .--> y)) proof let x, y be set ; ::_thesis: for A being set st x <> y holds not x in rng ((id A) +* (x .--> y)) let A be set ; ::_thesis: ( x <> y implies not x in rng ((id A) +* (x .--> y)) ) assume x <> y ; ::_thesis: not x in rng ((id A) +* (x .--> y)) then not y in {x} by TARSKI:def_1; then {x} misses rng ((id A) +* ({x} --> y)) by Th12; hence not x in rng ((id A) +* (x .--> y)) by ZFMISC_1:48; ::_thesis: verum end; theorem :: FUNCT_7:14 for X, a being set for f being Function st dom f = X \/ {a} holds f = (f | X) +* (a .--> (f . a)) proof let X, a be set ; ::_thesis: for f being Function st dom f = X \/ {a} holds f = (f | X) +* (a .--> (f . a)) let f be Function; ::_thesis: ( dom f = X \/ {a} implies f = (f | X) +* (a .--> (f . a)) ) assume A1: dom f = X \/ {a} ; ::_thesis: f = (f | X) +* (a .--> (f . a)) a in {a} by TARSKI:def_1; then A2: a in dom f by A1, XBOOLE_0:def_3; thus f = (f | X) +* (f | {a}) by A1, FUNCT_4:70 .= (f | X) +* (a .--> (f . a)) by A2, Th6 ; ::_thesis: verum end; theorem :: FUNCT_7:15 for f being Function for X, y, z being set holds (f +* (X --> y)) +* (X --> z) = f +* (X --> z) proof let f be Function; ::_thesis: for X, y, z being set holds (f +* (X --> y)) +* (X --> z) = f +* (X --> z) let X, y, z be set ; ::_thesis: (f +* (X --> y)) +* (X --> z) = f +* (X --> z) A1: dom (X --> z) = X by FUNCOP_1:13; A2: dom (X --> y) = X by FUNCOP_1:13; then dom (f +* (X --> y)) = (dom f) \/ X by FUNCT_4:def_1; then A3: dom ((f +* (X --> y)) +* (X --> z)) = ((dom f) \/ X) \/ X by A1, FUNCT_4:def_1 .= (dom f) \/ (X \/ X) by XBOOLE_1:4 .= (dom f) \/ X ; A4: now__::_thesis:_for_x_being_set_st_x_in_(dom_f)_\/_X_holds_ ((f_+*_(X_-->_y))_+*_(X_-->_z))_._x_=_(f_+*_(X_-->_z))_._x let x be set ; ::_thesis: ( x in (dom f) \/ X implies ((f +* (X --> y)) +* (X --> z)) . b1 = (f +* (X --> z)) . b1 ) assume x in (dom f) \/ X ; ::_thesis: ((f +* (X --> y)) +* (X --> z)) . b1 = (f +* (X --> z)) . b1 percases ( x in X or not x in X ) ; supposeA5: x in X ; ::_thesis: ((f +* (X --> y)) +* (X --> z)) . b1 = (f +* (X --> z)) . b1 then ((f +* (X --> y)) +* (X --> z)) . x = (X --> z) . x by A1, FUNCT_4:13; hence ((f +* (X --> y)) +* (X --> z)) . x = (f +* (X --> z)) . x by A1, A5, FUNCT_4:13; ::_thesis: verum end; supposeA6: not x in X ; ::_thesis: ((f +* (X --> y)) +* (X --> z)) . b1 = (f +* (X --> z)) . b1 then ((f +* (X --> y)) +* (X --> z)) . x = (f +* (X --> y)) . x by A1, FUNCT_4:11; then ((f +* (X --> y)) +* (X --> z)) . x = f . x by A2, A6, FUNCT_4:11; hence ((f +* (X --> y)) +* (X --> z)) . x = (f +* (X --> z)) . x by A1, A6, FUNCT_4:11; ::_thesis: verum end; end; end; dom (f +* (X --> z)) = (dom f) \/ X by A1, FUNCT_4:def_1; hence (f +* (X --> y)) +* (X --> z) = f +* (X --> z) by A3, A4, FUNCT_1:2; ::_thesis: verum end; theorem :: FUNCT_7:16 INT <> INT * proof now__::_thesis:_not_1_in_INT_* A1: {} in 1 by CARD_1:49, TARSKI:def_1; assume 1 in INT * ; ::_thesis: contradiction then ex x, y being set st {} = [x,y] by A1, RELAT_1:def_1; hence contradiction ; ::_thesis: verum end; hence INT <> INT * by INT_1:def_2; ::_thesis: verum end; theorem :: FUNCT_7:17 {} * = {{}} proof thus {} * c= {{}} :: according to XBOOLE_0:def_10 ::_thesis: {{}} c= {} * proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in {} * or x in {{}} ) assume x in {} * ; ::_thesis: x in {{}} then reconsider f = x as FinSequence of {} by FINSEQ_1:def_11; now__::_thesis:_not_x_<>_{} assume x <> {} ; ::_thesis: contradiction then ex x being set st x in dom f ; hence contradiction ; ::_thesis: verum end; hence x in {{}} by ZFMISC_1:31; ::_thesis: verum end; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in {{}} or x in {} * ) assume x in {{}} ; ::_thesis: x in {} * then A1: x = {} by TARSKI:def_1; rng {} = {} ; then x is FinSequence of {} by A1, FINSEQ_1:def_4; hence x in {} * by FINSEQ_1:def_11; ::_thesis: verum end; theorem Th18: :: FUNCT_7:18 for x, A being set holds ( <*x*> in A * iff x in A ) proof let x, A be set ; ::_thesis: ( <*x*> in A * iff x in A ) rng <*x*> = {x} by FINSEQ_1:38; then ( {x} c= A iff <*x*> is FinSequence of A ) by FINSEQ_1:def_4; hence ( <*x*> in A * iff x in A ) by FINSEQ_1:def_11, ZFMISC_1:31; ::_thesis: verum end; theorem :: FUNCT_7:19 for A, B being set st A * c= B * holds A c= B proof let A, B be set ; ::_thesis: ( A * c= B * implies A c= B ) assume A1: A * c= B * ; ::_thesis: A c= B let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in A or x in B ) assume x in A ; ::_thesis: x in B then <*x*> in A * by Th18; hence x in B by A1, Th18; ::_thesis: verum end; theorem :: FUNCT_7:20 for A being Subset of NAT st ( for n, m being Element of NAT st n in A & m < n holds m in A ) holds A is Cardinal proof let A be Subset of NAT; ::_thesis: ( ( for n, m being Element of NAT st n in A & m < n holds m in A ) implies A is Cardinal ) assume A1: for n, m being Element of NAT st n in A & m < n holds m in A ; ::_thesis: A is Cardinal percases ( A = {} or ( A <> {} & ex m being Nat st for n being Nat st n in A holds n <= m ) or for m being Nat ex n being Nat st ( n in A & n > m ) ) ; suppose A = {} ; ::_thesis: A is Cardinal hence A is Cardinal ; ::_thesis: verum end; supposethat A2: A <> {} and A3: ex m being Nat st for n being Nat st n in A holds n <= m ; ::_thesis: A is Cardinal defpred S1[ set ] means $1 in A; consider M being Nat such that A4: for n being Nat st S1[n] holds n <= M by A3; ex m being Element of NAT st S1[m] by A2, SUBSET_1:4; then A5: ex m being Nat st S1[m] ; consider m being Nat such that A6: S1[m] and A7: for n being Nat st S1[n] holds n <= m from NAT_1:sch_6(A4, A5); A = { l where l is Element of NAT : l < m + 1 } proof thus A c= { l where l is Element of NAT : l < m + 1 } :: according to XBOOLE_0:def_10 ::_thesis: { l where l is Element of NAT : l < m + 1 } c= A proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in A or x in { l where l is Element of NAT : l < m + 1 } ) assume A8: x in A ; ::_thesis: x in { l where l is Element of NAT : l < m + 1 } then reconsider l = x as Element of NAT ; l <= m by A7, A8; then l < m + 1 by NAT_1:13; hence x in { l where l is Element of NAT : l < m + 1 } ; ::_thesis: verum end; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in { l where l is Element of NAT : l < m + 1 } or x in A ) assume x in { l where l is Element of NAT : l < m + 1 } ; ::_thesis: x in A then consider l being Element of NAT such that A9: x = l and A10: l < m + 1 ; l <= m by A10, NAT_1:13; then ( l < m or l = m ) by XXREAL_0:1; hence x in A by A1, A6, A9; ::_thesis: verum end; hence A is Cardinal by AXIOMS:4; ::_thesis: verum end; supposeA11: for m being Nat ex n being Nat st ( n in A & n > m ) ; ::_thesis: A is Cardinal NAT c= A proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in NAT or x in A ) assume x in NAT ; ::_thesis: x in A then reconsider m = x as Element of NAT ; ex n being Nat st ( n in A & n > m ) by A11; hence x in A by A1; ::_thesis: verum end; hence A is Cardinal by XBOOLE_0:def_10; ::_thesis: verum end; end; end; theorem :: FUNCT_7:21 for A being finite set for X being non empty Subset-Family of A ex C being Element of X st for B being Element of X st B c= C holds B = C proof let A be finite set ; ::_thesis: for X being non empty Subset-Family of A ex C being Element of X st for B being Element of X st B c= C holds B = C let X be non empty Subset-Family of A; ::_thesis: ex C being Element of X st for B being Element of X st B c= C holds B = C reconsider D = COMPLEMENT X as non empty Subset-Family of A by SETFAM_1:32; consider x being set such that A1: x in D and A2: for B being set st B in D & x c= B holds B = x by FINSET_1:6; reconsider x = x as Subset of A by A1; reconsider C = x ` as Element of X by A1, SETFAM_1:def_7; take C ; ::_thesis: for B being Element of X st B c= C holds B = C let B be Element of X; ::_thesis: ( B c= C implies B = C ) assume A3: B c= C ; ::_thesis: B = C (B `) ` = B ; then B ` in D by SETFAM_1:def_7; then B ` = x by A2, A3, SUBSET_1:16; hence B = C ; ::_thesis: verum end; theorem Th22: :: FUNCT_7:22 for p, q being FinSequence st len p = (len q) + 1 holds for i being Element of NAT holds ( i in dom q iff ( i in dom p & i + 1 in dom p ) ) proof let p, q be FinSequence; ::_thesis: ( len p = (len q) + 1 implies for i being Element of NAT holds ( i in dom q iff ( i in dom p & i + 1 in dom p ) ) ) assume A1: len p = (len q) + 1 ; ::_thesis: for i being Element of NAT holds ( i in dom q iff ( i in dom p & i + 1 in dom p ) ) let i be Element of NAT ; ::_thesis: ( i in dom q iff ( i in dom p & i + 1 in dom p ) ) hereby ::_thesis: ( i in dom p & i + 1 in dom p implies i in dom q ) assume A2: i in dom q ; ::_thesis: ( i in dom p & i + 1 in dom p ) then A3: i >= 1 by FINSEQ_3:25; A4: i <= len q by A2, FINSEQ_3:25; len q <= len p by A1, NAT_1:11; then A5: ( i + 1 >= 1 & i <= len p ) by A4, NAT_1:11, XXREAL_0:2; i + 1 <= len p by A1, A4, XREAL_1:6; hence ( i in dom p & i + 1 in dom p ) by A3, A5, FINSEQ_3:25; ::_thesis: verum end; assume that A6: i in dom p and A7: i + 1 in dom p ; ::_thesis: i in dom q i + 1 <= len p by A7, FINSEQ_3:25; then A8: i <= len q by A1, XREAL_1:6; i >= 1 by A6, FINSEQ_3:25; hence i in dom q by A8, FINSEQ_3:25; ::_thesis: verum end; registration cluster non empty Relation-like non-empty NAT -defined Function-like Function-yielding finite FinSequence-like FinSubsequence-like for set ; existence ex b1 being FinSequence st ( b1 is Function-yielding & not b1 is empty & b1 is non-empty ) proof take p = <*<*0*>*>; ::_thesis: ( p is Function-yielding & not p is empty & p is non-empty ) A1: ( dom p = {1} & p . 1 = <*0*> ) by FINSEQ_1:2, FINSEQ_1:38, FINSEQ_1:40; thus p is Function-yielding ::_thesis: ( not p is empty & p is non-empty ) proof let x be set ; :: according to FUNCOP_1:def_6 ::_thesis: ( not x in proj1 p or p . x is set ) assume x in dom p ; ::_thesis: p . x is set hence p . x is set by A1, TARSKI:def_1; ::_thesis: verum end; thus not p is empty ; ::_thesis: p is non-empty let x be set ; :: according to FUNCT_1:def_9 ::_thesis: ( not x in proj1 p or not p . x is empty ) assume x in dom p ; ::_thesis: not p . x is empty hence not p . x is empty by A1, TARSKI:def_1; ::_thesis: verum end; end; registration cluster empty Relation-like Function-like -> Function-yielding for set ; coherence for b1 being Function st b1 is empty holds b1 is Function-yielding ; let f be Function; cluster<*f*> -> Function-yielding ; coherence <*f*> is Function-yielding proof let x be set ; :: according to FUNCOP_1:def_6 ::_thesis: ( not x in proj1 <*f*> or <*f*> . x is set ) assume x in dom <*f*> ; ::_thesis: <*f*> . x is set then x in {1} by FINSEQ_1:2, FINSEQ_1:38; then x = 1 by TARSKI:def_1; hence <*f*> . x is set by FINSEQ_1:40; ::_thesis: verum end; let g be Function; cluster<*f,g*> -> Function-yielding ; coherence <*f,g*> is Function-yielding proof let x be set ; :: according to FUNCOP_1:def_6 ::_thesis: ( not x in proj1 <*f,g*> or <*f,g*> . x is set ) assume x in dom <*f,g*> ; ::_thesis: <*f,g*> . x is set then x in {1,2} by FINSEQ_1:2, FINSEQ_1:89; then ( x = 1 or x = 2 ) by TARSKI:def_2; hence <*f,g*> . x is set by FINSEQ_1:44; ::_thesis: verum end; let h be Function; cluster<*f,g,h*> -> Function-yielding ; coherence <*f,g,h*> is Function-yielding proof let x be set ; :: according to FUNCOP_1:def_6 ::_thesis: ( not x in proj1 <*f,g,h*> or <*f,g,h*> . x is set ) assume x in dom <*f,g,h*> ; ::_thesis: <*f,g,h*> . x is set then x in {1,2,3} by FINSEQ_1:89, FINSEQ_3:1; then ( x = 1 or x = 2 or x = 3 ) by ENUMSET1:def_1; hence <*f,g,h*> . x is set by FINSEQ_1:45; ::_thesis: verum end; end; registration let n be Element of NAT ; let f be Function; clustern |-> f -> Function-yielding ; coherence n |-> f is Function-yielding ; end; registration let p, q be Function-yielding FinSequence; clusterp ^ q -> Function-yielding ; coherence p ^ q is Function-yielding proof let x be set ; :: according to FUNCOP_1:def_6 ::_thesis: ( not x in proj1 (p ^ q) or (p ^ q) . x is set ) assume A1: x in dom (p ^ q) ; ::_thesis: (p ^ q) . x is set then reconsider i = x as Element of NAT ; percases ( i in dom p or not i in dom p ) ; suppose i in dom p ; ::_thesis: (p ^ q) . x is set then p . i = (p ^ q) . i by FINSEQ_1:def_7; hence (p ^ q) . x is set ; ::_thesis: verum end; suppose not i in dom p ; ::_thesis: (p ^ q) . x is set then consider j being Nat such that A2: ( j in dom q & i = (len p) + j ) by A1, FINSEQ_1:25; q . j = (p ^ q) . i by A2, FINSEQ_1:def_7; hence (p ^ q) . x is set ; ::_thesis: verum end; end; end; end; theorem Th23: :: FUNCT_7:23 for p, q being FinSequence st p ^ q is Function-yielding holds ( p is Function-yielding & q is Function-yielding ) proof let p, q be FinSequence; ::_thesis: ( p ^ q is Function-yielding implies ( p is Function-yielding & q is Function-yielding ) ) assume A1: for x being set st x in dom (p ^ q) holds (p ^ q) . x is Function ; :: according to FUNCOP_1:def_6 ::_thesis: ( p is Function-yielding & q is Function-yielding ) hereby :: according to FUNCOP_1:def_6 ::_thesis: q is Function-yielding let x be set ; ::_thesis: ( x in dom p implies p . x is Function ) assume A2: x in dom p ; ::_thesis: p . x is Function then (p ^ q) . x = p . x by FINSEQ_1:def_7; hence p . x is Function by A1, A2, FINSEQ_3:22; ::_thesis: verum end; let x be set ; :: according to FUNCOP_1:def_6 ::_thesis: ( not x in proj1 q or q . x is set ) assume A3: x in dom q ; ::_thesis: q . x is set then reconsider i = x as Element of NAT ; (p ^ q) . ((len p) + i) = q . x by A3, FINSEQ_1:def_7; hence q . x is set by A1, A3, FINSEQ_1:28; ::_thesis: verum end; begin scheme :: FUNCT_7:sch 1 Kappa2D{ F1() -> non empty set , F2() -> non empty set , F3() -> non empty set , F4( Element of F1(), Element of F2()) -> set } : ex f being Function of [:F1(),F2():],F3() st for x being Element of F1() for y being Element of F2() holds f . (x,y) = F4(x,y) provided A1: for x being Element of F1() for y being Element of F2() holds F4(x,y) in F3() proof deffunc H1( Element of [:F1(),F2():]) -> set = F4(($1 `1),($1 `2)); A2: for p being Element of [:F1(),F2():] holds H1(p) in F3() by A1; consider f being Function of [:F1(),F2():],F3() such that A3: for p being Element of [:F1(),F2():] holds f . p = H1(p) from FUNCT_2:sch_8(A2); take f ; ::_thesis: for x being Element of F1() for y being Element of F2() holds f . (x,y) = F4(x,y) let x be Element of F1(); ::_thesis: for y being Element of F2() holds f . (x,y) = F4(x,y) let y be Element of F2(); ::_thesis: f . (x,y) = F4(x,y) ( [x,y] `1 = x & [x,y] `2 = y ) ; hence f . (x,y) = F4(x,y) by A3; ::_thesis: verum end; scheme :: FUNCT_7:sch 2 FinMono{ F1() -> set , F2() -> non empty set , F3( set ) -> set , F4( set ) -> set } : { F3(d) where d is Element of F2() : F4(d) in F1() } is finite provided A1: F1() is finite and A2: for d1, d2 being Element of F2() st F4(d1) = F4(d2) holds d1 = d2 proof percases ( F1() = {} or F1() <> {} ) ; supposeA3: F1() = {} ; ::_thesis: { F3(d) where d is Element of F2() : F4(d) in F1() } is finite now__::_thesis:_not__{__F3(d)_where_d_is_Element_of_F2()_:_F4(d)_in_F1()__}__<>_{} set a = the Element of { F3(d) where d is Element of F2() : F4(d) in F1() } ; assume { F3(d) where d is Element of F2() : F4(d) in F1() } <> {} ; ::_thesis: contradiction then the Element of { F3(d) where d is Element of F2() : F4(d) in F1() } in { F3(d) where d is Element of F2() : F4(d) in F1() } ; then ex d being Element of F2() st ( the Element of { F3(d) where d is Element of F2() : F4(d) in F1() } = F3(d) & F4(d) in F1() ) ; hence contradiction by A3; ::_thesis: verum end; hence { F3(d) where d is Element of F2() : F4(d) in F1() } is finite ; ::_thesis: verum end; suppose F1() <> {} ; ::_thesis: { F3(d) where d is Element of F2() : F4(d) in F1() } is finite then reconsider D = F1() as non empty set ; defpred S1[ set ] means ex d being Element of F2() st $1 = F4(d); set B = { d where d is Element of F2() : F4(d) in D } ; set C = { a where a is Element of D : S1[a] } ; A4: { F3(d) where d is Element of F2() : F4(d) in F1() } = { F3(d) where d is Element of F2() : d in { d where d is Element of F2() : F4(d) in D } } proof thus { F3(d) where d is Element of F2() : F4(d) in F1() } c= { F3(d) where d is Element of F2() : d in { d where d is Element of F2() : F4(d) in D } } :: according to XBOOLE_0:def_10 ::_thesis: { F3(d) where d is Element of F2() : d in { d where d is Element of F2() : F4(d) in D } } c= { F3(d) where d is Element of F2() : F4(d) in F1() } proof let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in { F3(d) where d is Element of F2() : F4(d) in F1() } or x in { F3(d) where d is Element of F2() : d in { d where d is Element of F2() : F4(d) in D } } ) assume x in { F3(d) where d is Element of F2() : F4(d) in F1() } ; ::_thesis: x in { F3(d) where d is Element of F2() : d in { d where d is Element of F2() : F4(d) in D } } then consider d9 being Element of F2() such that A5: x = F3(d9) and A6: F4(d9) in F1() ; d9 in { d where d is Element of F2() : F4(d) in D } by A6; hence x in { F3(d) where d is Element of F2() : d in { d where d is Element of F2() : F4(d) in D } } by A5; ::_thesis: verum end; let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in { F3(d) where d is Element of F2() : d in { d where d is Element of F2() : F4(d) in D } } or x in { F3(d) where d is Element of F2() : F4(d) in F1() } ) assume x in { F3(d) where d is Element of F2() : d in { d where d is Element of F2() : F4(d) in D } } ; ::_thesis: x in { F3(d) where d is Element of F2() : F4(d) in F1() } then consider d1 being Element of F2() such that A7: x = F3(d1) and A8: d1 in { d where d is Element of F2() : F4(d) in D } ; ex d3 being Element of F2() st ( d3 = d1 & F4(d3) in D ) by A8; hence x in { F3(d) where d is Element of F2() : F4(d) in F1() } by A7; ::_thesis: verum end; A9: { a where a is Element of D : S1[a] } , { d where d is Element of F2() : F4(d) in D } are_equipotent proof take Z = { [F4(d),d] where d is Element of F2() : verum } ; :: according to TARSKI:def_6 ::_thesis: ( ( for b1 being set holds ( not b1 in { a where a is Element of D : S1[a] } or ex b2 being set st ( b2 in { d where d is Element of F2() : F4(d) in D } & [b1,b2] in Z ) ) ) & ( for b1 being set holds ( not b1 in { d where d is Element of F2() : F4(d) in D } or ex b2 being set st ( b2 in { a where a is Element of D : S1[a] } & [b2,b1] in Z ) ) ) & ( for b1, b2, b3, b4 being set holds ( not [b1,b2] in Z or not [b3,b4] in Z or ( ( not b1 = b3 or b2 = b4 ) & ( not b2 = b4 or b1 = b3 ) ) ) ) ) hereby ::_thesis: ( ( for b1 being set holds ( not b1 in { d where d is Element of F2() : F4(d) in D } or ex b2 being set st ( b2 in { a where a is Element of D : S1[a] } & [b2,b1] in Z ) ) ) & ( for b1, b2, b3, b4 being set holds ( not [b1,b2] in Z or not [b3,b4] in Z or ( ( not b1 = b3 or b2 = b4 ) & ( not b2 = b4 or b1 = b3 ) ) ) ) ) let x be set ; ::_thesis: ( x in { a where a is Element of D : S1[a] } implies ex d being set st ( d in { d where d is Element of F2() : F4(d) in D } & [x,d] in Z ) ) assume x in { a where a is Element of D : S1[a] } ; ::_thesis: ex d being set st ( d in { d where d is Element of F2() : F4(d) in D } & [x,d] in Z ) then consider a being Element of D such that A10: a = x and A11: ex d being Element of F2() st a = F4(d) ; consider d being Element of F2() such that A12: a = F4(d) by A11; reconsider d = d as set ; take d = d; ::_thesis: ( d in { d where d is Element of F2() : F4(d) in D } & [x,d] in Z ) thus ( d in { d where d is Element of F2() : F4(d) in D } & [x,d] in Z ) by A10, A12; ::_thesis: verum end; hereby ::_thesis: for b1, b2, b3, b4 being set holds ( not [b1,b2] in Z or not [b3,b4] in Z or ( ( not b1 = b3 or b2 = b4 ) & ( not b2 = b4 or b1 = b3 ) ) ) let y be set ; ::_thesis: ( y in { d where d is Element of F2() : F4(d) in D } implies ex x being set st ( x in { a where a is Element of D : S1[a] } & [x,y] in Z ) ) assume y in { d where d is Element of F2() : F4(d) in D } ; ::_thesis: ex x being set st ( x in { a where a is Element of D : S1[a] } & [x,y] in Z ) then consider d being Element of F2() such that A13: ( d = y & F4(d) in D ) ; reconsider x = F4(d) as set ; take x = x; ::_thesis: ( x in { a where a is Element of D : S1[a] } & [x,y] in Z ) thus ( x in { a where a is Element of D : S1[a] } & [x,y] in Z ) by A13; ::_thesis: verum end; let x, y, z, u be set ; ::_thesis: ( not [x,y] in Z or not [z,u] in Z or ( ( not x = z or y = u ) & ( not y = u or x = z ) ) ) assume [x,y] in Z ; ::_thesis: ( not [z,u] in Z or ( ( not x = z or y = u ) & ( not y = u or x = z ) ) ) then consider d1 being Element of F2() such that A14: [x,y] = [F4(d1),d1] ; assume [z,u] in Z ; ::_thesis: ( ( not x = z or y = u ) & ( not y = u or x = z ) ) then consider d2 being Element of F2() such that A15: [z,u] = [F4(d2),d2] ; A16: ( z = F4(d2) & u = d2 ) by A15, XTUPLE_0:1; ( x = F4(d1) & y = d1 ) by A14, XTUPLE_0:1; hence ( ( not x = z or y = u ) & ( not y = u or x = z ) ) by A2, A16; ::_thesis: verum end; { a where a is Element of D : S1[a] } is Subset of D from DOMAIN_1:sch_7(); then { a where a is Element of D : S1[a] } is finite by A1, FINSET_1:1; then A17: { d where d is Element of F2() : F4(d) in D } is finite by A9, CARD_1:38; { F3(d) where d is Element of F2() : d in { d where d is Element of F2() : F4(d) in D } } is finite from FRAENKEL:sch_21(A17); hence { F3(d) where d is Element of F2() : F4(d) in F1() } is finite by A4; ::_thesis: verum end; end; end; scheme :: FUNCT_7:sch 3 CardMono{ F1() -> set , F2() -> non empty set , F3( set ) -> set } : F1(), { d where d is Element of F2() : F3(d) in F1() } are_equipotent provided A1: for x being set st x in F1() holds ex d being Element of F2() st x = F3(d) and A2: for d1, d2 being Element of F2() st F3(d1) = F3(d2) holds d1 = d2 proof set D = { d where d is Element of F2() : F3(d) in F1() } ; percases ( F1() = {} or F1() <> {} ) ; supposeA3: F1() = {} ; ::_thesis: F1(), { d where d is Element of F2() : F3(d) in F1() } are_equipotent now__::_thesis:_not__{__d_where_d_is_Element_of_F2()_:_F3(d)_in_F1()__}__<>_{} set a = the Element of { d where d is Element of F2() : F3(d) in F1() } ; assume { d where d is Element of F2() : F3(d) in F1() } <> {} ; ::_thesis: contradiction then the Element of { d where d is Element of F2() : F3(d) in F1() } in { d where d is Element of F2() : F3(d) in F1() } ; then ex d being Element of F2() st ( the Element of { d where d is Element of F2() : F3(d) in F1() } = d & F3(d) in F1() ) ; hence contradiction by A3; ::_thesis: verum end; hence F1(), { d where d is Element of F2() : F3(d) in F1() } are_equipotent by A3; ::_thesis: verum end; suppose F1() <> {} ; ::_thesis: F1(), { d where d is Element of F2() : F3(d) in F1() } are_equipotent then reconsider A = F1() as non empty set ; A, { d where d is Element of F2() : F3(d) in F1() } are_equipotent proof take Z = { [F3(d),d] where d is Element of F2() : verum } ; :: according to TARSKI:def_6 ::_thesis: ( ( for b1 being set holds ( not b1 in A or ex b2 being set st ( b2 in { d where d is Element of F2() : F3(d) in F1() } & [b1,b2] in Z ) ) ) & ( for b1 being set holds ( not b1 in { d where d is Element of F2() : F3(d) in F1() } or ex b2 being set st ( b2 in A & [b2,b1] in Z ) ) ) & ( for b1, b2, b3, b4 being set holds ( not [b1,b2] in Z or not [b3,b4] in Z or ( ( not b1 = b3 or b2 = b4 ) & ( not b2 = b4 or b1 = b3 ) ) ) ) ) hereby ::_thesis: ( ( for b1 being set holds ( not b1 in { d where d is Element of F2() : F3(d) in F1() } or ex b2 being set st ( b2 in A & [b2,b1] in Z ) ) ) & ( for b1, b2, b3, b4 being set holds ( not [b1,b2] in Z or not [b3,b4] in Z or ( ( not b1 = b3 or b2 = b4 ) & ( not b2 = b4 or b1 = b3 ) ) ) ) ) let x be set ; ::_thesis: ( x in A implies ex d being set st ( d in { d where d is Element of F2() : F3(d) in F1() } & [x,d] in Z ) ) assume A4: x in A ; ::_thesis: ex d being set st ( d in { d where d is Element of F2() : F3(d) in F1() } & [x,d] in Z ) then consider d being Element of F2() such that A5: x = F3(d) by A1; reconsider d = d as set ; take d = d; ::_thesis: ( d in { d where d is Element of F2() : F3(d) in F1() } & [x,d] in Z ) thus d in { d where d is Element of F2() : F3(d) in F1() } by A4, A5; ::_thesis: [x,d] in Z thus [x,d] in Z by A5; ::_thesis: verum end; hereby ::_thesis: for b1, b2, b3, b4 being set holds ( not [b1,b2] in Z or not [b3,b4] in Z or ( ( not b1 = b3 or b2 = b4 ) & ( not b2 = b4 or b1 = b3 ) ) ) let y be set ; ::_thesis: ( y in { d where d is Element of F2() : F3(d) in F1() } implies ex x being set st ( x in A & [x,y] in Z ) ) assume y in { d where d is Element of F2() : F3(d) in F1() } ; ::_thesis: ex x being set st ( x in A & [x,y] in Z ) then consider d being Element of F2() such that A6: ( d = y & F3(d) in A ) ; reconsider x = F3(d) as set ; take x = x; ::_thesis: ( x in A & [x,y] in Z ) thus ( x in A & [x,y] in Z ) by A6; ::_thesis: verum end; let x, y, z, u be set ; ::_thesis: ( not [x,y] in Z or not [z,u] in Z or ( ( not x = z or y = u ) & ( not y = u or x = z ) ) ) assume [x,y] in Z ; ::_thesis: ( not [z,u] in Z or ( ( not x = z or y = u ) & ( not y = u or x = z ) ) ) then consider d1 being Element of F2() such that A7: [x,y] = [F3(d1),d1] ; assume [z,u] in Z ; ::_thesis: ( ( not x = z or y = u ) & ( not y = u or x = z ) ) then consider d2 being Element of F2() such that A8: [z,u] = [F3(d2),d2] ; A9: ( z = F3(d2) & u = d2 ) by A8, XTUPLE_0:1; ( x = F3(d1) & y = d1 ) by A7, XTUPLE_0:1; hence ( ( not x = z or y = u ) & ( not y = u or x = z ) ) by A2, A9; ::_thesis: verum end; hence F1(), { d where d is Element of F2() : F3(d) in F1() } are_equipotent ; ::_thesis: verum end; end; end; scheme :: FUNCT_7:sch 4 CardMono9{ F1() -> set , F2() -> non empty set , F3( set ) -> set } : F1(), { F3(d) where d is Element of F2() : d in F1() } are_equipotent provided A1: F1() c= F2() and A2: for d1, d2 being Element of F2() st F3(d1) = F3(d2) holds d1 = d2 proof percases ( F1() = {} or F1() <> {} ) ; supposeA3: F1() = {} ; ::_thesis: F1(), { F3(d) where d is Element of F2() : d in F1() } are_equipotent now__::_thesis:_not__{__F3(d)_where_d_is_Element_of_F2()_:_d_in_F1()__}__<>_{} set a = the Element of { F3(d) where d is Element of F2() : d in F1() } ; assume { F3(d) where d is Element of F2() : d in F1() } <> {} ; ::_thesis: contradiction then the Element of { F3(d) where d is Element of F2() : d in F1() } in { F3(d) where d is Element of F2() : d in F1() } ; then ex d being Element of F2() st ( the Element of { F3(d) where d is Element of F2() : d in F1() } = F3(d) & d in F1() ) ; hence contradiction by A3; ::_thesis: verum end; hence F1(), { F3(d) where d is Element of F2() : d in F1() } are_equipotent by A3; ::_thesis: verum end; suppose F1() <> {} ; ::_thesis: F1(), { F3(d) where d is Element of F2() : d in F1() } are_equipotent then reconsider A = F1() as non empty set ; set D = { F3(d) where d is Element of F2() : d in A } ; A, { F3(d) where d is Element of F2() : d in A } are_equipotent proof take Z = { [d,F3(d)] where d is Element of F2() : verum } ; :: according to TARSKI:def_6 ::_thesis: ( ( for b1 being set holds ( not b1 in A or ex b2 being set st ( b2 in { F3(d) where d is Element of F2() : d in A } & [b1,b2] in Z ) ) ) & ( for b1 being set holds ( not b1 in { F3(d) where d is Element of F2() : d in A } or ex b2 being set st ( b2 in A & [b2,b1] in Z ) ) ) & ( for b1, b2, b3, b4 being set holds ( not [b1,b2] in Z or not [b3,b4] in Z or ( ( not b1 = b3 or b2 = b4 ) & ( not b2 = b4 or b1 = b3 ) ) ) ) ) hereby ::_thesis: ( ( for b1 being set holds ( not b1 in { F3(d) where d is Element of F2() : d in A } or ex b2 being set st ( b2 in A & [b2,b1] in Z ) ) ) & ( for b1, b2, b3, b4 being set holds ( not [b1,b2] in Z or not [b3,b4] in Z or ( ( not b1 = b3 or b2 = b4 ) & ( not b2 = b4 or b1 = b3 ) ) ) ) ) let x be set ; ::_thesis: ( x in A implies ex y being set st ( y in { F3(d) where d is Element of F2() : d in A } & [x,y] in Z ) ) assume A4: x in A ; ::_thesis: ex y being set st ( y in { F3(d) where d is Element of F2() : d in A } & [x,y] in Z ) then reconsider d = x as Element of F2() by A1; take y = F3(d); ::_thesis: ( y in { F3(d) where d is Element of F2() : d in A } & [x,y] in Z ) thus y in { F3(d) where d is Element of F2() : d in A } by A4; ::_thesis: [x,y] in Z thus [x,y] in Z ; ::_thesis: verum end; hereby ::_thesis: for b1, b2, b3, b4 being set holds ( not [b1,b2] in Z or not [b3,b4] in Z or ( ( not b1 = b3 or b2 = b4 ) & ( not b2 = b4 or b1 = b3 ) ) ) let y be set ; ::_thesis: ( y in { F3(d) where d is Element of F2() : d in A } implies ex d being set st ( d in A & [d,y] in Z ) ) assume y in { F3(d) where d is Element of F2() : d in A } ; ::_thesis: ex d being set st ( d in A & [d,y] in Z ) then consider d being Element of F2() such that A5: ( F3(d) = y & d in A ) ; reconsider d = d as set ; take d = d; ::_thesis: ( d in A & [d,y] in Z ) thus ( d in A & [d,y] in Z ) by A5; ::_thesis: verum end; let x, y, z, u be set ; ::_thesis: ( not [x,y] in Z or not [z,u] in Z or ( ( not x = z or y = u ) & ( not y = u or x = z ) ) ) assume [x,y] in Z ; ::_thesis: ( not [z,u] in Z or ( ( not x = z or y = u ) & ( not y = u or x = z ) ) ) then consider d1 being Element of F2() such that A6: [x,y] = [d1,F3(d1)] ; assume [z,u] in Z ; ::_thesis: ( ( not x = z or y = u ) & ( not y = u or x = z ) ) then consider d2 being Element of F2() such that A7: [z,u] = [d2,F3(d2)] ; A8: ( z = d2 & u = F3(d2) ) by A7, XTUPLE_0:1; ( x = d1 & y = F3(d1) ) by A6, XTUPLE_0:1; hence ( ( not x = z or y = u ) & ( not y = u or x = z ) ) by A2, A8; ::_thesis: verum end; hence F1(), { F3(d) where d is Element of F2() : d in F1() } are_equipotent ; ::_thesis: verum end; end; end; scheme :: FUNCT_7:sch 5 FuncSeqInd{ P1[ set ] } : for p being Function-yielding FinSequence holds P1[p] provided A1: P1[ {} ] and A2: for p being Function-yielding FinSequence st P1[p] holds for f being Function holds P1[p ^ <*f*>] proof defpred S1[ FinSequence] means ( $1 is Function-yielding implies P1[$1] ); A3: for p being FinSequence for x being set st S1[p] holds S1[p ^ <*x*>] proof let p be FinSequence; ::_thesis: for x being set st S1[p] holds S1[p ^ <*x*>] let x be set ; ::_thesis: ( S1[p] implies S1[p ^ <*x*>] ) assume that A4: ( p is Function-yielding implies P1[p] ) and A5: p ^ <*x*> is Function-yielding ; ::_thesis: P1[p ^ <*x*>] A6: <*x*> . 1 = x by FINSEQ_1:40; ( p is Function-yielding & <*x*> is Function-yielding ) by A5, Th23; hence P1[p ^ <*x*>] by A2, A4, A6; ::_thesis: verum end; A7: S1[ {} ] by A1; for p being FinSequence holds S1[p] from FINSEQ_1:sch_3(A7, A3); hence for p being Function-yielding FinSequence holds P1[p] ; ::_thesis: verum end; begin definition let x, y be set ; assume A1: x in y ; func In (x,y) -> Element of y equals :Def1: :: FUNCT_7:def 1 x; correctness coherence x is Element of y; by A1; end; :: deftheorem Def1 defines In FUNCT_7:def_1_:_ for x, y being set st x in y holds In (x,y) = x; theorem :: FUNCT_7:24 for x, A, B being set st x in A /\ B holds In (x,A) = In (x,B) proof let x, A, B be set ; ::_thesis: ( x in A /\ B implies In (x,A) = In (x,B) ) assume A1: x in A /\ B ; ::_thesis: In (x,A) = In (x,B) then A2: x in B by XBOOLE_0:def_4; x in A by A1, XBOOLE_0:def_4; hence In (x,A) = x by Def1 .= In (x,B) by A2, Def1 ; ::_thesis: verum end; definition let f, g be Function; let A be set ; predf,g equal_outside A means :Def2: :: FUNCT_7:def 2 f | ((dom f) \ A) = g | ((dom g) \ A); end; :: deftheorem Def2 defines equal_outside FUNCT_7:def_2_:_ for f, g being Function for A being set holds ( f,g equal_outside A iff f | ((dom f) \ A) = g | ((dom g) \ A) ); theorem Th25: :: FUNCT_7:25 for f being Function for A being set holds f,f equal_outside A proof let f be Function; ::_thesis: for A being set holds f,f equal_outside A let A be set ; ::_thesis: f,f equal_outside A thus f | ((dom f) \ A) = f | ((dom f) \ A) ; :: according to FUNCT_7:def_2 ::_thesis: verum end; theorem Th26: :: FUNCT_7:26 for f, g being Function for A being set st f,g equal_outside A holds g,f equal_outside A proof let f, g be Function; ::_thesis: for A being set st f,g equal_outside A holds g,f equal_outside A let A be set ; ::_thesis: ( f,g equal_outside A implies g,f equal_outside A ) assume f | ((dom f) \ A) = g | ((dom g) \ A) ; :: according to FUNCT_7:def_2 ::_thesis: g,f equal_outside A hence g | ((dom g) \ A) = f | ((dom f) \ A) ; :: according to FUNCT_7:def_2 ::_thesis: verum end; theorem Th27: :: FUNCT_7:27 for f, g, h being Function for A being set st f,g equal_outside A & g,h equal_outside A holds f,h equal_outside A proof let f, g, h be Function; ::_thesis: for A being set st f,g equal_outside A & g,h equal_outside A holds f,h equal_outside A let A be set ; ::_thesis: ( f,g equal_outside A & g,h equal_outside A implies f,h equal_outside A ) assume ( f | ((dom f) \ A) = g | ((dom g) \ A) & g | ((dom g) \ A) = h | ((dom h) \ A) ) ; :: according to FUNCT_7:def_2 ::_thesis: f,h equal_outside A hence f | ((dom f) \ A) = h | ((dom h) \ A) ; :: according to FUNCT_7:def_2 ::_thesis: verum end; theorem Th28: :: FUNCT_7:28 for f, g being Function for A being set st f,g equal_outside A holds (dom f) \ A = (dom g) \ A proof let f, g be Function; ::_thesis: for A being set st f,g equal_outside A holds (dom f) \ A = (dom g) \ A let A be set ; ::_thesis: ( f,g equal_outside A implies (dom f) \ A = (dom g) \ A ) assume A1: f | ((dom f) \ A) = g | ((dom g) \ A) ; :: according to FUNCT_7:def_2 ::_thesis: (dom f) \ A = (dom g) \ A thus (dom f) \ A = (dom f) /\ ((dom f) \ A) by XBOOLE_1:28 .= dom (f | ((dom f) \ A)) by RELAT_1:61 .= (dom g) /\ ((dom g) \ A) by A1, RELAT_1:61 .= (dom g) \ A by XBOOLE_1:28 ; ::_thesis: verum end; theorem Th29: :: FUNCT_7:29 for f, g being Function for A being set st dom g c= A holds f,f +* g equal_outside A proof let f, g be Function; ::_thesis: for A being set st dom g c= A holds f,f +* g equal_outside A let A be set ; ::_thesis: ( dom g c= A implies f,f +* g equal_outside A ) assume A1: dom g c= A ; ::_thesis: f,f +* g equal_outside A A2: (dom (f +* g)) \ A = ((dom f) \/ (dom g)) \ A by FUNCT_4:def_1 .= ((dom f) \ A) \/ ((dom g) \ A) by XBOOLE_1:42 .= ((dom f) \ A) \/ {} by A1, XBOOLE_1:37 .= (dom f) \ A ; (dom f) \ A misses A by XBOOLE_1:79; then (dom f) \ A misses dom g by A1, XBOOLE_1:63; hence f | ((dom f) \ A) = (f +* g) | ((dom (f +* g)) \ A) by A2, FUNCT_4:72; :: according to FUNCT_7:def_2 ::_thesis: verum end; definition let f be Function; let i, x be set ; funcf +* (i,x) -> Function equals :Def3: :: FUNCT_7:def 3 f +* (i .--> x) if i in dom f otherwise f; correctness coherence ( ( i in dom f implies f +* (i .--> x) is Function ) & ( not i in dom f implies f is Function ) ); consistency for b1 being Function holds verum; ; end; :: deftheorem Def3 defines +* FUNCT_7:def_3_:_ for f being Function for i, x being set holds ( ( i in dom f implies f +* (i,x) = f +* (i .--> x) ) & ( not i in dom f implies f +* (i,x) = f ) ); theorem Th30: :: FUNCT_7:30 for f being Function for d, i being set holds dom (f +* (i,d)) = dom f proof let f be Function; ::_thesis: for d, i being set holds dom (f +* (i,d)) = dom f let x, i be set ; ::_thesis: dom (f +* (i,x)) = dom f percases ( i in dom f or not i in dom f ) ; supposeA1: i in dom f ; ::_thesis: dom (f +* (i,x)) = dom f then A2: {i} c= dom f by ZFMISC_1:31; thus dom (f +* (i,x)) = dom (f +* (i .--> x)) by A1, Def3 .= (dom f) \/ (dom (i .--> x)) by FUNCT_4:def_1 .= (dom f) \/ {i} by FUNCOP_1:13 .= dom f by A2, XBOOLE_1:12 ; ::_thesis: verum end; suppose not i in dom f ; ::_thesis: dom (f +* (i,x)) = dom f hence dom (f +* (i,x)) = dom f by Def3; ::_thesis: verum end; end; end; theorem Th31: :: FUNCT_7:31 for f being Function for d, i being set st i in dom f holds (f +* (i,d)) . i = d proof let f be Function; ::_thesis: for d, i being set st i in dom f holds (f +* (i,d)) . i = d let d, i be set ; ::_thesis: ( i in dom f implies (f +* (i,d)) . i = d ) dom (i .--> d) = {i} by FUNCOP_1:13; then A1: i in dom (i .--> d) by TARSKI:def_1; assume i in dom f ; ::_thesis: (f +* (i,d)) . i = d hence (f +* (i,d)) . i = (f +* (i .--> d)) . i by Def3 .= (i .--> d) . i by A1, FUNCT_4:13 .= d by FUNCOP_1:72 ; ::_thesis: verum end; theorem Th32: :: FUNCT_7:32 for f being Function for d, i, j being set st i <> j holds (f +* (i,d)) . j = f . j proof let f be Function; ::_thesis: for d, i, j being set st i <> j holds (f +* (i,d)) . j = f . j let d, i, j be set ; ::_thesis: ( i <> j implies (f +* (i,d)) . j = f . j ) assume A1: i <> j ; ::_thesis: (f +* (i,d)) . j = f . j A2: not j in dom (i .--> d) by A1, TARSKI:def_1; percases ( i in dom f or not i in dom f ) ; suppose i in dom f ; ::_thesis: (f +* (i,d)) . j = f . j hence (f +* (i,d)) . j = (f +* (i .--> d)) . j by Def3 .= f . j by A2, FUNCT_4:11 ; ::_thesis: verum end; suppose not i in dom f ; ::_thesis: (f +* (i,d)) . j = f . j hence (f +* (i,d)) . j = f . j by Def3; ::_thesis: verum end; end; end; theorem :: FUNCT_7:33 for f being Function for d, e, i, j being set st i <> j holds (f +* (i,d)) +* (j,e) = (f +* (j,e)) +* (i,d) proof let f be Function; ::_thesis: for d, e, i, j being set st i <> j holds (f +* (i,d)) +* (j,e) = (f +* (j,e)) +* (i,d) let d, e, i, j be set ; ::_thesis: ( i <> j implies (f +* (i,d)) +* (j,e) = (f +* (j,e)) +* (i,d) ) assume A1: i <> j ; ::_thesis: (f +* (i,d)) +* (j,e) = (f +* (j,e)) +* (i,d) percases ( ( i in dom f & j in dom f ) or ( i in dom f & not j in dom f ) or ( not i in dom f & j in dom f ) or ( not i in dom f & not j in dom f ) ) ; supposethat A2: i in dom f and A3: j in dom f ; ::_thesis: (f +* (i,d)) +* (j,e) = (f +* (j,e)) +* (i,d) A4: i in dom (f +* (j,e)) by A2, Th30; A5: ( dom (i .--> d) = {i} & dom (j .--> e) = {j} ) by FUNCOP_1:13; j in dom (f +* (i,d)) by A3, Th30; hence (f +* (i,d)) +* (j,e) = (f +* (i,d)) +* (j .--> e) by Def3 .= (f +* (i .--> d)) +* (j .--> e) by A2, Def3 .= f +* ((i .--> d) +* (j .--> e)) by FUNCT_4:14 .= f +* ((j .--> e) +* (i .--> d)) by A1, A5, FUNCT_4:35, ZFMISC_1:11 .= (f +* (j .--> e)) +* (i .--> d) by FUNCT_4:14 .= (f +* (j,e)) +* (i .--> d) by A3, Def3 .= (f +* (j,e)) +* (i,d) by A4, Def3 ; ::_thesis: verum end; supposethat i in dom f and A6: not j in dom f ; ::_thesis: (f +* (i,d)) +* (j,e) = (f +* (j,e)) +* (i,d) not j in dom (f +* (i,d)) by A6, Th30; hence (f +* (i,d)) +* (j,e) = f +* (i,d) by Def3 .= (f +* (j,e)) +* (i,d) by A6, Def3 ; ::_thesis: verum end; supposethat A7: not i in dom f and j in dom f ; ::_thesis: (f +* (i,d)) +* (j,e) = (f +* (j,e)) +* (i,d) A8: not i in dom (f +* (j,e)) by A7, Th30; thus (f +* (i,d)) +* (j,e) = f +* (j,e) by A7, Def3 .= (f +* (j,e)) +* (i,d) by A8, Def3 ; ::_thesis: verum end; supposethat A9: not i in dom f and A10: not j in dom f ; ::_thesis: (f +* (i,d)) +* (j,e) = (f +* (j,e)) +* (i,d) A11: not i in dom (f +* (j,e)) by A9, Th30; not j in dom (f +* (i,d)) by A10, Th30; hence (f +* (i,d)) +* (j,e) = f +* (i,d) by Def3 .= f by A9, Def3 .= f +* (j,e) by A10, Def3 .= (f +* (j,e)) +* (i,d) by A11, Def3 ; ::_thesis: verum end; end; end; theorem :: FUNCT_7:34 for f being Function for d, e, i being set holds (f +* (i,d)) +* (i,e) = f +* (i,e) proof let f be Function; ::_thesis: for d, e, i being set holds (f +* (i,d)) +* (i,e) = f +* (i,e) let d, e, i be set ; ::_thesis: (f +* (i,d)) +* (i,e) = f +* (i,e) A1: dom (i .--> d) = {i} by FUNCOP_1:13 .= dom (i .--> e) by FUNCOP_1:13 ; percases ( i in dom f or not i in dom f ) ; supposeA2: i in dom f ; ::_thesis: (f +* (i,d)) +* (i,e) = f +* (i,e) then i in dom (f +* (i,d)) by Th30; hence (f +* (i,d)) +* (i,e) = (f +* (i,d)) +* (i .--> e) by Def3 .= (f +* (i .--> d)) +* (i .--> e) by A2, Def3 .= f +* ((i .--> d) +* (i .--> e)) by FUNCT_4:14 .= f +* (i .--> e) by A1, FUNCT_4:19 .= f +* (i,e) by A2, Def3 ; ::_thesis: verum end; suppose not i in dom f ; ::_thesis: (f +* (i,d)) +* (i,e) = f +* (i,e) hence (f +* (i,d)) +* (i,e) = f +* (i,e) by Def3; ::_thesis: verum end; end; end; theorem Th35: :: FUNCT_7:35 for f being Function for i being set holds f +* (i,(f . i)) = f proof let f be Function; ::_thesis: for i being set holds f +* (i,(f . i)) = f let i be set ; ::_thesis: f +* (i,(f . i)) = f percases ( i in dom f or not i in dom f ) ; supposeA1: i in dom f ; ::_thesis: f +* (i,(f . i)) = f then A2: i .--> (f . i) = f | {i} by Th6; thus f +* (i,(f . i)) = f +* (i .--> (f . i)) by A1, Def3 .= f by A2, FUNCT_4:75 ; ::_thesis: verum end; suppose not i in dom f ; ::_thesis: f +* (i,(f . i)) = f hence f +* (i,(f . i)) = f by Def3; ::_thesis: verum end; end; end; registration let f be FinSequence; let i, x be set ; clusterf +* (i,x) -> FinSequence-like ; coherence f +* (i,x) is FinSequence-like proof dom (f +* (i,x)) = dom f by Th30 .= Seg (len f) by FINSEQ_1:def_3 ; hence f +* (i,x) is FinSequence-like by FINSEQ_1:def_2; ::_thesis: verum end; end; definition let D be set ; let f be FinSequence of D; let i be Element of NAT ; let d be Element of D; :: original: +* redefine funcf +* (i,d) -> FinSequence of D; coherence f +* (i,d) is FinSequence of D proof percases ( i in dom f or not i in dom f ) ; supposeA1: i in dom f ; ::_thesis: f +* (i,d) is FinSequence of D then f . i in rng f by FUNCT_1:def_3; then {d} c= D by ZFMISC_1:31; then A2: ( (rng f) \/ (rng (i .--> d)) = (rng f) \/ {d} & (rng f) \/ {d} c= D ) by FUNCOP_1:8, XBOOLE_1:8; f +* (i,d) = f +* (i .--> d) by A1, Def3; then rng (f +* (i,d)) c= (rng f) \/ (rng (i .--> d)) by FUNCT_4:17; then rng (f +* (i,d)) c= D by A2, XBOOLE_1:1; hence f +* (i,d) is FinSequence of D by FINSEQ_1:def_4; ::_thesis: verum end; suppose not i in dom f ; ::_thesis: f +* (i,d) is FinSequence of D hence f +* (i,d) is FinSequence of D by Def3; ::_thesis: verum end; end; end; end; theorem :: FUNCT_7:36 for D being non empty set for f being FinSequence of D for d being Element of D for i being Element of NAT st i in dom f holds (f +* (i,d)) /. i = d proof let D be non empty set ; ::_thesis: for f being FinSequence of D for d being Element of D for i being Element of NAT st i in dom f holds (f +* (i,d)) /. i = d let f be FinSequence of D; ::_thesis: for d being Element of D for i being Element of NAT st i in dom f holds (f +* (i,d)) /. i = d let d be Element of D; ::_thesis: for i being Element of NAT st i in dom f holds (f +* (i,d)) /. i = d let i be Element of NAT ; ::_thesis: ( i in dom f implies (f +* (i,d)) /. i = d ) assume A1: i in dom f ; ::_thesis: (f +* (i,d)) /. i = d then i in dom (f +* (i,d)) by Th30; hence (f +* (i,d)) /. i = (f +* (i,d)) . i by PARTFUN1:def_6 .= d by A1, Th31 ; ::_thesis: verum end; theorem :: FUNCT_7:37 for D being non empty set for f being FinSequence of D for d being Element of D for i, j being Element of NAT st i <> j & j in dom f holds (f +* (i,d)) /. j = f /. j proof let D be non empty set ; ::_thesis: for f being FinSequence of D for d being Element of D for i, j being Element of NAT st i <> j & j in dom f holds (f +* (i,d)) /. j = f /. j let f be FinSequence of D; ::_thesis: for d being Element of D for i, j being Element of NAT st i <> j & j in dom f holds (f +* (i,d)) /. j = f /. j let d be Element of D; ::_thesis: for i, j being Element of NAT st i <> j & j in dom f holds (f +* (i,d)) /. j = f /. j let i, j be Element of NAT ; ::_thesis: ( i <> j & j in dom f implies (f +* (i,d)) /. j = f /. j ) assume that A1: i <> j and A2: j in dom f ; ::_thesis: (f +* (i,d)) /. j = f /. j j in dom (f +* (i,d)) by A2, Th30; hence (f +* (i,d)) /. j = (f +* (i,d)) . j by PARTFUN1:def_6 .= f . j by A1, Th32 .= f /. j by A2, PARTFUN1:def_6 ; ::_thesis: verum end; theorem :: FUNCT_7:38 for D being non empty set for f being FinSequence of D for d, e being Element of D for i being Element of NAT holds f +* (i,(f /. i)) = f proof let D be non empty set ; ::_thesis: for f being FinSequence of D for d, e being Element of D for i being Element of NAT holds f +* (i,(f /. i)) = f let f be FinSequence of D; ::_thesis: for d, e being Element of D for i being Element of NAT holds f +* (i,(f /. i)) = f let d, e be Element of D; ::_thesis: for i being Element of NAT holds f +* (i,(f /. i)) = f let i be Element of NAT ; ::_thesis: f +* (i,(f /. i)) = f percases ( i in dom f or not i in dom f ) ; suppose i in dom f ; ::_thesis: f +* (i,(f /. i)) = f hence f +* (i,(f /. i)) = f +* (i,(f . i)) by PARTFUN1:def_6 .= f by Th35 ; ::_thesis: verum end; suppose not i in dom f ; ::_thesis: f +* (i,(f /. i)) = f hence f +* (i,(f /. i)) = f by Def3; ::_thesis: verum end; end; end; begin definition let X be set ; let p be Function-yielding FinSequence; func compose (p,X) -> Function means :Def4: :: FUNCT_7:def 4 ex f being ManySortedFunction of NAT st ( it = f . (len p) & f . 0 = id X & ( for i being Element of NAT st i + 1 in dom p holds for g, h being Function st g = f . i & h = p . (i + 1) holds f . (i + 1) = h * g ) ); uniqueness for b1, b2 being Function st ex f being ManySortedFunction of NAT st ( b1 = f . (len p) & f . 0 = id X & ( for i being Element of NAT st i + 1 in dom p holds for g, h being Function st g = f . i & h = p . (i + 1) holds f . (i + 1) = h * g ) ) & ex f being ManySortedFunction of NAT st ( b2 = f . (len p) & f . 0 = id X & ( for i being Element of NAT st i + 1 in dom p holds for g, h being Function st g = f . i & h = p . (i + 1) holds f . (i + 1) = h * g ) ) holds b1 = b2 proof let g1, g2 be Function; ::_thesis: ( ex f being ManySortedFunction of NAT st ( g1 = f . (len p) & f . 0 = id X & ( for i being Element of NAT st i + 1 in dom p holds for g, h being Function st g = f . i & h = p . (i + 1) holds f . (i + 1) = h * g ) ) & ex f being ManySortedFunction of NAT st ( g2 = f . (len p) & f . 0 = id X & ( for i being Element of NAT st i + 1 in dom p holds for g, h being Function st g = f . i & h = p . (i + 1) holds f . (i + 1) = h * g ) ) implies g1 = g2 ) given f1 being ManySortedFunction of NAT such that A1: g1 = f1 . (len p) and A2: f1 . 0 = id X and A3: for i being Element of NAT st i + 1 in dom p holds for g, h being Function st g = f1 . i & h = p . (i + 1) holds f1 . (i + 1) = h * g ; ::_thesis: ( for f being ManySortedFunction of NAT holds ( not g2 = f . (len p) or not f . 0 = id X or ex i being Element of NAT st ( i + 1 in dom p & ex g, h being Function st ( g = f . i & h = p . (i + 1) & not f . (i + 1) = h * g ) ) ) or g1 = g2 ) given f2 being ManySortedFunction of NAT such that A4: g2 = f2 . (len p) and A5: f2 . 0 = id X and A6: for i being Element of NAT st i + 1 in dom p holds for g, h being Function st g = f2 . i & h = p . (i + 1) holds f2 . (i + 1) = h * g ; ::_thesis: g1 = g2 defpred S1[ Element of NAT ] means ( $1 <= len p implies ( f1 . $1 = f2 . $1 & f1 . $1 is Function ) ); A7: for i being Element of NAT st S1[i] holds S1[i + 1] proof let i be Element of NAT ; ::_thesis: ( S1[i] implies S1[i + 1] ) assume that A8: ( i <= len p implies ( f1 . i = f2 . i & f1 . i is Function ) ) and A9: i + 1 <= len p ; ::_thesis: ( f1 . (i + 1) = f2 . (i + 1) & f1 . (i + 1) is Function ) reconsider h = p . (i + 1) as Function ; reconsider g = f1 . i as Function ; i + 1 >= 1 by NAT_1:11; then A10: i + 1 in dom p by A9, FINSEQ_3:25; then f1 . (i + 1) = h * g by A3; hence ( f1 . (i + 1) = f2 . (i + 1) & f1 . (i + 1) is Function ) by A6, A8, A9, A10, NAT_1:13; ::_thesis: verum end; A11: S1[ 0 ] by A2, A5; for i being Element of NAT holds S1[i] from NAT_1:sch_1(A11, A7); hence g1 = g2 by A1, A4; ::_thesis: verum end; correctness existence ex b1 being Function ex f being ManySortedFunction of NAT st ( b1 = f . (len p) & f . 0 = id X & ( for i being Element of NAT st i + 1 in dom p holds for g, h being Function st g = f . i & h = p . (i + 1) holds f . (i + 1) = h * g ) ); proof reconsider e = 0 as Function ; defpred S1[ Element of NAT , set , set ] means ( ( $2 is not Function & $3 = e ) or ( $2 is Function & ( for g, h being Function st g = $2 & h = p . ($1 + 1) holds $3 = h * g ) ) ); A12: for n being Element of NAT for x being set ex y being set st S1[n,x,y] proof let n be Element of NAT ; ::_thesis: for x being set ex y being set st S1[n,x,y] let x be set ; ::_thesis: ex y being set st S1[n,x,y] reconsider h = p . (n + 1) as Function ; percases ( x is Function or not x is Function ) ; suppose x is Function ; ::_thesis: ex y being set st S1[n,x,y] then reconsider g = x as Function ; take h * g ; ::_thesis: S1[n,x,h * g] thus S1[n,x,h * g] ; ::_thesis: verum end; supposeA13: x is not Function ; ::_thesis: ex y being set st S1[n,x,y] take 0 ; ::_thesis: S1[n,x, 0 ] thus S1[n,x, 0 ] by A13; ::_thesis: verum end; end; end; consider f being Function such that A14: ( dom f = NAT & f . 0 = id X ) and A15: for n being Element of NAT holds S1[n,f . n,f . (n + 1)] from RECDEF_1:sch_1(A12); defpred S2[ Element of NAT ] means f . $1 is Function; A16: for i being Element of NAT st S2[i] holds S2[i + 1] proof let i be Element of NAT ; ::_thesis: ( S2[i] implies S2[i + 1] ) reconsider h = p . (i + 1) as Function ; assume f . i is Function ; ::_thesis: S2[i + 1] then reconsider g = f . i as Function ; f . (i + 1) = h * g by A15; hence S2[i + 1] ; ::_thesis: verum end; A17: S2[ 0 ] by A14; A18: for i being Element of NAT holds S2[i] from NAT_1:sch_1(A17, A16); then reconsider F = f . (len p) as Function ; f is Function-yielding proof let x be set ; :: according to FUNCOP_1:def_6 ::_thesis: ( not x in proj1 f or f . x is set ) assume x in dom f ; ::_thesis: f . x is set hence f . x is set by A14, A18; ::_thesis: verum end; then reconsider f = f as ManySortedFunction of NAT by A14, PARTFUN1:def_2, RELAT_1:def_18; take F ; ::_thesis: ex f being ManySortedFunction of NAT st ( F = f . (len p) & f . 0 = id X & ( for i being Element of NAT st i + 1 in dom p holds for g, h being Function st g = f . i & h = p . (i + 1) holds f . (i + 1) = h * g ) ) take f ; ::_thesis: ( F = f . (len p) & f . 0 = id X & ( for i being Element of NAT st i + 1 in dom p holds for g, h being Function st g = f . i & h = p . (i + 1) holds f . (i + 1) = h * g ) ) thus ( F = f . (len p) & f . 0 = id X ) by A14; ::_thesis: for i being Element of NAT st i + 1 in dom p holds for g, h being Function st g = f . i & h = p . (i + 1) holds f . (i + 1) = h * g let i be Element of NAT ; ::_thesis: ( i + 1 in dom p implies for g, h being Function st g = f . i & h = p . (i + 1) holds f . (i + 1) = h * g ) thus ( i + 1 in dom p implies for g, h being Function st g = f . i & h = p . (i + 1) holds f . (i + 1) = h * g ) by A15; ::_thesis: verum end; end; :: deftheorem Def4 defines compose FUNCT_7:def_4_:_ for X being set for p being Function-yielding FinSequence for b3 being Function holds ( b3 = compose (p,X) iff ex f being ManySortedFunction of NAT st ( b3 = f . (len p) & f . 0 = id X & ( for i being Element of NAT st i + 1 in dom p holds for g, h being Function st g = f . i & h = p . (i + 1) holds f . (i + 1) = h * g ) ) ); definition let p be Function-yielding FinSequence; let x be set ; func apply (p,x) -> FinSequence means :Def5: :: FUNCT_7:def 5 ( len it = (len p) + 1 & it . 1 = x & ( for i being Element of NAT for f being Function st i in dom p & f = p . i holds it . (i + 1) = f . (it . i) ) ); existence ex b1 being FinSequence st ( len b1 = (len p) + 1 & b1 . 1 = x & ( for i being Element of NAT for f being Function st i in dom p & f = p . i holds b1 . (i + 1) = f . (b1 . i) ) ) proof defpred S1[ Element of NAT , set , set ] means ex f being Function st ( f = p . $1 & $3 = f . $2 ); A1: for i being Element of NAT st 1 <= i & i < (len p) + 1 holds for x being set ex y being set st S1[i,x,y] proof let i be Element of NAT ; ::_thesis: ( 1 <= i & i < (len p) + 1 implies for x being set ex y being set st S1[i,x,y] ) assume 1 <= i ; ::_thesis: ( not i < (len p) + 1 or for x being set ex y being set st S1[i,x,y] ) assume i < (len p) + 1 ; ::_thesis: for x being set ex y being set st S1[i,x,y] reconsider f = p . i as Function ; let x be set ; ::_thesis: ex y being set st S1[i,x,y] take f . x ; ::_thesis: S1[i,x,f . x] take f ; ::_thesis: ( f = p . i & f . x = f . x ) thus ( f = p . i & f . x = f . x ) ; ::_thesis: verum end; consider q being FinSequence such that A2: ( len q = (len p) + 1 & ( q . 1 = x or (len p) + 1 = 0 ) ) and A3: for i being Element of NAT st 1 <= i & i < (len p) + 1 holds S1[i,q . i,q . (i + 1)] from RECDEF_1:sch_3(A1); take q ; ::_thesis: ( len q = (len p) + 1 & q . 1 = x & ( for i being Element of NAT for f being Function st i in dom p & f = p . i holds q . (i + 1) = f . (q . i) ) ) thus ( len q = (len p) + 1 & q . 1 = x ) by A2; ::_thesis: for i being Element of NAT for f being Function st i in dom p & f = p . i holds q . (i + 1) = f . (q . i) let i be Element of NAT ; ::_thesis: for f being Function st i in dom p & f = p . i holds q . (i + 1) = f . (q . i) let f be Function; ::_thesis: ( i in dom p & f = p . i implies q . (i + 1) = f . (q . i) ) assume A4: i in dom p ; ::_thesis: ( not f = p . i or q . (i + 1) = f . (q . i) ) then i <= len p by FINSEQ_3:25; then A5: i < (len p) + 1 by NAT_1:13; i >= 1 by A4, FINSEQ_3:25; then ex f being Function st ( f = p . i & q . (i + 1) = f . (q . i) ) by A3, A5; hence ( not f = p . i or q . (i + 1) = f . (q . i) ) ; ::_thesis: verum end; correctness uniqueness for b1, b2 being FinSequence st len b1 = (len p) + 1 & b1 . 1 = x & ( for i being Element of NAT for f being Function st i in dom p & f = p . i holds b1 . (i + 1) = f . (b1 . i) ) & len b2 = (len p) + 1 & b2 . 1 = x & ( for i being Element of NAT for f being Function st i in dom p & f = p . i holds b2 . (i + 1) = f . (b2 . i) ) holds b1 = b2; proof let q1, q2 be FinSequence; ::_thesis: ( len q1 = (len p) + 1 & q1 . 1 = x & ( for i being Element of NAT for f being Function st i in dom p & f = p . i holds q1 . (i + 1) = f . (q1 . i) ) & len q2 = (len p) + 1 & q2 . 1 = x & ( for i being Element of NAT for f being Function st i in dom p & f = p . i holds q2 . (i + 1) = f . (q2 . i) ) implies q1 = q2 ) assume that A6: len q1 = (len p) + 1 and A7: q1 . 1 = x and A8: for i being Element of NAT for f being Function st i in dom p & f = p . i holds q1 . (i + 1) = f . (q1 . i) and A9: len q2 = (len p) + 1 and A10: q2 . 1 = x and A11: for i being Element of NAT for f being Function st i in dom p & f = p . i holds q2 . (i + 1) = f . (q2 . i) ; ::_thesis: q1 = q2 defpred S1[ Nat] means ( $1 in dom q1 implies q1 . $1 = q2 . $1 ); A12: for i being Nat st S1[i] holds S1[i + 1] proof let i be Nat; ::_thesis: ( S1[i] implies S1[i + 1] ) assume that A13: ( i in dom q1 implies q1 . i = q2 . i ) and A14: i + 1 in dom q1 ; ::_thesis: q1 . (i + 1) = q2 . (i + 1) i + 1 <= len q1 by A14, FINSEQ_3:25; then A15: i <= len p by A6, XREAL_1:6; percases ( i = 0 or i > 0 ) ; suppose i = 0 ; ::_thesis: q1 . (i + 1) = q2 . (i + 1) hence q1 . (i + 1) = q2 . (i + 1) by A7, A10; ::_thesis: verum end; supposeA16: i > 0 ; ::_thesis: q1 . (i + 1) = q2 . (i + 1) reconsider f = p . i as Function ; i >= 0 + 1 by A16, NAT_1:13; then A17: i in dom p by A15, FINSEQ_3:25; hence q1 . (i + 1) = f . (q2 . i) by A6, A8, A13, Th22 .= q2 . (i + 1) by A11, A17 ; ::_thesis: verum end; end; end; A18: S1[ 0 ] by FINSEQ_3:25; A19: for i being Nat holds S1[i] from NAT_1:sch_2(A18, A12); dom q1 = dom q2 by A6, A9, FINSEQ_3:29; hence q1 = q2 by A19, FINSEQ_1:13; ::_thesis: verum end; end; :: deftheorem Def5 defines apply FUNCT_7:def_5_:_ for p being Function-yielding FinSequence for x being set for b3 being FinSequence holds ( b3 = apply (p,x) iff ( len b3 = (len p) + 1 & b3 . 1 = x & ( for i being Element of NAT for f being Function st i in dom p & f = p . i holds b3 . (i + 1) = f . (b3 . i) ) ) ); theorem Th39: :: FUNCT_7:39 for X being set holds compose ({},X) = id X proof let X be set ; ::_thesis: compose ({},X) = id X ex f being ManySortedFunction of NAT st ( compose ({},X) = f . 0 & f . 0 = id X & ( for i being Element of NAT st i + 1 in dom {} holds for g, h being Function st g = f . i & h = {} . (i + 1) holds f . (i + 1) = h * g ) ) by Def4, CARD_1:27; hence compose ({},X) = id X ; ::_thesis: verum end; theorem Th40: :: FUNCT_7:40 for x being set holds apply ({},x) = <*x*> proof let x be set ; ::_thesis: apply ({},x) = <*x*> ( len (apply ({},x)) = 0 + 1 & (apply ({},x)) . 1 = x ) by Def5, CARD_1:27; hence apply ({},x) = <*x*> by FINSEQ_1:40; ::_thesis: verum end; theorem Th41: :: FUNCT_7:41 for X being set for p being Function-yielding FinSequence for f being Function holds compose ((p ^ <*f*>),X) = f * (compose (p,X)) proof let X be set ; ::_thesis: for p being Function-yielding FinSequence for f being Function holds compose ((p ^ <*f*>),X) = f * (compose (p,X)) let p be Function-yielding FinSequence; ::_thesis: for f being Function holds compose ((p ^ <*f*>),X) = f * (compose (p,X)) let f be Function; ::_thesis: compose ((p ^ <*f*>),X) = f * (compose (p,X)) A1: f = (p ^ <*f*>) . ((len p) + 1) by FINSEQ_1:42; len <*f*> = 1 by FINSEQ_1:40; then A2: len (p ^ <*f*>) = (len p) + 1 by FINSEQ_1:22; consider ff being ManySortedFunction of NAT such that A3: compose ((p ^ <*f*>),X) = ff . (len (p ^ <*f*>)) and A4: ff . 0 = id X and A5: for i being Element of NAT st i + 1 in dom (p ^ <*f*>) holds for g, h being Function st g = ff . i & h = (p ^ <*f*>) . (i + 1) holds ff . (i + 1) = h * g by Def4; reconsider g = ff . (len p) as Function ; A6: dom p c= dom (p ^ <*f*>) by FINSEQ_1:26; now__::_thesis:_for_i_being_Element_of_NAT_st_i_+_1_in_dom_p_holds_ for_g,_h_being_Function_st_g_=_ff_._i_&_h_=_p_._(i_+_1)_holds_ ff_._(i_+_1)_=_h_*_g let i be Element of NAT ; ::_thesis: ( i + 1 in dom p implies for g, h being Function st g = ff . i & h = p . (i + 1) holds ff . (i + 1) = h * g ) assume A7: i + 1 in dom p ; ::_thesis: for g, h being Function st g = ff . i & h = p . (i + 1) holds ff . (i + 1) = h * g let g, h be Function; ::_thesis: ( g = ff . i & h = p . (i + 1) implies ff . (i + 1) = h * g ) assume that A8: g = ff . i and A9: h = p . (i + 1) ; ::_thesis: ff . (i + 1) = h * g h = (p ^ <*f*>) . (i + 1) by A7, A9, FINSEQ_1:def_7; hence ff . (i + 1) = h * g by A5, A6, A7, A8; ::_thesis: verum end; then A10: g = compose (p,X) by A4, Def4; ( 1 in Seg 1 & dom <*f*> = Seg 1 ) by FINSEQ_1:2, FINSEQ_1:38, TARSKI:def_1; hence compose ((p ^ <*f*>),X) = f * (compose (p,X)) by A3, A5, A10, A2, A1, FINSEQ_1:28; ::_thesis: verum end; theorem Th42: :: FUNCT_7:42 for x being set for p being Function-yielding FinSequence for f being Function holds apply ((p ^ <*f*>),x) = (apply (p,x)) ^ <*(f . ((apply (p,x)) . ((len p) + 1)))*> proof let x be set ; ::_thesis: for p being Function-yielding FinSequence for f being Function holds apply ((p ^ <*f*>),x) = (apply (p,x)) ^ <*(f . ((apply (p,x)) . ((len p) + 1)))*> let p be Function-yielding FinSequence; ::_thesis: for f being Function holds apply ((p ^ <*f*>),x) = (apply (p,x)) ^ <*(f . ((apply (p,x)) . ((len p) + 1)))*> let f be Function; ::_thesis: apply ((p ^ <*f*>),x) = (apply (p,x)) ^ <*(f . ((apply (p,x)) . ((len p) + 1)))*> defpred S1[ Nat] means ( $1 in dom (apply (p,x)) implies (apply ((p ^ <*f*>),x)) . $1 = (apply (p,x)) . $1 ); A1: len (apply (p,x)) = (len p) + 1 by Def5; A2: (apply (p,x)) . 1 = x by Def5; A3: for i being Nat st S1[i] holds S1[i + 1] proof let i be Nat; ::_thesis: ( S1[i] implies S1[i + 1] ) assume that A4: ( i in dom (apply (p,x)) implies (apply ((p ^ <*f*>),x)) . i = (apply (p,x)) . i ) and A5: i + 1 in dom (apply (p,x)) ; ::_thesis: (apply ((p ^ <*f*>),x)) . (i + 1) = (apply (p,x)) . (i + 1) A6: i + 1 <= len (apply (p,x)) by A5, FINSEQ_3:25; then A7: i <= len (apply (p,x)) by NAT_1:13; A8: i <= len p by A1, A6, XREAL_1:6; percases ( i = 0 or i > 0 ) ; suppose i = 0 ; ::_thesis: (apply ((p ^ <*f*>),x)) . (i + 1) = (apply (p,x)) . (i + 1) hence (apply ((p ^ <*f*>),x)) . (i + 1) = (apply (p,x)) . (i + 1) by A2, Def5; ::_thesis: verum end; supposeA9: i > 0 ; ::_thesis: (apply ((p ^ <*f*>),x)) . (i + 1) = (apply (p,x)) . (i + 1) reconsider g = p . i as Function ; A10: i >= 0 + 1 by A9, NAT_1:13; then A11: i in dom p by A8, FINSEQ_3:25; then ( dom p c= dom (p ^ <*f*>) & g = (p ^ <*f*>) . i ) by FINSEQ_1:26, FINSEQ_1:def_7; then (apply ((p ^ <*f*>),x)) . (i + 1) = g . ((apply ((p ^ <*f*>),x)) . i) by A11, Def5; hence (apply ((p ^ <*f*>),x)) . (i + 1) = (apply (p,x)) . (i + 1) by A4, A7, A10, A11, Def5, FINSEQ_3:25; ::_thesis: verum end; end; end; A12: S1[ 0 ] by FINSEQ_3:25; A13: for i being Nat holds S1[i] from NAT_1:sch_2(A12, A3); len <*f*> = 1 by FINSEQ_1:40; then A14: len (p ^ <*f*>) = (len p) + 1 by FINSEQ_1:22; A15: (len p) + 1 >= 1 by NAT_1:11; then A16: ( (p ^ <*f*>) . ((len p) + 1) = f & (len p) + 1 in dom (p ^ <*f*>) ) by A14, FINSEQ_1:42, FINSEQ_3:25; A17: (len p) + 1 in dom (apply (p,x)) by A1, A15, FINSEQ_3:25; A18: now__::_thesis:_for_i_being_Nat_st_i_in_dom_<*(f_._((apply_(p,x))_._((len_p)_+_1)))*>_holds_ (apply_((p_^_<*f*>),x))_._((len_(apply_(p,x)))_+_i)_=_<*(f_._((apply_(p,x))_._((len_p)_+_1)))*>_._i let i be Nat; ::_thesis: ( i in dom <*(f . ((apply (p,x)) . ((len p) + 1)))*> implies (apply ((p ^ <*f*>),x)) . ((len (apply (p,x))) + i) = <*(f . ((apply (p,x)) . ((len p) + 1)))*> . i ) assume i in dom <*(f . ((apply (p,x)) . ((len p) + 1)))*> ; ::_thesis: (apply ((p ^ <*f*>),x)) . ((len (apply (p,x))) + i) = <*(f . ((apply (p,x)) . ((len p) + 1)))*> . i then i in Seg 1 by FINSEQ_1:38; then A19: i = 1 by FINSEQ_1:2, TARSKI:def_1; then ( f . ((apply ((p ^ <*f*>),x)) . ((len p) + i)) = (apply ((p ^ <*f*>),x)) . ((len (apply (p,x))) + i) & (apply ((p ^ <*f*>),x)) . ((len p) + i) = (apply (p,x)) . ((len p) + i) ) by A1, A16, A17, A13, Def5; hence (apply ((p ^ <*f*>),x)) . ((len (apply (p,x))) + i) = <*(f . ((apply (p,x)) . ((len p) + 1)))*> . i by A19, FINSEQ_1:40; ::_thesis: verum end; len (apply ((p ^ <*f*>),x)) = (len (p ^ <*f*>)) + 1 by Def5; then ( len <*(f . ((apply (p,x)) . ((len p) + 1)))*> = 1 & dom (apply ((p ^ <*f*>),x)) = Seg ((len (apply (p,x))) + 1) ) by A1, A14, FINSEQ_1:40, FINSEQ_1:def_3; hence apply ((p ^ <*f*>),x) = (apply (p,x)) ^ <*(f . ((apply (p,x)) . ((len p) + 1)))*> by A13, A18, FINSEQ_1:def_7; ::_thesis: verum end; theorem :: FUNCT_7:43 for X being set for p being Function-yielding FinSequence for f being Function holds compose ((<*f*> ^ p),X) = (compose (p,(f .: X))) * (f | X) proof let X be set ; ::_thesis: for p being Function-yielding FinSequence for f being Function holds compose ((<*f*> ^ p),X) = (compose (p,(f .: X))) * (f | X) let p be Function-yielding FinSequence; ::_thesis: for f being Function holds compose ((<*f*> ^ p),X) = (compose (p,(f .: X))) * (f | X) let f be Function; ::_thesis: compose ((<*f*> ^ p),X) = (compose (p,(f .: X))) * (f | X) defpred S1[ Function-yielding FinSequence] means compose ((<*f*> ^ $1),X) = (compose ($1,(f .: X))) * (f | X); A1: for p being Function-yielding FinSequence st S1[p] holds for f being Function holds S1[p ^ <*f*>] proof let p be Function-yielding FinSequence; ::_thesis: ( S1[p] implies for f being Function holds S1[p ^ <*f*>] ) assume A2: compose ((<*f*> ^ p),X) = (compose (p,(f .: X))) * (f | X) ; ::_thesis: for f being Function holds S1[p ^ <*f*>] let g be Function; ::_thesis: S1[p ^ <*g*>] thus compose ((<*f*> ^ (p ^ <*g*>)),X) = compose (((<*f*> ^ p) ^ <*g*>),X) by FINSEQ_1:32 .= g * (compose ((<*f*> ^ p),X)) by Th41 .= (g * (compose (p,(f .: X)))) * (f | X) by A2, RELAT_1:36 .= (compose ((p ^ <*g*>),(f .: X))) * (f | X) by Th41 ; ::_thesis: verum end; ( <*f*> ^ {} = <*f*> & {} ^ <*f*> = <*f*> ) by FINSEQ_1:34; then compose ((<*f*> ^ {}),X) = f * (compose ({},X)) by Th41 .= f * (id X) by Th39 .= f | X by RELAT_1:65 .= (id (rng (f | X))) * (f | X) by RELAT_1:54 .= (id (f .: X)) * (f | X) by RELAT_1:115 .= (compose ({},(f .: X))) * (f | X) by Th39 ; then A3: S1[ {} ] ; for p being Function-yielding FinSequence holds S1[p] from FUNCT_7:sch_5(A3, A1); hence compose ((<*f*> ^ p),X) = (compose (p,(f .: X))) * (f | X) ; ::_thesis: verum end; theorem :: FUNCT_7:44 for x being set for p being Function-yielding FinSequence for f being Function holds apply ((<*f*> ^ p),x) = <*x*> ^ (apply (p,(f . x))) proof let x be set ; ::_thesis: for p being Function-yielding FinSequence for f being Function holds apply ((<*f*> ^ p),x) = <*x*> ^ (apply (p,(f . x))) let p be Function-yielding FinSequence; ::_thesis: for f being Function holds apply ((<*f*> ^ p),x) = <*x*> ^ (apply (p,(f . x))) let f be Function; ::_thesis: apply ((<*f*> ^ p),x) = <*x*> ^ (apply (p,(f . x))) defpred S1[ Function-yielding FinSequence] means apply ((<*f*> ^ $1),x) = <*x*> ^ (apply ($1,(f . x))); A1: len {} = 0 ; A2: for p being Function-yielding FinSequence st S1[p] holds for f being Function holds S1[p ^ <*f*>] proof let p be Function-yielding FinSequence; ::_thesis: ( S1[p] implies for f being Function holds S1[p ^ <*f*>] ) assume A3: apply ((<*f*> ^ p),x) = <*x*> ^ (apply (p,(f . x))) ; ::_thesis: for f being Function holds S1[p ^ <*f*>] let g be Function; ::_thesis: S1[p ^ <*g*>] set p9 = <*f*> ^ p; A4: len (apply (p,(f . x))) = (len p) + 1 by Def5; len <*f*> = 1 by FINSEQ_1:40; then A5: len (<*f*> ^ p) = (len p) + 1 by FINSEQ_1:22; then len (<*f*> ^ p) >= 1 by NAT_1:11; then ( len <*x*> = 1 & len (<*f*> ^ p) in dom (apply (p,(f . x))) ) by A4, A5, FINSEQ_1:40, FINSEQ_3:25; then A6: (apply ((<*f*> ^ p),x)) . (1 + (len (<*f*> ^ p))) = (apply (p,(f . x))) . ((len p) + 1) by A3, A5, FINSEQ_1:def_7; apply (((<*f*> ^ p) ^ <*g*>),x) = (apply ((<*f*> ^ p),x)) ^ <*(g . ((apply ((<*f*> ^ p),x)) . ((len (<*f*> ^ p)) + 1)))*> by Th42; hence apply ((<*f*> ^ (p ^ <*g*>)),x) = (<*x*> ^ (apply (p,(f . x)))) ^ <*(g . ((apply (p,(f . x))) . ((len p) + 1)))*> by A3, A6, FINSEQ_1:32 .= <*x*> ^ ((apply (p,(f . x))) ^ <*(g . ((apply (p,(f . x))) . ((len p) + 1)))*>) by FINSEQ_1:32 .= <*x*> ^ (apply ((p ^ <*g*>),(f . x))) by Th42 ; ::_thesis: verum end; ( <*f*> ^ {} = <*f*> & {} ^ <*f*> = <*f*> ) by FINSEQ_1:34; then apply ((<*f*> ^ {}),x) = (apply ({},x)) ^ <*(f . ((apply ({},x)) . (0 + 1)))*> by A1, Th42 .= <*x*> ^ <*(f . ((apply ({},x)) . 1))*> by Th40 .= <*x*> ^ <*(f . (<*x*> . 1))*> by Th40 .= <*x*> ^ <*(f . x)*> by FINSEQ_1:40 .= <*x*> ^ (apply ({},(f . x))) by Th40 ; then A7: S1[ {} ] ; for p being Function-yielding FinSequence holds S1[p] from FUNCT_7:sch_5(A7, A2); hence apply ((<*f*> ^ p),x) = <*x*> ^ (apply (p,(f . x))) ; ::_thesis: verum end; theorem Th45: :: FUNCT_7:45 for X being set for f being Function holds compose (<*f*>,X) = f * (id X) proof let X be set ; ::_thesis: for f being Function holds compose (<*f*>,X) = f * (id X) let f be Function; ::_thesis: compose (<*f*>,X) = f * (id X) <*f*> = {} ^ <*f*> by FINSEQ_1:34; hence compose (<*f*>,X) = f * (compose ({},X)) by Th41 .= f * (id X) by Th39 ; ::_thesis: verum end; theorem :: FUNCT_7:46 for X being set for f being Function st dom f c= X holds compose (<*f*>,X) = f proof let X be set ; ::_thesis: for f being Function st dom f c= X holds compose (<*f*>,X) = f let f be Function; ::_thesis: ( dom f c= X implies compose (<*f*>,X) = f ) compose (<*f*>,X) = f * (id X) by Th45; hence ( dom f c= X implies compose (<*f*>,X) = f ) by RELAT_1:51; ::_thesis: verum end; theorem Th47: :: FUNCT_7:47 for x being set for f being Function holds apply (<*f*>,x) = <*x,(f . x)*> proof let x be set ; ::_thesis: for f being Function holds apply (<*f*>,x) = <*x,(f . x)*> let f be Function; ::_thesis: apply (<*f*>,x) = <*x,(f . x)*> A1: <*x*> . (0 + 1) = x by FINSEQ_1:40; A2: ( apply ({},x) = <*x*> & len {} = 0 ) by Th40; thus apply (<*f*>,x) = apply (({} ^ <*f*>),x) by FINSEQ_1:34 .= <*x*> ^ <*(f . x)*> by A2, A1, Th42 .= <*x,(f . x)*> by FINSEQ_1:def_9 ; ::_thesis: verum end; theorem :: FUNCT_7:48 for X, Y being set for p, q being Function-yielding FinSequence st rng (compose (p,X)) c= Y holds compose ((p ^ q),X) = (compose (q,Y)) * (compose (p,X)) proof let X, Y be set ; ::_thesis: for p, q being Function-yielding FinSequence st rng (compose (p,X)) c= Y holds compose ((p ^ q),X) = (compose (q,Y)) * (compose (p,X)) let p, q be Function-yielding FinSequence; ::_thesis: ( rng (compose (p,X)) c= Y implies compose ((p ^ q),X) = (compose (q,Y)) * (compose (p,X)) ) assume A1: rng (compose (p,X)) c= Y ; ::_thesis: compose ((p ^ q),X) = (compose (q,Y)) * (compose (p,X)) defpred S1[ Function-yielding FinSequence] means compose ((p ^ $1),X) = (compose ($1,Y)) * (compose (p,X)); A2: for p being Function-yielding FinSequence st S1[p] holds for f being Function holds S1[p ^ <*f*>] proof let q be Function-yielding FinSequence; ::_thesis: ( S1[q] implies for f being Function holds S1[q ^ <*f*>] ) assume A3: compose ((p ^ q),X) = (compose (q,Y)) * (compose (p,X)) ; ::_thesis: for f being Function holds S1[q ^ <*f*>] let f be Function; ::_thesis: S1[q ^ <*f*>] thus compose ((p ^ (q ^ <*f*>)),X) = compose (((p ^ q) ^ <*f*>),X) by FINSEQ_1:32 .= f * (compose ((p ^ q),X)) by Th41 .= (f * (compose (q,Y))) * (compose (p,X)) by A3, RELAT_1:36 .= (compose ((q ^ <*f*>),Y)) * (compose (p,X)) by Th41 ; ::_thesis: verum end; compose ((p ^ {}),X) = compose (p,X) by FINSEQ_1:34 .= (id Y) * (compose (p,X)) by A1, RELAT_1:53 .= (compose ({},Y)) * (compose (p,X)) by Th39 ; then A4: S1[ {} ] ; for q being Function-yielding FinSequence holds S1[q] from FUNCT_7:sch_5(A4, A2); hence compose ((p ^ q),X) = (compose (q,Y)) * (compose (p,X)) ; ::_thesis: verum end; theorem Th49: :: FUNCT_7:49 for x being set for p, q being Function-yielding FinSequence holds (apply ((p ^ q),x)) . ((len (p ^ q)) + 1) = (apply (q,((apply (p,x)) . ((len p) + 1)))) . ((len q) + 1) proof let x be set ; ::_thesis: for p, q being Function-yielding FinSequence holds (apply ((p ^ q),x)) . ((len (p ^ q)) + 1) = (apply (q,((apply (p,x)) . ((len p) + 1)))) . ((len q) + 1) let p, q be Function-yielding FinSequence; ::_thesis: (apply ((p ^ q),x)) . ((len (p ^ q)) + 1) = (apply (q,((apply (p,x)) . ((len p) + 1)))) . ((len q) + 1) defpred S1[ Function-yielding FinSequence] means (apply ((p ^ $1),x)) . ((len (p ^ $1)) + 1) = (apply ($1,((apply (p,x)) . ((len p) + 1)))) . ((len $1) + 1); A1: for p being Function-yielding FinSequence st S1[p] holds for f being Function holds S1[p ^ <*f*>] proof set y = (apply (p,x)) . ((len p) + 1); let q be Function-yielding FinSequence; ::_thesis: ( S1[q] implies for f being Function holds S1[q ^ <*f*>] ) assume A2: (apply ((p ^ q),x)) . ((len (p ^ q)) + 1) = (apply (q,((apply (p,x)) . ((len p) + 1)))) . ((len q) + 1) ; ::_thesis: for f being Function holds S1[q ^ <*f*>] let f be Function; ::_thesis: S1[q ^ <*f*>] A3: len <*f*> = 1 by FINSEQ_1:40; then A4: len ((p ^ q) ^ <*f*>) = (len (p ^ q)) + 1 by FINSEQ_1:22; A5: len (q ^ <*f*>) = (len q) + 1 by A3, FINSEQ_1:22; A6: ( apply ((q ^ <*f*>),((apply (p,x)) . ((len p) + 1))) = (apply (q,((apply (p,x)) . ((len p) + 1)))) ^ <*(f . ((apply (q,((apply (p,x)) . ((len p) + 1)))) . ((len q) + 1)))*> & len (apply (q,((apply (p,x)) . ((len p) + 1)))) = (len q) + 1 ) by Def5, Th42; A7: len (apply ((p ^ q),x)) = (len (p ^ q)) + 1 by Def5; ( p ^ (q ^ <*f*>) = (p ^ q) ^ <*f*> & apply (((p ^ q) ^ <*f*>),x) = (apply ((p ^ q),x)) ^ <*(f . ((apply ((p ^ q),x)) . ((len (p ^ q)) + 1)))*> ) by Th42, FINSEQ_1:32; hence (apply ((p ^ (q ^ <*f*>)),x)) . ((len (p ^ (q ^ <*f*>))) + 1) = f . ((apply ((p ^ q),x)) . ((len (p ^ q)) + 1)) by A7, A4, FINSEQ_1:42 .= (apply ((q ^ <*f*>),((apply (p,x)) . ((len p) + 1)))) . ((len (q ^ <*f*>)) + 1) by A2, A6, A5, FINSEQ_1:42 ; ::_thesis: verum end; ( apply ({},((apply (p,x)) . ((len p) + 1))) = <*((apply (p,x)) . ((len p) + 1))*> & p ^ {} = p ) by Th40, FINSEQ_1:34; then A8: S1[ {} ] by FINSEQ_1:40; for q being Function-yielding FinSequence holds S1[q] from FUNCT_7:sch_5(A8, A1); hence (apply ((p ^ q),x)) . ((len (p ^ q)) + 1) = (apply (q,((apply (p,x)) . ((len p) + 1)))) . ((len q) + 1) ; ::_thesis: verum end; theorem :: FUNCT_7:50 for x being set for p, q being Function-yielding FinSequence holds apply ((p ^ q),x) = (apply (p,x)) $^ (apply (q,((apply (p,x)) . ((len p) + 1)))) proof let x be set ; ::_thesis: for p, q being Function-yielding FinSequence holds apply ((p ^ q),x) = (apply (p,x)) $^ (apply (q,((apply (p,x)) . ((len p) + 1)))) let p, q be Function-yielding FinSequence; ::_thesis: apply ((p ^ q),x) = (apply (p,x)) $^ (apply (q,((apply (p,x)) . ((len p) + 1)))) defpred S1[ Function-yielding FinSequence] means apply ((p ^ $1),x) = (apply (p,x)) $^ (apply ($1,((apply (p,x)) . ((len p) + 1)))); A1: len (apply (p,x)) = (len p) + 1 by Def5; then consider r being FinSequence, y being set such that A2: apply (p,x) = r ^ <*y*> by CARD_1:27, FINSEQ_1:46; A3: for p being Function-yielding FinSequence st S1[p] holds for f being Function holds S1[p ^ <*f*>] proof let q be Function-yielding FinSequence; ::_thesis: ( S1[q] implies for f being Function holds S1[q ^ <*f*>] ) assume A4: apply ((p ^ q),x) = (apply (p,x)) $^ (apply (q,((apply (p,x)) . ((len p) + 1)))) ; ::_thesis: for f being Function holds S1[q ^ <*f*>] A5: (apply ((p ^ q),x)) . ((len (p ^ q)) + 1) = (apply (q,((apply (p,x)) . ((len p) + 1)))) . ((len q) + 1) by Th49; let f be Function; ::_thesis: S1[q ^ <*f*>] A6: len (apply (q,((apply (p,x)) . ((len p) + 1)))) = (len q) + 1 by Def5; A7: len (apply ((q ^ <*f*>),((apply (p,x)) . ((len p) + 1)))) = (len (q ^ <*f*>)) + 1 by Def5; thus apply ((p ^ (q ^ <*f*>)),x) = apply (((p ^ q) ^ <*f*>),x) by FINSEQ_1:32 .= (apply ((p ^ q),x)) ^ <*(f . ((apply ((p ^ q),x)) . ((len (p ^ q)) + 1)))*> by Th42 .= (r ^ (apply (q,((apply (p,x)) . ((len p) + 1))))) ^ <*(f . ((apply ((p ^ q),x)) . ((len (p ^ q)) + 1)))*> by A2, A4, A6, CARD_1:27, REWRITE1:2 .= r ^ ((apply (q,((apply (p,x)) . ((len p) + 1)))) ^ <*(f . ((apply ((p ^ q),x)) . ((len (p ^ q)) + 1)))*>) by FINSEQ_1:32 .= r ^ (apply ((q ^ <*f*>),((apply (p,x)) . ((len p) + 1)))) by A5, Th42 .= (apply (p,x)) $^ (apply ((q ^ <*f*>),((apply (p,x)) . ((len p) + 1)))) by A2, A7, CARD_1:27, REWRITE1:2 ; ::_thesis: verum end; len <*y*> = 1 by FINSEQ_1:40; then (len p) + 1 = (len r) + 1 by A1, A2, FINSEQ_1:22; then A8: (apply (p,x)) . ((len p) + 1) = y by A2, FINSEQ_1:42; apply ((p ^ {}),x) = apply (p,x) by FINSEQ_1:34 .= (apply (p,x)) $^ <*((apply (p,x)) . ((len p) + 1))*> by A2, A8, REWRITE1:2 .= (apply (p,x)) $^ (apply ({},((apply (p,x)) . ((len p) + 1)))) by Th40 ; then A9: S1[ {} ] ; for q being Function-yielding FinSequence holds S1[q] from FUNCT_7:sch_5(A9, A3); hence apply ((p ^ q),x) = (apply (p,x)) $^ (apply (q,((apply (p,x)) . ((len p) + 1)))) ; ::_thesis: verum end; theorem Th51: :: FUNCT_7:51 for X being set for f, g being Function holds compose (<*f,g*>,X) = (g * f) * (id X) proof let X be set ; ::_thesis: for f, g being Function holds compose (<*f,g*>,X) = (g * f) * (id X) let f, g be Function; ::_thesis: compose (<*f,g*>,X) = (g * f) * (id X) <*f,g*> = <*f*> ^ <*g*> by FINSEQ_1:def_9; hence compose (<*f,g*>,X) = g * (compose (<*f*>,X)) by Th41 .= g * (f * (id X)) by Th45 .= (g * f) * (id X) by RELAT_1:36 ; ::_thesis: verum end; theorem :: FUNCT_7:52 for X being set for f, g being Function st ( dom f c= X or dom (g * f) c= X ) holds compose (<*f,g*>,X) = g * f proof let X be set ; ::_thesis: for f, g being Function st ( dom f c= X or dom (g * f) c= X ) holds compose (<*f,g*>,X) = g * f let f, g be Function; ::_thesis: ( ( dom f c= X or dom (g * f) c= X ) implies compose (<*f,g*>,X) = g * f ) ( compose (<*f,g*>,X) = (g * f) * (id X) & (g * f) * (id X) = g * (f * (id X)) ) by Th51, RELAT_1:36; hence ( ( dom f c= X or dom (g * f) c= X ) implies compose (<*f,g*>,X) = g * f ) by RELAT_1:51; ::_thesis: verum end; theorem Th53: :: FUNCT_7:53 for x being set for f, g being Function holds apply (<*f,g*>,x) = <*x,(f . x),(g . (f . x))*> proof let x be set ; ::_thesis: for f, g being Function holds apply (<*f,g*>,x) = <*x,(f . x),(g . (f . x))*> let f, g be Function; ::_thesis: apply (<*f,g*>,x) = <*x,(f . x),(g . (f . x))*> A1: ( apply (<*f*>,x) = <*x,(f . x)*> & len <*f*> = 1 ) by Th47, FINSEQ_1:40; thus apply (<*f,g*>,x) = apply ((<*f*> ^ <*g*>),x) by FINSEQ_1:def_9 .= <*x,(f . x)*> ^ <*(g . (<*x,(f . x)*> . (1 + 1)))*> by A1, Th42 .= <*x,(f . x)*> ^ <*(g . (f . x))*> by FINSEQ_1:44 .= <*x,(f . x),(g . (f . x))*> by FINSEQ_1:43 ; ::_thesis: verum end; theorem Th54: :: FUNCT_7:54 for X being set for f, g, h being Function holds compose (<*f,g,h*>,X) = ((h * g) * f) * (id X) proof let X be set ; ::_thesis: for f, g, h being Function holds compose (<*f,g,h*>,X) = ((h * g) * f) * (id X) let f, g, h be Function; ::_thesis: compose (<*f,g,h*>,X) = ((h * g) * f) * (id X) <*f,g,h*> = <*f,g*> ^ <*h*> by FINSEQ_1:43; hence compose (<*f,g,h*>,X) = h * (compose (<*f,g*>,X)) by Th41 .= h * ((g * f) * (id X)) by Th51 .= (h * (g * f)) * (id X) by RELAT_1:36 .= ((h * g) * f) * (id X) by RELAT_1:36 ; ::_thesis: verum end; theorem :: FUNCT_7:55 for X being set for f, g, h being Function st ( dom f c= X or dom (g * f) c= X or dom ((h * g) * f) c= X ) holds compose (<*f,g,h*>,X) = (h * g) * f proof let X be set ; ::_thesis: for f, g, h being Function st ( dom f c= X or dom (g * f) c= X or dom ((h * g) * f) c= X ) holds compose (<*f,g,h*>,X) = (h * g) * f let f, g, h be Function; ::_thesis: ( ( dom f c= X or dom (g * f) c= X or dom ((h * g) * f) c= X ) implies compose (<*f,g,h*>,X) = (h * g) * f ) A1: ( (h * g) * (f * (id X)) = h * (g * (f * (id X))) & g * (f * (id X)) = (g * f) * (id X) ) by RELAT_1:36; A2: h * (g * f) = (h * g) * f by RELAT_1:36; ( compose (<*f,g,h*>,X) = ((h * g) * f) * (id X) & ((h * g) * f) * (id X) = (h * g) * (f * (id X)) ) by Th54, RELAT_1:36; hence ( ( dom f c= X or dom (g * f) c= X or dom ((h * g) * f) c= X ) implies compose (<*f,g,h*>,X) = (h * g) * f ) by A1, A2, RELAT_1:51; ::_thesis: verum end; theorem :: FUNCT_7:56 for x being set for f, g, h being Function holds apply (<*f,g,h*>,x) = <*x*> ^ <*(f . x),(g . (f . x)),(h . (g . (f . x)))*> proof let x be set ; ::_thesis: for f, g, h being Function holds apply (<*f,g,h*>,x) = <*x*> ^ <*(f . x),(g . (f . x)),(h . (g . (f . x)))*> let f, g, h be Function; ::_thesis: apply (<*f,g,h*>,x) = <*x*> ^ <*(f . x),(g . (f . x)),(h . (g . (f . x)))*> A1: ( apply (<*f,g*>,x) = <*x,(f . x),(g . (f . x))*> & len <*f,g*> = 2 ) by Th53, FINSEQ_1:44; thus apply (<*f,g,h*>,x) = apply ((<*f,g*> ^ <*h*>),x) by FINSEQ_1:43 .= <*x,(f . x),(g . (f . x))*> ^ <*(h . (<*x,(f . x),(g . (f . x))*> . (2 + 1)))*> by A1, Th42 .= <*x,(f . x),(g . (f . x))*> ^ <*(h . (g . (f . x)))*> by FINSEQ_1:45 .= (<*x*> ^ <*(f . x),(g . (f . x))*>) ^ <*(h . (g . (f . x)))*> by FINSEQ_1:43 .= <*x*> ^ (<*(f . x),(g . (f . x))*> ^ <*(h . (g . (f . x)))*>) by FINSEQ_1:32 .= <*x*> ^ <*(f . x),(g . (f . x)),(h . (g . (f . x)))*> by FINSEQ_1:43 ; ::_thesis: verum end; definition let F be FinSequence; func firstdom F -> set means :Def6: :: FUNCT_7:def 6 it is empty if F is empty otherwise it = proj1 (F . 1); correctness consistency for b1 being set holds verum; existence ( ( for b1 being set holds verum ) & ( F is empty implies ex b1 being set st b1 is empty ) & ( not F is empty implies ex b1 being set st b1 = proj1 (F . 1) ) ); uniqueness for b1, b2 being set holds ( ( F is empty & b1 is empty & b2 is empty implies b1 = b2 ) & ( not F is empty & b1 = proj1 (F . 1) & b2 = proj1 (F . 1) implies b1 = b2 ) ); ; func lastrng F -> set means :Def7: :: FUNCT_7:def 7 it is empty if F is empty otherwise it = proj2 (F . (len F)); correctness consistency for b1 being set holds verum; existence ( ( for b1 being set holds verum ) & ( F is empty implies ex b1 being set st b1 is empty ) & ( not F is empty implies ex b1 being set st b1 = proj2 (F . (len F)) ) ); uniqueness for b1, b2 being set holds ( ( F is empty & b1 is empty & b2 is empty implies b1 = b2 ) & ( not F is empty & b1 = proj2 (F . (len F)) & b2 = proj2 (F . (len F)) implies b1 = b2 ) ); ; end; :: deftheorem Def6 defines firstdom FUNCT_7:def_6_:_ for F being FinSequence for b2 being set holds ( ( F is empty implies ( b2 = firstdom F iff b2 is empty ) ) & ( not F is empty implies ( b2 = firstdom F iff b2 = proj1 (F . 1) ) ) ); :: deftheorem Def7 defines lastrng FUNCT_7:def_7_:_ for F being FinSequence for b2 being set holds ( ( F is empty implies ( b2 = lastrng F iff b2 is empty ) ) & ( not F is empty implies ( b2 = lastrng F iff b2 = proj2 (F . (len F)) ) ) ); theorem Th57: :: FUNCT_7:57 ( firstdom {} = {} & lastrng {} = {} ) by Def6, Def7; theorem Th58: :: FUNCT_7:58 for f being Function for p being FinSequence holds ( firstdom (<*f*> ^ p) = dom f & lastrng (p ^ <*f*>) = rng f ) proof let f be Function; ::_thesis: for p being FinSequence holds ( firstdom (<*f*> ^ p) = dom f & lastrng (p ^ <*f*>) = rng f ) let p be FinSequence; ::_thesis: ( firstdom (<*f*> ^ p) = dom f & lastrng (p ^ <*f*>) = rng f ) thus firstdom (<*f*> ^ p) = proj1 ((<*f*> ^ p) . 1) by Def6 .= dom f by FINSEQ_1:41 ; ::_thesis: lastrng (p ^ <*f*>) = rng f len <*f*> = 1 by FINSEQ_1:40; then len (p ^ <*f*>) = (len p) + 1 by FINSEQ_1:22; hence lastrng (p ^ <*f*>) = proj2 ((p ^ <*f*>) . ((len p) + 1)) by Def7 .= rng f by FINSEQ_1:42 ; ::_thesis: verum end; theorem Th59: :: FUNCT_7:59 for X being set for p being Function-yielding FinSequence st p <> {} holds rng (compose (p,X)) c= lastrng p proof let X be set ; ::_thesis: for p being Function-yielding FinSequence st p <> {} holds rng (compose (p,X)) c= lastrng p defpred S1[ Function-yielding FinSequence] means ( $1 <> {} implies rng (compose ($1,X)) c= lastrng $1 ); A1: for p being Function-yielding FinSequence st S1[p] holds for f being Function holds S1[p ^ <*f*>] proof let q be Function-yielding FinSequence; ::_thesis: ( S1[q] implies for f being Function holds S1[q ^ <*f*>] ) assume ( q <> {} implies rng (compose (q,X)) c= lastrng q ) ; ::_thesis: for f being Function holds S1[q ^ <*f*>] let f be Function; ::_thesis: S1[q ^ <*f*>] assume q ^ <*f*> <> {} ; ::_thesis: rng (compose ((q ^ <*f*>),X)) c= lastrng (q ^ <*f*>) compose ((q ^ <*f*>),X) = f * (compose (q,X)) by Th41; then rng (compose ((q ^ <*f*>),X)) c= rng f by RELAT_1:26; hence rng (compose ((q ^ <*f*>),X)) c= lastrng (q ^ <*f*>) by Th58; ::_thesis: verum end; A2: S1[ {} ] ; thus for p being Function-yielding FinSequence holds S1[p] from FUNCT_7:sch_5(A2, A1); ::_thesis: verum end; definition let IT be FinSequence; attrIT is FuncSeq-like means :Def8: :: FUNCT_7:def 8 ex p being FinSequence st ( len p = (len IT) + 1 & ( for i being Element of NAT st i in dom IT holds IT . i in Funcs ((p . i),(p . (i + 1))) ) ); end; :: deftheorem Def8 defines FuncSeq-like FUNCT_7:def_8_:_ for IT being FinSequence holds ( IT is FuncSeq-like iff ex p being FinSequence st ( len p = (len IT) + 1 & ( for i being Element of NAT st i in dom IT holds IT . i in Funcs ((p . i),(p . (i + 1))) ) ) ); theorem Th60: :: FUNCT_7:60 for p, q being FinSequence st p ^ q is FuncSeq-like holds ( p is FuncSeq-like & q is FuncSeq-like ) proof let p, q be FinSequence; ::_thesis: ( p ^ q is FuncSeq-like implies ( p is FuncSeq-like & q is FuncSeq-like ) ) given pq being FinSequence such that A1: len pq = (len (p ^ q)) + 1 and A2: for i being Element of NAT st i in dom (p ^ q) holds (p ^ q) . i in Funcs ((pq . i),(pq . (i + 1))) ; :: according to FUNCT_7:def_8 ::_thesis: ( p is FuncSeq-like & q is FuncSeq-like ) reconsider p1 = pq | (Seg ((len p) + 1)), p2 = pq | (Seg (len p)) as FinSequence by FINSEQ_1:15; A3: len (p ^ q) = (len p) + (len q) by FINSEQ_1:22; then A4: len p <= len (p ^ q) by NAT_1:11; len (p ^ q) <= len pq by A1, NAT_1:11; then len p <= len pq by A4, XXREAL_0:2; then A5: len p2 = len p by FINSEQ_1:17; hereby :: according to FUNCT_7:def_8 ::_thesis: q is FuncSeq-like take p1 = p1; ::_thesis: ( len p1 = (len p) + 1 & ( for i being Element of NAT st i in dom p holds p . i in Funcs ((p1 . i),(p1 . (i + 1))) ) ) len p <= len (p ^ q) by A3, NAT_1:11; then (len p) + 1 <= len pq by A1, XREAL_1:6; hence A6: len p1 = (len p) + 1 by FINSEQ_1:17; ::_thesis: for i being Element of NAT st i in dom p holds p . i in Funcs ((p1 . i),(p1 . (i + 1))) let i be Element of NAT ; ::_thesis: ( i in dom p implies p . i in Funcs ((p1 . i),(p1 . (i + 1))) ) assume A7: i in dom p ; ::_thesis: p . i in Funcs ((p1 . i),(p1 . (i + 1))) then (p ^ q) . i = p . i by FINSEQ_1:def_7; then A8: p . i in Funcs ((pq . i),(pq . (i + 1))) by A2, A7, FINSEQ_3:22; i in dom p1 by A6, A7, Th22; then A9: pq . i = p1 . i by FUNCT_1:47; i + 1 in dom p1 by A6, A7, Th22; hence p . i in Funcs ((p1 . i),(p1 . (i + 1))) by A8, A9, FUNCT_1:47; ::_thesis: verum end; consider q2 being FinSequence such that A10: pq = p2 ^ q2 by FINSEQ_1:80; take q2 ; :: according to FUNCT_7:def_8 ::_thesis: ( len q2 = (len q) + 1 & ( for i being Element of NAT st i in dom q holds q . i in Funcs ((q2 . i),(q2 . (i + 1))) ) ) len pq = (len p2) + (len q2) by A10, FINSEQ_1:22; hence len q2 = (len q) + 1 by A1, A3, A5; ::_thesis: for i being Element of NAT st i in dom q holds q . i in Funcs ((q2 . i),(q2 . (i + 1))) let x be Element of NAT ; ::_thesis: ( x in dom q implies q . x in Funcs ((q2 . x),(q2 . (x + 1))) ) assume A11: x in dom q ; ::_thesis: q . x in Funcs ((q2 . x),(q2 . (x + 1))) then (p ^ q) . ((len p) + x) = q . x by FINSEQ_1:def_7; then A12: q . x in Funcs ((pq . ((len p) + x)),(pq . (((len p) + x) + 1))) by A2, A11, FINSEQ_1:28; A13: (len p) + ((len q) + 1) = (len p) + (len q2) by A1, A3, A10, A5, FINSEQ_1:22; then x + 1 in dom q2 by A11, Th22; then A14: q2 . (x + 1) = pq . ((len p) + (x + 1)) by A10, A5, FINSEQ_1:def_7; x in dom q2 by A13, A11, Th22; hence q . x in Funcs ((q2 . x),(q2 . (x + 1))) by A10, A5, A12, A14, FINSEQ_1:def_7; ::_thesis: verum end; registration cluster Relation-like Function-like FinSequence-like FuncSeq-like -> Function-yielding for set ; coherence for b1 being FinSequence st b1 is FuncSeq-like holds b1 is Function-yielding proof let q be FinSequence; ::_thesis: ( q is FuncSeq-like implies q is Function-yielding ) given p being FinSequence such that len p = (len q) + 1 and A1: for i being Element of NAT st i in dom q holds q . i in Funcs ((p . i),(p . (i + 1))) ; :: according to FUNCT_7:def_8 ::_thesis: q is Function-yielding let i be set ; :: according to FUNCOP_1:def_6 ::_thesis: ( not i in proj1 q or q . i is set ) assume A2: i in dom q ; ::_thesis: q . i is set then reconsider i = i as Element of NAT ; q . i in Funcs ((p . i),(p . (i + 1))) by A1, A2; hence q . i is set ; ::_thesis: verum end; end; registration cluster empty Relation-like Function-like FinSequence-like -> FuncSeq-like for set ; coherence for b1 being FinSequence st b1 is empty holds b1 is FuncSeq-like proof let p be FinSequence; ::_thesis: ( p is empty implies p is FuncSeq-like ) assume A1: p is empty ; ::_thesis: p is FuncSeq-like take q = <*{}*>; :: according to FUNCT_7:def_8 ::_thesis: ( len q = (len p) + 1 & ( for i being Element of NAT st i in dom p holds p . i in Funcs ((q . i),(q . (i + 1))) ) ) thus len q = (len p) + 1 by A1, CARD_1:27, FINSEQ_1:40; ::_thesis: for i being Element of NAT st i in dom p holds p . i in Funcs ((q . i),(q . (i + 1))) thus for i being Element of NAT st i in dom p holds p . i in Funcs ((q . i),(q . (i + 1))) by A1; ::_thesis: verum end; end; registration let f be Function; cluster<*f*> -> FuncSeq-like ; coherence <*f*> is FuncSeq-like proof take q = <*(dom f),(rng f)*>; :: according to FUNCT_7:def_8 ::_thesis: ( len q = (len <*f*>) + 1 & ( for i being Element of NAT st i in dom <*f*> holds <*f*> . i in Funcs ((q . i),(q . (i + 1))) ) ) set p = <*f*>; thus len q = 1 + 1 by FINSEQ_1:44 .= (len <*f*>) + 1 by FINSEQ_1:40 ; ::_thesis: for i being Element of NAT st i in dom <*f*> holds <*f*> . i in Funcs ((q . i),(q . (i + 1))) let i be Element of NAT ; ::_thesis: ( i in dom <*f*> implies <*f*> . i in Funcs ((q . i),(q . (i + 1))) ) assume i in dom <*f*> ; ::_thesis: <*f*> . i in Funcs ((q . i),(q . (i + 1))) then i in {1} by FINSEQ_1:2, FINSEQ_1:38; then A1: i = 1 by TARSKI:def_1; then A2: q . (i + 1) = rng f by FINSEQ_1:44; ( <*f*> . i = f & q . i = dom f ) by A1, FINSEQ_1:40, FINSEQ_1:44; hence <*f*> . i in Funcs ((q . i),(q . (i + 1))) by A2, FUNCT_2:def_2; ::_thesis: verum end; end; registration cluster non empty Relation-like non-empty NAT -defined Function-like finite FinSequence-like FinSubsequence-like FuncSeq-like for set ; existence ex b1 being FinSequence st ( b1 is FuncSeq-like & not b1 is empty & b1 is non-empty ) proof set f = the non empty Function; take p = <* the non empty Function*>; ::_thesis: ( p is FuncSeq-like & not p is empty & p is non-empty ) thus p is FuncSeq-like ; ::_thesis: ( not p is empty & p is non-empty ) thus not p is empty ; ::_thesis: p is non-empty let x be set ; :: according to FUNCT_1:def_9 ::_thesis: ( not x in proj1 p or not p . x is empty ) assume x in dom p ; ::_thesis: not p . x is empty then x in {1} by FINSEQ_1:2, FINSEQ_1:38; then x = 1 by TARSKI:def_1; hence not p . x is empty by FINSEQ_1:40; ::_thesis: verum end; end; definition mode FuncSequence is FuncSeq-like FinSequence; end; theorem Th61: :: FUNCT_7:61 for X being set for p being FuncSequence st p <> {} holds dom (compose (p,X)) = (firstdom p) /\ X proof let X be set ; ::_thesis: for p being FuncSequence st p <> {} holds dom (compose (p,X)) = (firstdom p) /\ X defpred S1[ Function-yielding FinSequence] means ( $1 is FuncSequence & $1 <> {} implies dom (compose ($1,X)) = (firstdom $1) /\ X ); A1: for p being Function-yielding FinSequence st S1[p] holds for f being Function holds S1[p ^ <*f*>] proof let q be Function-yielding FinSequence; ::_thesis: ( S1[q] implies for f being Function holds S1[q ^ <*f*>] ) assume A2: ( q is FuncSequence & q <> {} implies dom (compose (q,X)) = (firstdom q) /\ X ) ; ::_thesis: for f being Function holds S1[q ^ <*f*>] let f be Function; ::_thesis: S1[q ^ <*f*>] assume that A3: q ^ <*f*> is FuncSequence and q ^ <*f*> <> {} ; ::_thesis: dom (compose ((q ^ <*f*>),X)) = (firstdom (q ^ <*f*>)) /\ X A4: compose ((q ^ <*f*>),X) = f * (compose (q,X)) by Th41; percases ( q = {} or q <> {} ) ; suppose q = {} ; ::_thesis: dom (compose ((q ^ <*f*>),X)) = (firstdom (q ^ <*f*>)) /\ X then A5: q ^ <*f*> = <*f*> by FINSEQ_1:34; then A6: compose ((q ^ <*f*>),X) = f * (id X) by Th45; <*f*> ^ {} = <*f*> by FINSEQ_1:34; then firstdom (q ^ <*f*>) = dom f by A5, Th58; hence dom (compose ((q ^ <*f*>),X)) = (firstdom (q ^ <*f*>)) /\ X by A6, FUNCT_1:19; ::_thesis: verum end; supposeA7: q <> {} ; ::_thesis: dom (compose ((q ^ <*f*>),X)) = (firstdom (q ^ <*f*>)) /\ X then consider y being set , s being FinSequence such that A8: q = <*y*> ^ s and A9: len q = (len s) + 1 by REWRITE1:5; q . 1 = y by A8, FINSEQ_1:41; then A10: firstdom q = proj1 y by A8, Def6; A11: len q >= 1 by A9, NAT_1:11; then len q in dom q by FINSEQ_3:25; then A12: (q ^ <*f*>) . (len q) = q . (len q) by FINSEQ_1:def_7; A13: rng (compose (q,X)) c= lastrng q by A7, Th59; consider p being FinSequence such that len p = (len (q ^ <*f*>)) + 1 and A14: for i being Element of NAT st i in dom (q ^ <*f*>) holds (q ^ <*f*>) . i in Funcs ((p . i),(p . (i + 1))) by A3, Def8; consider r being FinSequence, x being set such that A15: q = r ^ <*x*> by A7, FINSEQ_1:46; len <*f*> = 1 by FINSEQ_1:40; then A16: len (q ^ <*f*>) = (len q) + 1 by FINSEQ_1:22; then len q <= len (q ^ <*f*>) by NAT_1:11; then len q in dom (q ^ <*f*>) by A11, FINSEQ_3:25; then A17: (q ^ <*f*>) . (len q) in Funcs ((p . (len q)),(p . ((len q) + 1))) by A14; len <*x*> = 1 by FINSEQ_1:40; then len q = (len r) + 1 by A15, FINSEQ_1:22; then q . (len q) = x by A15, FINSEQ_1:42; then consider g being Function such that A18: x = g and dom g = p . (len q) and A19: rng g c= p . ((len q) + 1) by A17, A12, FUNCT_2:def_2; A20: (<*y*> ^ (s ^ <*f*>)) . 1 = y by FINSEQ_1:41; (len q) + 1 >= 1 by NAT_1:11; then (len q) + 1 in dom (q ^ <*f*>) by A16, FINSEQ_3:25; then A21: (q ^ <*f*>) . ((len q) + 1) in Funcs ((p . ((len q) + 1)),(p . (((len q) + 1) + 1))) by A14; (q ^ <*f*>) . ((len q) + 1) = f by FINSEQ_1:42; then A22: ex g being Function st ( f = g & dom g = p . ((len q) + 1) & rng g c= p . (((len q) + 1) + 1) ) by A21, FUNCT_2:def_2; q ^ <*f*> = <*y*> ^ (s ^ <*f*>) by A8, FINSEQ_1:32; then A23: firstdom (q ^ <*f*>) = proj1 y by A20, Def6; lastrng q = rng g by A15, A18, Th58; hence dom (compose ((q ^ <*f*>),X)) = (firstdom (q ^ <*f*>)) /\ X by A2, A3, A4, A7, A23, A10, A19, A22, A13, Th60, RELAT_1:27, XBOOLE_1:1; ::_thesis: verum end; end; end; A24: S1[ {} ] ; for p being Function-yielding FinSequence holds S1[p] from FUNCT_7:sch_5(A24, A1); hence for p being FuncSequence st p <> {} holds dom (compose (p,X)) = (firstdom p) /\ X ; ::_thesis: verum end; theorem Th62: :: FUNCT_7:62 for p being FuncSequence holds dom (compose (p,(firstdom p))) = firstdom p proof let p be FuncSequence; ::_thesis: dom (compose (p,(firstdom p))) = firstdom p percases ( p = {} or p <> {} ) ; suppose p = {} ; ::_thesis: dom (compose (p,(firstdom p))) = firstdom p then compose (p,(firstdom p)) = id (firstdom p) by Th39; hence dom (compose (p,(firstdom p))) = firstdom p by RELAT_1:45; ::_thesis: verum end; suppose p <> {} ; ::_thesis: dom (compose (p,(firstdom p))) = firstdom p then dom (compose (p,(firstdom p))) = (firstdom p) /\ (firstdom p) by Th61; hence dom (compose (p,(firstdom p))) = firstdom p ; ::_thesis: verum end; end; end; theorem :: FUNCT_7:63 for p being FuncSequence for f being Function st rng f c= firstdom p holds <*f*> ^ p is FuncSequence proof let p be FuncSequence; ::_thesis: for f being Function st rng f c= firstdom p holds <*f*> ^ p is FuncSequence let f be Function; ::_thesis: ( rng f c= firstdom p implies <*f*> ^ p is FuncSequence ) assume A1: rng f c= firstdom p ; ::_thesis: <*f*> ^ p is FuncSequence consider q being FinSequence such that A2: len q = (len p) + 1 and A3: for i being Element of NAT st i in dom p holds p . i in Funcs ((q . i),(q . (i + 1))) by Def8; set r = <*(dom f)*> ^ q; A4: len <*(dom f)*> = 1 by FINSEQ_1:40; A5: len <*f*> = 1 by FINSEQ_1:40; then A6: len (<*f*> ^ p) = (len p) + 1 by FINSEQ_1:22; A7: now__::_thesis:_(_p_<>_{}_implies_rng_f_c=_q_._1_) assume A8: p <> {} ; ::_thesis: rng f c= q . 1 then len p >= 0 + 1 by NAT_1:13; then 1 in dom p by FINSEQ_3:25; then p . 1 in Funcs ((q . 1),(q . (1 + 1))) by A3; then ex g being Function st ( p . 1 = g & dom g = q . 1 & rng g c= q . 2 ) by FUNCT_2:def_2; hence rng f c= q . 1 by A1, A8, Def6; ::_thesis: verum end; <*f*> ^ p is FuncSeq-like proof take <*(dom f)*> ^ q ; :: according to FUNCT_7:def_8 ::_thesis: ( len (<*(dom f)*> ^ q) = (len (<*f*> ^ p)) + 1 & ( for i being Element of NAT st i in dom (<*f*> ^ p) holds (<*f*> ^ p) . i in Funcs (((<*(dom f)*> ^ q) . i),((<*(dom f)*> ^ q) . (i + 1))) ) ) 1 <= len q by A2, NAT_1:11; then A9: 1 in dom q by FINSEQ_3:25; thus len (<*(dom f)*> ^ q) = (len (<*f*> ^ p)) + 1 by A2, A4, A6, FINSEQ_1:22; ::_thesis: for i being Element of NAT st i in dom (<*f*> ^ p) holds (<*f*> ^ p) . i in Funcs (((<*(dom f)*> ^ q) . i),((<*(dom f)*> ^ q) . (i + 1))) let i be Element of NAT ; ::_thesis: ( i in dom (<*f*> ^ p) implies (<*f*> ^ p) . i in Funcs (((<*(dom f)*> ^ q) . i),((<*(dom f)*> ^ q) . (i + 1))) ) assume A10: i in dom (<*f*> ^ p) ; ::_thesis: (<*f*> ^ p) . i in Funcs (((<*(dom f)*> ^ q) . i),((<*(dom f)*> ^ q) . (i + 1))) then A11: i >= 1 by FINSEQ_3:25; {} c= q . 1 by XBOOLE_1:2; then A12: rng f c= q . 1 by A1, A7, Th57; A13: i <= (len p) + 1 by A6, A10, FINSEQ_3:25; percases ( i = 1 or i <> 1 ) ; supposeA14: i = 1 ; ::_thesis: (<*f*> ^ p) . i in Funcs (((<*(dom f)*> ^ q) . i),((<*(dom f)*> ^ q) . (i + 1))) then A15: ( (<*(dom f)*> ^ q) . i = dom f & (<*f*> ^ p) . i = f ) by FINSEQ_1:41; (<*(dom f)*> ^ q) . (i + 1) = q . 1 by A4, A9, A14, FINSEQ_1:def_7; hence (<*f*> ^ p) . i in Funcs (((<*(dom f)*> ^ q) . i),((<*(dom f)*> ^ q) . (i + 1))) by A12, A15, FUNCT_2:def_2; ::_thesis: verum end; suppose i <> 1 ; ::_thesis: (<*f*> ^ p) . i in Funcs (((<*(dom f)*> ^ q) . i),((<*(dom f)*> ^ q) . (i + 1))) then i > 1 by A11, XXREAL_0:1; then i >= 1 + 1 by NAT_1:13; then consider j being Nat such that A16: i = (1 + 1) + j by NAT_1:10; A17: i = (j + 1) + 1 by A16; then ( j + 1 >= 1 & j + 1 <= len p ) by A13, NAT_1:11, XREAL_1:6; then A18: j + 1 in dom p by FINSEQ_3:25; then A19: p . (j + 1) = (<*f*> ^ p) . i by A5, A17, FINSEQ_1:def_7; A20: (j + 1) + 1 in dom q by A2, A18, Th22; A21: p . (j + 1) in Funcs ((q . (j + 1)),(q . ((j + 1) + 1))) by A3, A18; j + 1 in dom q by A2, A18, Th22; then (<*(dom f)*> ^ q) . i = q . (j + 1) by A4, A16, A21, FINSEQ_1:def_7; hence (<*f*> ^ p) . i in Funcs (((<*(dom f)*> ^ q) . i),((<*(dom f)*> ^ q) . (i + 1))) by A4, A16, A21, A20, A19, FINSEQ_1:def_7; ::_thesis: verum end; end; end; hence <*f*> ^ p is FuncSequence ; ::_thesis: verum end; theorem :: FUNCT_7:64 for p being FuncSequence for f being Function st lastrng p c= dom f holds p ^ <*f*> is FuncSequence proof let p be FuncSequence; ::_thesis: for f being Function st lastrng p c= dom f holds p ^ <*f*> is FuncSequence let f be Function; ::_thesis: ( lastrng p c= dom f implies p ^ <*f*> is FuncSequence ) assume A1: lastrng p c= dom f ; ::_thesis: p ^ <*f*> is FuncSequence consider q being FinSequence such that A2: len q = (len p) + 1 and A3: for i being Element of NAT st i in dom p holds p . i in Funcs ((q . i),(q . (i + 1))) by Def8; consider q9 being FinSequence, x being set such that A4: q = q9 ^ <*x*> by A2, CARD_1:27, FINSEQ_1:46; A5: now__::_thesis:_(_len_p_in_dom_p_implies_p_._(len_p)_in_Funcs_((q_._(len_p)),(dom_f))_) assume A6: len p in dom p ; ::_thesis: p . (len p) in Funcs ((q . (len p)),(dom f)) then p . (len p) in Funcs ((q . (len p)),(q . ((len p) + 1))) by A3; then consider g being Function such that A7: p . (len p) = g and A8: dom g = q . (len p) and rng g c= q . ((len p) + 1) by FUNCT_2:def_2; lastrng p = rng g by A6, A7, Def7, RELAT_1:38; hence p . (len p) in Funcs ((q . (len p)),(dom f)) by A1, A7, A8, FUNCT_2:def_2; ::_thesis: verum end; A9: <*(dom f),(rng f)*> . 1 = dom f by FINSEQ_1:44; A10: <*(dom f),(rng f)*> . 2 = rng f by FINSEQ_1:44; len <*f*> = 1 by FINSEQ_1:40; then A11: len (p ^ <*f*>) = (len p) + 1 by FINSEQ_1:22; set r = q9 ^ <*(dom f),(rng f)*>; len <*(dom f),(rng f)*> = 2 by FINSEQ_1:44; then A12: len (q9 ^ <*(dom f),(rng f)*>) = (len q9) + (1 + 1) by FINSEQ_1:22; A13: dom <*(dom f),(rng f)*> = Seg 2 by FINSEQ_1:89; then A14: 1 in dom <*(dom f),(rng f)*> by FINSEQ_1:2, TARSKI:def_2; len <*x*> = 1 by FINSEQ_1:40; then A15: len q = (len q9) + 1 by A4, FINSEQ_1:22; A16: 2 in dom <*(dom f),(rng f)*> by A13, FINSEQ_1:2, TARSKI:def_2; p ^ <*f*> is FuncSeq-like proof take q9 ^ <*(dom f),(rng f)*> ; :: according to FUNCT_7:def_8 ::_thesis: ( len (q9 ^ <*(dom f),(rng f)*>) = (len (p ^ <*f*>)) + 1 & ( for i being Element of NAT st i in dom (p ^ <*f*>) holds (p ^ <*f*>) . i in Funcs (((q9 ^ <*(dom f),(rng f)*>) . i),((q9 ^ <*(dom f),(rng f)*>) . (i + 1))) ) ) thus len (q9 ^ <*(dom f),(rng f)*>) = (len (p ^ <*f*>)) + 1 by A2, A15, A11, A12; ::_thesis: for i being Element of NAT st i in dom (p ^ <*f*>) holds (p ^ <*f*>) . i in Funcs (((q9 ^ <*(dom f),(rng f)*>) . i),((q9 ^ <*(dom f),(rng f)*>) . (i + 1))) let i be Element of NAT ; ::_thesis: ( i in dom (p ^ <*f*>) implies (p ^ <*f*>) . i in Funcs (((q9 ^ <*(dom f),(rng f)*>) . i),((q9 ^ <*(dom f),(rng f)*>) . (i + 1))) ) assume A17: i in dom (p ^ <*f*>) ; ::_thesis: (p ^ <*f*>) . i in Funcs (((q9 ^ <*(dom f),(rng f)*>) . i),((q9 ^ <*(dom f),(rng f)*>) . (i + 1))) then A18: i >= 1 by FINSEQ_3:25; i <= (len p) + 1 by A11, A17, FINSEQ_3:25; then A19: ( i = (len p) + 1 or len p >= i ) by NAT_1:8; percases ( i = (len p) + 1 or i = len p or i < len p ) by A19, XXREAL_0:1; supposeA20: i = (len p) + 1 ; ::_thesis: (p ^ <*f*>) . i in Funcs (((q9 ^ <*(dom f),(rng f)*>) . i),((q9 ^ <*(dom f),(rng f)*>) . (i + 1))) then A21: ( (q9 ^ <*(dom f),(rng f)*>) . i = dom f & (p ^ <*f*>) . i = f ) by A2, A15, A14, A9, FINSEQ_1:42, FINSEQ_1:def_7; (q9 ^ <*(dom f),(rng f)*>) . (i + 1) = rng f by A2, A15, A12, A16, A10, A20, FINSEQ_1:def_7; hence (p ^ <*f*>) . i in Funcs (((q9 ^ <*(dom f),(rng f)*>) . i),((q9 ^ <*(dom f),(rng f)*>) . (i + 1))) by A21, FUNCT_2:def_2; ::_thesis: verum end; supposeA22: i = len p ; ::_thesis: (p ^ <*f*>) . i in Funcs (((q9 ^ <*(dom f),(rng f)*>) . i),((q9 ^ <*(dom f),(rng f)*>) . (i + 1))) then i in dom q9 by A2, A15, A18, FINSEQ_3:25; then A23: ( (q9 ^ <*(dom f),(rng f)*>) . i = q9 . i & q9 . i = q . i ) by A4, FINSEQ_1:def_7; ( len p in dom p & (q9 ^ <*(dom f),(rng f)*>) . (i + 1) = dom f ) by A2, A15, A14, A9, A18, A22, FINSEQ_1:def_7, FINSEQ_3:25; hence (p ^ <*f*>) . i in Funcs (((q9 ^ <*(dom f),(rng f)*>) . i),((q9 ^ <*(dom f),(rng f)*>) . (i + 1))) by A5, A22, A23, FINSEQ_1:def_7; ::_thesis: verum end; supposeA24: i < len p ; ::_thesis: (p ^ <*f*>) . i in Funcs (((q9 ^ <*(dom f),(rng f)*>) . i),((q9 ^ <*(dom f),(rng f)*>) . (i + 1))) then i in dom q9 by A2, A15, A18, FINSEQ_3:25; then A25: ( q . i = q9 . i & q9 . i = (q9 ^ <*(dom f),(rng f)*>) . i ) by A4, FINSEQ_1:def_7; A26: i + 1 >= 1 by NAT_1:11; i in dom p by A18, A24, FINSEQ_3:25; then A27: ( p . i in Funcs ((q . i),(q . (i + 1))) & p . i = (p ^ <*f*>) . i ) by A3, FINSEQ_1:def_7; i + 1 <= len p by A24, NAT_1:13; then A28: i + 1 in dom q9 by A2, A15, A26, FINSEQ_3:25; then q . (i + 1) = q9 . (i + 1) by A4, FINSEQ_1:def_7; hence (p ^ <*f*>) . i in Funcs (((q9 ^ <*(dom f),(rng f)*>) . i),((q9 ^ <*(dom f),(rng f)*>) . (i + 1))) by A28, A25, A27, FINSEQ_1:def_7; ::_thesis: verum end; end; end; hence p ^ <*f*> is FuncSequence ; ::_thesis: verum end; theorem :: FUNCT_7:65 for x, X being set for p being FuncSequence st x in firstdom p & x in X holds (apply (p,x)) . ((len p) + 1) = (compose (p,X)) . x proof let x, X be set ; ::_thesis: for p being FuncSequence st x in firstdom p & x in X holds (apply (p,x)) . ((len p) + 1) = (compose (p,X)) . x defpred S1[ Function-yielding FinSequence] means ( $1 is FuncSequence & x in firstdom $1 & x in X implies (apply ($1,x)) . ((len $1) + 1) = (compose ($1,X)) . x ); A1: for p being Function-yielding FinSequence st S1[p] holds for f being Function holds S1[p ^ <*f*>] proof A2: dom (id X) = X ; let p be Function-yielding FinSequence; ::_thesis: ( S1[p] implies for f being Function holds S1[p ^ <*f*>] ) assume A3: ( p is FuncSequence & x in firstdom p & x in X implies (apply (p,x)) . ((len p) + 1) = (compose (p,X)) . x ) ; ::_thesis: for f being Function holds S1[p ^ <*f*>] let f be Function; ::_thesis: S1[p ^ <*f*>] assume that A4: p ^ <*f*> is FuncSequence and A5: x in firstdom (p ^ <*f*>) and A6: x in X ; ::_thesis: (apply ((p ^ <*f*>),x)) . ((len (p ^ <*f*>)) + 1) = (compose ((p ^ <*f*>),X)) . x A7: p is FuncSequence by A4, Th60; (id X) . x = x by A6, FUNCT_1:17; then A8: (f * (id X)) . x = f . x by A6, A2, FUNCT_1:13; A9: len <*f*> = 1 by FINSEQ_1:40; A10: compose ((p ^ <*f*>),X) = f * (compose (p,X)) by Th41; A11: ( apply (<*f*>,x) = <*x,(f . x)*> & compose (<*f*>,X) = f * (id X) ) by Th45, Th47; A12: apply ((p ^ <*f*>),x) = (apply (p,x)) ^ <*(f . ((apply (p,x)) . ((len p) + 1)))*> by Th42; percases ( p = {} or p <> {} ) ; suppose p = {} ; ::_thesis: (apply ((p ^ <*f*>),x)) . ((len (p ^ <*f*>)) + 1) = (compose ((p ^ <*f*>),X)) . x then p ^ <*f*> = <*f*> by FINSEQ_1:34; hence (apply ((p ^ <*f*>),x)) . ((len (p ^ <*f*>)) + 1) = (compose ((p ^ <*f*>),X)) . x by A9, A11, A8, FINSEQ_1:44; ::_thesis: verum end; supposeA13: p <> {} ; ::_thesis: (apply ((p ^ <*f*>),x)) . ((len (p ^ <*f*>)) + 1) = (compose ((p ^ <*f*>),X)) . x then A14: dom (compose (p,X)) = (firstdom p) /\ X by A7, Th61; A15: firstdom (p ^ <*f*>) = proj1 ((p ^ <*f*>) . 1) by Def6; A16: firstdom p = proj1 (p . 1) by A13, Def6; len p >= 0 + 1 by A13, NAT_1:13; then A17: 1 in dom p by FINSEQ_3:25; then p . 1 = (p ^ <*f*>) . 1 by FINSEQ_1:def_7; then A18: x in (firstdom p) /\ X by A5, A6, A16, A15, XBOOLE_0:def_4; ( len (apply (p,x)) = (len p) + 1 & len (p ^ <*f*>) = (len p) + 1 ) by A9, Def5, FINSEQ_1:22; hence (apply ((p ^ <*f*>),x)) . ((len (p ^ <*f*>)) + 1) = f . ((compose (p,X)) . x) by A3, A4, A5, A6, A12, A16, A15, A17, Th60, FINSEQ_1:42, FINSEQ_1:def_7 .= (compose ((p ^ <*f*>),X)) . x by A10, A14, A18, FUNCT_1:13 ; ::_thesis: verum end; end; end; A19: S1[ {} ] by Def6; for p being Function-yielding FinSequence holds S1[p] from FUNCT_7:sch_5(A19, A1); hence for p being FuncSequence st x in firstdom p & x in X holds (apply (p,x)) . ((len p) + 1) = (compose (p,X)) . x ; ::_thesis: verum end; definition let X, Y be set ; assume X1: ( Y is empty implies X is empty ) ; mode FuncSequence of X,Y -> FuncSequence means :Def9: :: FUNCT_7:def 9 ( firstdom it = X & lastrng it c= Y ); existence ex b1 being FuncSequence st ( firstdom b1 = X & lastrng b1 c= Y ) proof set f = the Function of X,Y; take p = <* the Function of X,Y*>; ::_thesis: ( firstdom p = X & lastrng p c= Y ) A1: ( p ^ {} = p & {} ^ p = p ) by FINSEQ_1:34; ( dom the Function of X,Y = X & rng the Function of X,Y c= Y ) by X1, FUNCT_2:def_1; hence ( firstdom p = X & lastrng p c= Y ) by A1, Th58; ::_thesis: verum end; end; :: deftheorem Def9 defines FuncSequence FUNCT_7:def_9_:_ for X, Y being set st ( Y is empty implies X is empty ) holds for b3 being FuncSequence holds ( b3 is FuncSequence of X,Y iff ( firstdom b3 = X & lastrng b3 c= Y ) ); definition let Y be non empty set ; let X be set ; let F be FuncSequence of X,Y; :: original: compose redefine func compose (F,X) -> Function of X,Y; coherence compose (F,X) is Function of X,Y proof A1: firstdom F = X by Def9; now__::_thesis:_(_F_=_{}_implies_rng_(compose_(F,X))_=_{}_) assume F = {} ; ::_thesis: rng (compose (F,X)) = {} then ( X = {} & compose (F,X) = id X ) by A1, Def6, Th39; hence rng (compose (F,X)) = {} ; ::_thesis: verum end; then A2: rng (compose (F,X)) c= lastrng F by Th59, XBOOLE_1:2; lastrng F c= Y by Def9; then A3: rng (compose (F,X)) c= Y by A2, XBOOLE_1:1; dom (compose (F,X)) = X by A1, Th62; hence compose (F,X) is Function of X,Y by A3, FUNCT_2:def_1, RELSET_1:4; ::_thesis: verum end; end; definition let q be non empty non-empty FinSequence; mode FuncSequence of q -> FinSequence means :Def10: :: FUNCT_7:def 10 ( (len it) + 1 = len q & ( for i being Element of NAT st i in dom it holds it . i in Funcs ((q . i),(q . (i + 1))) ) ); existence ex b1 being FinSequence st ( (len b1) + 1 = len q & ( for i being Element of NAT st i in dom b1 holds b1 . i in Funcs ((q . i),(q . (i + 1))) ) ) proof defpred S1[ set , set ] means ex i being Element of NAT st ( i = $1 & $2 in Funcs ((q . i),(q . (i + 1))) ); consider n being Nat such that A1: len q = n + 1 by NAT_1:6; reconsider n = n as Element of NAT by ORDINAL1:def_12; A2: for x being set st x in Seg n holds ex y being set st S1[x,y] proof let x be set ; ::_thesis: ( x in Seg n implies ex y being set st S1[x,y] ) assume A3: x in Seg n ; ::_thesis: ex y being set st S1[x,y] then reconsider i = x as Element of NAT ; A4: i <= n by A3, FINSEQ_1:1; then ( i + 1 >= 1 & i + 1 <= n + 1 ) by NAT_1:11, XREAL_1:6; then A5: i + 1 in dom q by A1, FINSEQ_3:25; n <= n + 1 by NAT_1:11; then A6: i <= n + 1 by A4, XXREAL_0:2; i >= 1 by A3, FINSEQ_1:1; then i in dom q by A1, A6, FINSEQ_3:25; then reconsider X = q . i, Y = q . (i + 1) as non empty set by A5; set y = the Function of X,Y; take the Function of X,Y ; ::_thesis: S1[x, the Function of X,Y] take i ; ::_thesis: ( i = x & the Function of X,Y in Funcs ((q . i),(q . (i + 1))) ) thus ( i = x & the Function of X,Y in Funcs ((q . i),(q . (i + 1))) ) by FUNCT_2:8; ::_thesis: verum end; consider f being Function such that A7: dom f = Seg n and A8: for x being set st x in Seg n holds S1[x,f . x] from CLASSES1:sch_1(A2); reconsider f = f as FinSequence by A7, FINSEQ_1:def_2; take f ; ::_thesis: ( (len f) + 1 = len q & ( for i being Element of NAT st i in dom f holds f . i in Funcs ((q . i),(q . (i + 1))) ) ) thus (len f) + 1 = len q by A1, A7, FINSEQ_1:def_3; ::_thesis: for i being Element of NAT st i in dom f holds f . i in Funcs ((q . i),(q . (i + 1))) let i be Element of NAT ; ::_thesis: ( i in dom f implies f . i in Funcs ((q . i),(q . (i + 1))) ) assume i in dom f ; ::_thesis: f . i in Funcs ((q . i),(q . (i + 1))) then ex j being Element of NAT st ( j = i & f . i in Funcs ((q . j),(q . (j + 1))) ) by A7, A8; hence f . i in Funcs ((q . i),(q . (i + 1))) ; ::_thesis: verum end; end; :: deftheorem Def10 defines FuncSequence FUNCT_7:def_10_:_ for q being non empty non-empty FinSequence for b2 being FinSequence holds ( b2 is FuncSequence of q iff ( (len b2) + 1 = len q & ( for i being Element of NAT st i in dom b2 holds b2 . i in Funcs ((q . i),(q . (i + 1))) ) ) ); registration let q be non empty non-empty FinSequence; cluster -> non-empty FuncSeq-like for FuncSequence of q; coherence for b1 being FuncSequence of q holds ( b1 is FuncSeq-like & b1 is non-empty ) proof let p be FuncSequence of q; ::_thesis: ( p is FuncSeq-like & p is non-empty ) thus p is FuncSeq-like ::_thesis: p is non-empty proof take q ; :: according to FUNCT_7:def_8 ::_thesis: ( len q = (len p) + 1 & ( for i being Element of NAT st i in dom p holds p . i in Funcs ((q . i),(q . (i + 1))) ) ) thus ( len q = (len p) + 1 & ( for i being Element of NAT st i in dom p holds p . i in Funcs ((q . i),(q . (i + 1))) ) ) by Def10; ::_thesis: verum end; let x be set ; :: according to FUNCT_1:def_9 ::_thesis: ( not x in proj1 p or not p . x is empty ) assume A1: x in dom p ; ::_thesis: not p . x is empty then reconsider i = x as Element of NAT ; len q = (len p) + 1 by Def10; then ( i in dom q & i + 1 in dom q ) by A1, Th22; then reconsider X = q . i, Y = q . (i + 1) as non empty set ; p . i in Funcs (X,Y) by A1, Def10; then ex f being Function st ( p . x = f & dom f = X & rng f c= Y ) by FUNCT_2:def_2; hence not p . x is empty ; ::_thesis: verum end; end; theorem Th66: :: FUNCT_7:66 for q being non empty non-empty FinSequence for p being FuncSequence of q st p <> {} holds ( firstdom p = q . 1 & lastrng p c= q . (len q) ) proof let q be non empty non-empty FinSequence; ::_thesis: for p being FuncSequence of q st p <> {} holds ( firstdom p = q . 1 & lastrng p c= q . (len q) ) let p be FuncSequence of q; ::_thesis: ( p <> {} implies ( firstdom p = q . 1 & lastrng p c= q . (len q) ) ) assume A1: p <> {} ; ::_thesis: ( firstdom p = q . 1 & lastrng p c= q . (len q) ) then 1 in dom p by FINSEQ_5:6; then p . 1 in Funcs ((q . 1),(q . (1 + 1))) by Def10; then ex f being Function st ( p . 1 = f & dom f = q . 1 & rng f c= q . 2 ) by FUNCT_2:def_2; hence firstdom p = q . 1 by A1, Def6; ::_thesis: lastrng p c= q . (len q) len p in dom p by A1, FINSEQ_5:6; then p . (len p) in Funcs ((q . (len p)),(q . ((len p) + 1))) by Def10; then A2: ex g being Function st ( p . (len p) = g & dom g = q . (len p) & rng g c= q . ((len p) + 1) ) by FUNCT_2:def_2; (len p) + 1 = len q by Def10; hence lastrng p c= q . (len q) by A1, A2, Def7; ::_thesis: verum end; theorem :: FUNCT_7:67 for q being non empty non-empty FinSequence for p being FuncSequence of q holds ( dom (compose (p,(q . 1))) = q . 1 & rng (compose (p,(q . 1))) c= q . (len q) ) proof let q be non empty non-empty FinSequence; ::_thesis: for p being FuncSequence of q holds ( dom (compose (p,(q . 1))) = q . 1 & rng (compose (p,(q . 1))) c= q . (len q) ) let p be FuncSequence of q; ::_thesis: ( dom (compose (p,(q . 1))) = q . 1 & rng (compose (p,(q . 1))) c= q . (len q) ) percases ( p = {} or p <> {} ) ; supposeA1: p = {} ; ::_thesis: ( dom (compose (p,(q . 1))) = q . 1 & rng (compose (p,(q . 1))) c= q . (len q) ) A2: len q = (len p) + 1 by Def10; ( compose (p,(q . 1)) = id (q . 1) & len p = 0 ) by A1, Th39; hence ( dom (compose (p,(q . 1))) = q . 1 & rng (compose (p,(q . 1))) c= q . (len q) ) by A2, RELAT_1:45; ::_thesis: verum end; supposeA3: p <> {} ; ::_thesis: ( dom (compose (p,(q . 1))) = q . 1 & rng (compose (p,(q . 1))) c= q . (len q) ) then A4: lastrng p c= q . (len q) by Th66; ( firstdom p = q . 1 & rng (compose (p,(q . 1))) c= lastrng p ) by A3, Th59, Th66; hence ( dom (compose (p,(q . 1))) = q . 1 & rng (compose (p,(q . 1))) c= q . (len q) ) by A4, Th62, XBOOLE_1:1; ::_thesis: verum end; end; end; registration let X be set ; let f be Function of NAT,(bool [:X,X:]); let n be Nat; clusterf . n -> Relation-like ; coherence f . n is Relation-like proof reconsider n = n as Element of NAT by ORDINAL1:def_12; f . n is Element of bool [:X,X:] ; hence f . n is Relation-like ; ::_thesis: verum end; end; Lm1: for X being set for f being Function of X,X holds rng f c= dom f proof let X be set ; ::_thesis: for f being Function of X,X holds rng f c= dom f let f be Function of X,X; ::_thesis: rng f c= dom f dom f = X by FUNCT_2:52; hence rng f c= dom f ; ::_thesis: verum end; Lm2: for f being Relation for n being Element of NAT for p1, p2 being Function of NAT,(bool [:(field f),(field f):]) st p1 . 0 = id (field f) & ( for k being Nat holds p1 . (k + 1) = f * (p1 . k) ) & p2 . 0 = id (field f) & ( for k being Nat holds p2 . (k + 1) = f * (p2 . k) ) holds p1 = p2 proof let f be Relation; ::_thesis: for n being Element of NAT for p1, p2 being Function of NAT,(bool [:(field f),(field f):]) st p1 . 0 = id (field f) & ( for k being Nat holds p1 . (k + 1) = f * (p1 . k) ) & p2 . 0 = id (field f) & ( for k being Nat holds p2 . (k + 1) = f * (p2 . k) ) holds p1 = p2 let n be Element of NAT ; ::_thesis: for p1, p2 being Function of NAT,(bool [:(field f),(field f):]) st p1 . 0 = id (field f) & ( for k being Nat holds p1 . (k + 1) = f * (p1 . k) ) & p2 . 0 = id (field f) & ( for k being Nat holds p2 . (k + 1) = f * (p2 . k) ) holds p1 = p2 let p1, p2 be Function of NAT,(bool [:(field f),(field f):]); ::_thesis: ( p1 . 0 = id (field f) & ( for k being Nat holds p1 . (k + 1) = f * (p1 . k) ) & p2 . 0 = id (field f) & ( for k being Nat holds p2 . (k + 1) = f * (p2 . k) ) implies p1 = p2 ) assume that A1: p1 . 0 = id (field f) and A2: for k being Nat holds p1 . (k + 1) = f * (p1 . k) and A3: p2 . 0 = id (field f) and A4: for k being Nat holds p2 . (k + 1) = f * (p2 . k) ; ::_thesis: p1 = p2 defpred S1[ Nat, Relation, set ] means $3 = f * $2; A5: for k being Nat holds S1[k,p1 . k,p1 . (k + 1)] by A2; set FX = bool [:(field f),(field f):]; reconsider ID = id (field f) as Element of bool [:(field f),(field f):] ; A6: p2 . 0 = ID by A3; A7: for k being Nat for x, y1, y2 being Element of bool [:(field f),(field f):] st S1[k,x,y1] & S1[k,x,y2] holds y1 = y2 ; A8: for k being Nat holds S1[k,p2 . k,p2 . (k + 1)] by A4; A9: p1 . 0 = ID by A1; p1 = p2 from NAT_1:sch_14(A9, A5, A6, A8, A7); hence p1 = p2 ; ::_thesis: verum end; definition let f be Relation; let n be Nat; func iter (f,n) -> Relation means :Def11: :: FUNCT_7:def 11 ex p being Function of NAT,(bool [:(field f),(field f):]) st ( it = p . n & p . 0 = id (field f) & ( for k being Nat holds p . (k + 1) = f * (p . k) ) ); existence ex b1 being Relation ex p being Function of NAT,(bool [:(field f),(field f):]) st ( b1 = p . n & p . 0 = id (field f) & ( for k being Nat holds p . (k + 1) = f * (p . k) ) ) proof reconsider n9 = n as Element of NAT by ORDINAL1:def_12; defpred S1[ Nat, Relation, set ] means $3 = f * $2; set FX = bool [:(field f),(field f):]; reconsider ID = id (field f) as Element of bool [:(field f),(field f):] ; A1: for n being Element of NAT for x being Element of bool [:(field f),(field f):] ex y being Element of bool [:(field f),(field f):] st S1[n,x,y] proof ( dom f c= field f & rng f c= field f ) by XBOOLE_1:7; then reconsider h = f as Relation of (field f),(field f) by RELSET_1:4; let n be Element of NAT ; ::_thesis: for x being Element of bool [:(field f),(field f):] ex y being Element of bool [:(field f),(field f):] st S1[n,x,y] let x be Element of bool [:(field f),(field f):]; ::_thesis: ex y being Element of bool [:(field f),(field f):] st S1[n,x,y] reconsider g = x as Relation of (field f),(field f) ; h * g is Element of bool [:(field f),(field f):] ; hence ex y being Element of bool [:(field f),(field f):] st S1[n,x,y] ; ::_thesis: verum end; consider p being Function of NAT,(bool [:(field f),(field f):]) such that A2: ( p . 0 = ID & ( for n being Element of NAT holds S1[n,p . n,p . (n + 1)] ) ) from RECDEF_1:sch_2(A1); A3: for n being Nat holds S1[n,p . n,p . (n + 1)] proof let n be Nat; ::_thesis: S1[n,p . n,p . (n + 1)] n in NAT by ORDINAL1:def_12; hence S1[n,p . n,p . (n + 1)] by A2; ::_thesis: verum end; p . n9 is Relation of (field f),(field f) ; hence ex b1 being Relation ex p being Function of NAT,(bool [:(field f),(field f):]) st ( b1 = p . n & p . 0 = id (field f) & ( for k being Nat holds p . (k + 1) = f * (p . k) ) ) by A2, A3; ::_thesis: verum end; uniqueness for b1, b2 being Relation st ex p being Function of NAT,(bool [:(field f),(field f):]) st ( b1 = p . n & p . 0 = id (field f) & ( for k being Nat holds p . (k + 1) = f * (p . k) ) ) & ex p being Function of NAT,(bool [:(field f),(field f):]) st ( b2 = p . n & p . 0 = id (field f) & ( for k being Nat holds p . (k + 1) = f * (p . k) ) ) holds b1 = b2 by Lm2; end; :: deftheorem Def11 defines iter FUNCT_7:def_11_:_ for f being Relation for n being Nat for b3 being Relation holds ( b3 = iter (f,n) iff ex p being Function of NAT,(bool [:(field f),(field f):]) st ( b3 = p . n & p . 0 = id (field f) & ( for k being Nat holds p . (k + 1) = f * (p . k) ) ) ); registration let f be Function; let n be Nat; cluster iter (f,n) -> Function-like ; coherence iter (f,n) is Function-like proof consider p being Function of NAT,(bool [:(field f),(field f):]) such that A1: ( p . n = iter (f,n) & p . 0 = id (field f) ) and A2: for k being Nat holds p . (k + 1) = f * (p . k) by Def11; defpred S1[ Nat] means p . f is Function; A3: S1[ 0 ] by A1; A4: for m being Nat st S1[m] holds S1[m + 1] proof let m be Nat; ::_thesis: ( S1[m] implies S1[m + 1] ) assume S1[m] ; ::_thesis: S1[m + 1] then reconsider g = p . m as Function ; p . (m + 1) = g * f by A2; hence S1[m + 1] ; ::_thesis: verum end; for m being Nat holds S1[m] from NAT_1:sch_2(A3, A4); hence iter (f,n) is Function-like by A1; ::_thesis: verum end; end; Lm3: for R being Relation holds ( (id (field R)) * R = R & R * (id (field R)) = R ) proof let R be Relation; ::_thesis: ( (id (field R)) * R = R & R * (id (field R)) = R ) ( dom R c= field R & rng R c= field R ) by XBOOLE_1:7; hence ( (id (field R)) * R = R & R * (id (field R)) = R ) by RELAT_1:51, RELAT_1:53; ::_thesis: verum end; theorem Th68: :: FUNCT_7:68 for R being Relation holds iter (R,0) = id (field R) proof let R be Relation; ::_thesis: iter (R,0) = id (field R) ex p being Function of NAT,(bool [:(field R),(field R):]) st ( iter (R,0) = p . 0 & p . 0 = id (field R) & ( for k being Nat holds p . (k + 1) = R * (p . k) ) ) by Def11; hence iter (R,0) = id (field R) ; ::_thesis: verum end; Lm4: for R being Relation st rng R c= dom R holds iter (R,0) = id (dom R) proof let R be Relation; ::_thesis: ( rng R c= dom R implies iter (R,0) = id (dom R) ) assume rng R c= dom R ; ::_thesis: iter (R,0) = id (dom R) then field R = dom R by XBOOLE_1:12; hence iter (R,0) = id (dom R) by Th68; ::_thesis: verum end; theorem Th69: :: FUNCT_7:69 for R being Relation for n being Nat holds iter (R,(n + 1)) = R * (iter (R,n)) proof let R be Relation; ::_thesis: for n being Nat holds iter (R,(n + 1)) = R * (iter (R,n)) let n be Nat; ::_thesis: iter (R,(n + 1)) = R * (iter (R,n)) consider p being Function of NAT,(bool [:(field R),(field R):]) such that A1: ( p . (n + 1) = iter (R,(n + 1)) & p . 0 = id (field R) ) and A2: for k being Nat holds p . (k + 1) = R * (p . k) by Def11; p . (n + 1) = R * (p . n) by A2; hence iter (R,(n + 1)) = R * (iter (R,n)) by A1, A2, Def11; ::_thesis: verum end; theorem Th70: :: FUNCT_7:70 for R being Relation holds iter (R,1) = R proof let R be Relation; ::_thesis: iter (R,1) = R thus iter (R,1) = iter (R,(0 + 1)) .= R * (iter (R,0)) by Th69 .= R * (id (field R)) by Th68 .= R by Lm3 ; ::_thesis: verum end; theorem Th71: :: FUNCT_7:71 for R being Relation for n being Nat holds iter (R,(n + 1)) = (iter (R,n)) * R proof let R be Relation; ::_thesis: for n being Nat holds iter (R,(n + 1)) = (iter (R,n)) * R let n be Nat; ::_thesis: iter (R,(n + 1)) = (iter (R,n)) * R defpred S1[ Nat] means iter (R,($1 + 1)) = (iter (R,$1)) * R; A1: for k being Nat st S1[k] holds S1[k + 1] proof let k be Nat; ::_thesis: ( S1[k] implies S1[k + 1] ) assume A2: iter (R,(k + 1)) = (iter (R,k)) * R ; ::_thesis: S1[k + 1] thus (iter (R,(k + 1))) * R = (R * (iter (R,k))) * R by Th69 .= R * ((iter (R,k)) * R) by RELAT_1:36 .= iter (R,((k + 1) + 1)) by A2, Th69 ; ::_thesis: verum end; iter (R,(0 + 1)) = R by Th70 .= (id (field R)) * R by Lm3 .= (iter (R,0)) * R by Th68 ; then A3: S1[ 0 ] ; for k being Nat holds S1[k] from NAT_1:sch_2(A3, A1); hence iter (R,(n + 1)) = (iter (R,n)) * R ; ::_thesis: verum end; theorem Th72: :: FUNCT_7:72 for n being Element of NAT for R being Relation holds ( dom (iter (R,n)) c= field R & rng (iter (R,n)) c= field R ) proof let n be Element of NAT ; ::_thesis: for R being Relation holds ( dom (iter (R,n)) c= field R & rng (iter (R,n)) c= field R ) let R be Relation; ::_thesis: ( dom (iter (R,n)) c= field R & rng (iter (R,n)) c= field R ) defpred S1[ Element of NAT ] means ( dom (iter (R,$1)) c= field R & rng (iter (R,$1)) c= field R ); A1: for k being Element of NAT st S1[k] holds S1[k + 1] proof let k be Element of NAT ; ::_thesis: ( S1[k] implies S1[k + 1] ) iter (R,(k + 1)) = (iter (R,k)) * R by Th71; then A2: dom (iter (R,(k + 1))) c= dom (iter (R,k)) by RELAT_1:25; iter (R,(k + 1)) = R * (iter (R,k)) by Th69; then A3: rng (iter (R,(k + 1))) c= rng (iter (R,k)) by RELAT_1:26; assume ( dom (iter (R,k)) c= field R & rng (iter (R,k)) c= field R ) ; ::_thesis: S1[k + 1] hence S1[k + 1] by A2, A3, XBOOLE_1:1; ::_thesis: verum end; iter (R,0) = id (field R) by Th68; then A4: S1[ 0 ] by RELAT_1:45; for k being Element of NAT holds S1[k] from NAT_1:sch_1(A4, A1); hence ( dom (iter (R,n)) c= field R & rng (iter (R,n)) c= field R ) ; ::_thesis: verum end; theorem :: FUNCT_7:73 for n being Element of NAT for R being Relation st n <> 0 holds ( dom (iter (R,n)) c= dom R & rng (iter (R,n)) c= rng R ) proof let n be Element of NAT ; ::_thesis: for R being Relation st n <> 0 holds ( dom (iter (R,n)) c= dom R & rng (iter (R,n)) c= rng R ) let R be Relation; ::_thesis: ( n <> 0 implies ( dom (iter (R,n)) c= dom R & rng (iter (R,n)) c= rng R ) ) defpred S1[ Nat] means ( dom (iter (R,($1 + 1))) c= dom R & rng (iter (R,($1 + 1))) c= rng R ); assume n <> 0 ; ::_thesis: ( dom (iter (R,n)) c= dom R & rng (iter (R,n)) c= rng R ) then A1: ex k being Nat st n = k + 1 by NAT_1:6; A2: for k being Nat st S1[k] holds S1[k + 1] proof let k be Nat; ::_thesis: ( S1[k] implies S1[k + 1] ) assume that dom (iter (R,(k + 1))) c= dom R and rng (iter (R,(k + 1))) c= rng R ; ::_thesis: S1[k + 1] ( iter (R,((k + 1) + 1)) = R * (iter (R,(k + 1))) & iter (R,((k + 1) + 1)) = (iter (R,(k + 1))) * R ) by Th69, Th71; hence S1[k + 1] by RELAT_1:25, RELAT_1:26; ::_thesis: verum end; A3: S1[ 0 ] by Th70; for k being Nat holds S1[k] from NAT_1:sch_2(A3, A2); hence ( dom (iter (R,n)) c= dom R & rng (iter (R,n)) c= rng R ) by A1; ::_thesis: verum end; theorem Th74: :: FUNCT_7:74 for R being Relation for n being Nat st rng R c= dom R holds ( dom (iter (R,n)) = dom R & rng (iter (R,n)) c= dom R ) proof let R be Relation; ::_thesis: for n being Nat st rng R c= dom R holds ( dom (iter (R,n)) = dom R & rng (iter (R,n)) c= dom R ) let n be Nat; ::_thesis: ( rng R c= dom R implies ( dom (iter (R,n)) = dom R & rng (iter (R,n)) c= dom R ) ) defpred S1[ Nat] means ( dom (iter (R,$1)) = dom R & rng (iter (R,$1)) c= dom R ); A1: for k being Nat st S1[k] holds S1[k + 1] proof let k be Nat; ::_thesis: ( S1[k] implies S1[k + 1] ) assume A2: ( dom (iter (R,k)) = dom R & rng (iter (R,k)) c= dom R ) ; ::_thesis: S1[k + 1] iter (R,(k + 1)) = R * (iter (R,k)) by Th69; then A3: rng (iter (R,(k + 1))) c= rng (iter (R,k)) by RELAT_1:26; iter (R,(k + 1)) = (iter (R,k)) * R by Th71; hence S1[k + 1] by A2, A3, RELAT_1:27, XBOOLE_1:1; ::_thesis: verum end; assume rng R c= dom R ; ::_thesis: ( dom (iter (R,n)) = dom R & rng (iter (R,n)) c= dom R ) then iter (R,0) = id (dom R) by Lm4; then A4: S1[ 0 ] by RELAT_1:45; for k being Nat holds S1[k] from NAT_1:sch_2(A4, A1); hence ( dom (iter (R,n)) = dom R & rng (iter (R,n)) c= dom R ) ; ::_thesis: verum end; theorem Th75: :: FUNCT_7:75 for n being Element of NAT for R being Relation holds (id (field R)) * (iter (R,n)) = iter (R,n) proof let n be Element of NAT ; ::_thesis: for R being Relation holds (id (field R)) * (iter (R,n)) = iter (R,n) let R be Relation; ::_thesis: (id (field R)) * (iter (R,n)) = iter (R,n) dom (iter (R,n)) c= field R by Th72; hence (id (field R)) * (iter (R,n)) = iter (R,n) by RELAT_1:51; ::_thesis: verum end; theorem :: FUNCT_7:76 for n being Element of NAT for R being Relation holds (iter (R,n)) * (id (field R)) = iter (R,n) proof let n be Element of NAT ; ::_thesis: for R being Relation holds (iter (R,n)) * (id (field R)) = iter (R,n) let R be Relation; ::_thesis: (iter (R,n)) * (id (field R)) = iter (R,n) rng (iter (R,n)) c= field R by Th72; hence (iter (R,n)) * (id (field R)) = iter (R,n) by RELAT_1:53; ::_thesis: verum end; theorem Th77: :: FUNCT_7:77 for m, n being Element of NAT for R being Relation holds (iter (R,m)) * (iter (R,n)) = iter (R,(n + m)) proof let m, n be Element of NAT ; ::_thesis: for R being Relation holds (iter (R,m)) * (iter (R,n)) = iter (R,(n + m)) let R be Relation; ::_thesis: (iter (R,m)) * (iter (R,n)) = iter (R,(n + m)) defpred S1[ Element of NAT ] means (iter (R,$1)) * (iter (R,n)) = iter (R,(n + $1)); A1: for k being Element of NAT st S1[k] holds S1[k + 1] proof let k be Element of NAT ; ::_thesis: ( S1[k] implies S1[k + 1] ) assume A2: (iter (R,k)) * (iter (R,n)) = iter (R,(n + k)) ; ::_thesis: S1[k + 1] thus (iter (R,(k + 1))) * (iter (R,n)) = (R * (iter (R,k))) * (iter (R,n)) by Th69 .= R * ((iter (R,k)) * (iter (R,n))) by RELAT_1:36 .= iter (R,((n + k) + 1)) by A2, Th69 .= iter (R,(n + (k + 1))) ; ::_thesis: verum end; (iter (R,0)) * (iter (R,n)) = (id (field R)) * (iter (R,n)) by Th68 .= iter (R,(n + 0)) by Th75 ; then A3: S1[ 0 ] ; for k being Element of NAT holds S1[k] from NAT_1:sch_1(A3, A1); hence (iter (R,m)) * (iter (R,n)) = iter (R,(n + m)) ; ::_thesis: verum end; Lm5: for m, k being Element of NAT for R being Relation st iter ((iter (R,m)),k) = iter (R,(m * k)) holds iter ((iter (R,m)),(k + 1)) = iter (R,(m * (k + 1))) proof let m, k be Element of NAT ; ::_thesis: for R being Relation st iter ((iter (R,m)),k) = iter (R,(m * k)) holds iter ((iter (R,m)),(k + 1)) = iter (R,(m * (k + 1))) let R be Relation; ::_thesis: ( iter ((iter (R,m)),k) = iter (R,(m * k)) implies iter ((iter (R,m)),(k + 1)) = iter (R,(m * (k + 1))) ) assume A1: iter ((iter (R,m)),k) = iter (R,(m * k)) ; ::_thesis: iter ((iter (R,m)),(k + 1)) = iter (R,(m * (k + 1))) thus iter ((iter (R,m)),(k + 1)) = (iter (R,m)) * (iter ((iter (R,m)),k)) by Th69 .= iter (R,((m * k) + (m * 1))) by A1, Th77 .= iter (R,(m * (k + 1))) ; ::_thesis: verum end; theorem :: FUNCT_7:78 for n, m being Element of NAT for R being Relation st n <> 0 holds iter ((iter (R,m)),n) = iter (R,(m * n)) proof let n, m be Element of NAT ; ::_thesis: for R being Relation st n <> 0 holds iter ((iter (R,m)),n) = iter (R,(m * n)) let R be Relation; ::_thesis: ( n <> 0 implies iter ((iter (R,m)),n) = iter (R,(m * n)) ) defpred S1[ Element of NAT ] means iter ((iter (R,m)),($1 + 1)) = iter (R,(m * ($1 + 1))); A1: for k being Element of NAT st S1[k] holds S1[k + 1] by Lm5; A2: S1[ 0 ] by Th70; A3: for k being Element of NAT holds S1[k] from NAT_1:sch_1(A2, A1); assume n <> 0 ; ::_thesis: iter ((iter (R,m)),n) = iter (R,(m * n)) then consider k being Nat such that A4: n = k + 1 by NAT_1:6; reconsider k = k as Element of NAT by ORDINAL1:def_12; n = k + 1 by A4; hence iter ((iter (R,m)),n) = iter (R,(m * n)) by A3; ::_thesis: verum end; theorem Th79: :: FUNCT_7:79 for m, n being Element of NAT for R being Relation st rng R c= dom R holds iter ((iter (R,m)),n) = iter (R,(m * n)) proof let m, n be Element of NAT ; ::_thesis: for R being Relation st rng R c= dom R holds iter ((iter (R,m)),n) = iter (R,(m * n)) let R be Relation; ::_thesis: ( rng R c= dom R implies iter ((iter (R,m)),n) = iter (R,(m * n)) ) defpred S1[ Element of NAT ] means iter ((iter (R,m)),$1) = iter (R,(m * $1)); assume A1: rng R c= dom R ; ::_thesis: iter ((iter (R,m)),n) = iter (R,(m * n)) then dom (iter (R,m)) = dom R by Th74; then field (iter (R,m)) = dom R by A1, Th74, XBOOLE_1:12; then iter ((iter (R,m)),0) = id (dom R) by Th68 .= id (field R) by A1, XBOOLE_1:12 .= iter (R,(m * 0)) by Th68 ; then A2: S1[ 0 ] ; A3: for k being Element of NAT st S1[k] holds S1[k + 1] by Lm5; for k being Element of NAT holds S1[k] from NAT_1:sch_1(A2, A3); hence iter ((iter (R,m)),n) = iter (R,(m * n)) ; ::_thesis: verum end; theorem :: FUNCT_7:80 for n being Element of NAT holds iter ({},n) = {} proof let n be Element of NAT ; ::_thesis: iter ({},n) = {} defpred S1[ Element of NAT ] means iter ({},$1) = {} ; A1: for k being Element of NAT st S1[k] holds S1[k + 1] proof let k be Element of NAT ; ::_thesis: ( S1[k] implies S1[k + 1] ) assume iter ({},k) = {} ; ::_thesis: S1[k + 1] thus iter ({},(k + 1)) = (iter ({},k)) * {} by Th69 .= {} ; ::_thesis: verum end; iter ({},0) = id (field {}) by Th68 .= {} ; then A2: S1[ 0 ] ; for k being Element of NAT holds S1[k] from NAT_1:sch_1(A2, A1); hence iter ({},n) = {} ; ::_thesis: verum end; theorem :: FUNCT_7:81 for X being set for n being Element of NAT holds iter ((id X),n) = id X proof let X be set ; ::_thesis: for n being Element of NAT holds iter ((id X),n) = id X let n be Element of NAT ; ::_thesis: iter ((id X),n) = id X defpred S1[ Element of NAT ] means iter ((id X),$1) = id X; A1: for k being Element of NAT st S1[k] holds S1[k + 1] proof let k be Element of NAT ; ::_thesis: ( S1[k] implies S1[k + 1] ) assume A2: S1[k] ; ::_thesis: S1[k + 1] thus iter ((id X),(k + 1)) = (iter ((id X),k)) * (id X) by Th69 .= id X by A2, FUNCT_2:17 ; ::_thesis: verum end; id (field (id X)) = id X ; then A3: S1[ 0 ] by Th68; for k being Element of NAT holds S1[k] from NAT_1:sch_1(A3, A1); hence iter ((id X),n) = id X ; ::_thesis: verum end; theorem :: FUNCT_7:82 for R being Relation st rng R misses dom R holds iter (R,2) = {} proof let R be Relation; ::_thesis: ( rng R misses dom R implies iter (R,2) = {} ) assume A1: rng R misses dom R ; ::_thesis: iter (R,2) = {} thus iter (R,2) = iter (R,(1 + 1)) .= (iter (R,1)) * R by Th71 .= R * R by Th70 .= {} by A1, RELAT_1:44 ; ::_thesis: verum end; theorem :: FUNCT_7:83 for X being set for n being Nat for f being Function of X,X holds iter (f,n) is Function of X,X proof let X be set ; ::_thesis: for n being Nat for f being Function of X,X holds iter (f,n) is Function of X,X let n be Nat; ::_thesis: for f being Function of X,X holds iter (f,n) is Function of X,X let f be Function of X,X; ::_thesis: iter (f,n) is Function of X,X A1: ( X = {} implies X = {} ) ; then A2: dom f = X by FUNCT_2:def_1; A3: rng f c= X ; then ( dom (iter (f,n)) = X & rng (iter (f,n)) c= X ) by A2, Th74; then reconsider R = iter (f,n) as Relation of X,X by RELSET_1:4; dom R = X by A2, A3, Th74; hence iter (f,n) is Function of X,X by A1, FUNCT_2:def_1; ::_thesis: verum end; theorem :: FUNCT_7:84 for X being set for f being Function of X,X holds iter (f,0) = id X proof let X be set ; ::_thesis: for f being Function of X,X holds iter (f,0) = id X let f be Function of X,X; ::_thesis: iter (f,0) = id X ( iter (f,0) = id (field f) & field f = dom f ) by Lm1, Th68, XBOOLE_1:12; hence iter (f,0) = id X by FUNCT_2:52; ::_thesis: verum end; theorem :: FUNCT_7:85 for X being set for m, n being Element of NAT for f being Function of X,X holds iter ((iter (f,m)),n) = iter (f,(m * n)) proof let X be set ; ::_thesis: for m, n being Element of NAT for f being Function of X,X holds iter ((iter (f,m)),n) = iter (f,(m * n)) let m, n be Element of NAT ; ::_thesis: for f being Function of X,X holds iter ((iter (f,m)),n) = iter (f,(m * n)) let f be Function of X,X; ::_thesis: iter ((iter (f,m)),n) = iter (f,(m * n)) rng f c= dom f by Lm1; hence iter ((iter (f,m)),n) = iter (f,(m * n)) by Th79; ::_thesis: verum end; theorem :: FUNCT_7:86 for X being set for n being Element of NAT for f being PartFunc of X,X holds iter (f,n) is PartFunc of X,X proof let X be set ; ::_thesis: for n being Element of NAT for f being PartFunc of X,X holds iter (f,n) is PartFunc of X,X let n be Element of NAT ; ::_thesis: for f being PartFunc of X,X holds iter (f,n) is PartFunc of X,X let f be PartFunc of X,X; ::_thesis: iter (f,n) is PartFunc of X,X A1: field f = (dom f) \/ (rng f) ; rng (iter (f,n)) c= field f by Th72; then A2: rng (iter (f,n)) c= X by A1, XBOOLE_1:1; dom (iter (f,n)) c= field f by Th72; then dom (iter (f,n)) c= X by A1, XBOOLE_1:1; hence iter (f,n) is PartFunc of X,X by A2, RELSET_1:4; ::_thesis: verum end; theorem :: FUNCT_7:87 for a, X being set for f being Function for n being Element of NAT st n <> 0 & a in X & f = X --> a holds iter (f,n) = f proof let a, X be set ; ::_thesis: for f being Function for n being Element of NAT st n <> 0 & a in X & f = X --> a holds iter (f,n) = f let f be Function; ::_thesis: for n being Element of NAT st n <> 0 & a in X & f = X --> a holds iter (f,n) = f let n be Element of NAT ; ::_thesis: ( n <> 0 & a in X & f = X --> a implies iter (f,n) = f ) assume that A1: n <> 0 and A2: a in X and A3: f = X --> a ; ::_thesis: iter (f,n) = f defpred S1[ Element of NAT ] means iter (f,($1 + 1)) = f; A4: now__::_thesis:_for_k_being_Element_of_NAT_st_S1[k]_holds_ S1[k_+_1] A5: dom f = X by A3, FUNCOP_1:13; let k be Element of NAT ; ::_thesis: ( S1[k] implies S1[k + 1] ) assume A6: S1[k] ; ::_thesis: S1[k + 1] A7: now__::_thesis:_for_x_being_set_st_x_in_dom_f_holds_ (iter_(f,((k_+_1)_+_1)))_._x_=_f_._x let x be set ; ::_thesis: ( x in dom f implies (iter (f,((k + 1) + 1))) . x = f . x ) assume A8: x in dom f ; ::_thesis: (iter (f,((k + 1) + 1))) . x = f . x then A9: f . x = a by A3, A5, FUNCOP_1:7; thus (iter (f,((k + 1) + 1))) . x = (f * f) . x by A6, Th71 .= f . (f . x) by A8, FUNCT_1:13 .= f . x by A2, A3, A9, FUNCOP_1:7 ; ::_thesis: verum end; rng f = {a} by A2, A3, FUNCOP_1:8; then rng f c= dom f by A2, A5, ZFMISC_1:31; then dom (iter (f,((k + 1) + 1))) = dom f by Th74; hence S1[k + 1] by A7, FUNCT_1:2; ::_thesis: verum end; A10: S1[ 0 ] by Th70; A11: for k being Element of NAT holds S1[k] from NAT_1:sch_1(A10, A4); consider k being Nat such that A12: n = k + 1 by A1, NAT_1:6; reconsider k = k as Element of NAT by ORDINAL1:def_12; n = k + 1 by A12; hence iter (f,n) = f by A11; ::_thesis: verum end; theorem :: FUNCT_7:88 for f being Function for n being Element of NAT holds iter (f,n) = compose ((n |-> f),(field f)) proof let f be Function; ::_thesis: for n being Element of NAT holds iter (f,n) = compose ((n |-> f),(field f)) defpred S1[ Element of NAT ] means iter (f,$1) = compose (($1 |-> f),(field f)); A1: now__::_thesis:_for_n_being_Element_of_NAT_st_S1[n]_holds_ S1[n_+_1] let n be Element of NAT ; ::_thesis: ( S1[n] implies S1[n + 1] ) assume S1[n] ; ::_thesis: S1[n + 1] then iter (f,(n + 1)) = f * (compose ((n |-> f),(field f))) by Th71 .= compose (((n |-> f) ^ <*f*>),(field f)) by Th41 .= compose (((n + 1) |-> f),(field f)) by FINSEQ_2:60 ; hence S1[n + 1] ; ::_thesis: verum end; iter (f,0) = id (field f) by Th68 .= compose ({},(field f)) by Th39 .= compose ((0 |-> f),(field f)) ; then A2: S1[ 0 ] ; thus for n being Element of NAT holds S1[n] from NAT_1:sch_1(A2, A1); ::_thesis: verum end; begin theorem :: FUNCT_7:89 for f, g being Function for x, y being set st g c= f & not x in dom g holds g c= f +* (x,y) proof let f, g be Function; ::_thesis: for x, y being set st g c= f & not x in dom g holds g c= f +* (x,y) let x, y be set ; ::_thesis: ( g c= f & not x in dom g implies g c= f +* (x,y) ) assume that A1: g c= f and A2: not x in dom g ; ::_thesis: g c= f +* (x,y) A3: now__::_thesis:_for_z_being_set_st_z_in_dom_g_holds_ g_._z_=_(f_+*_(x,y))_._z let z be set ; ::_thesis: ( z in dom g implies g . z = (f +* (x,y)) . z ) assume A4: z in dom g ; ::_thesis: g . z = (f +* (x,y)) . z hence g . z = f . z by A1, GRFUNC_1:2 .= (f +* (x,y)) . z by A2, A4, Th32 ; ::_thesis: verum end; dom g c= dom f by A1, GRFUNC_1:2; then dom g c= dom (f +* (x,y)) by Th30; hence g c= f +* (x,y) by A3, GRFUNC_1:2; ::_thesis: verum end; theorem :: FUNCT_7:90 for f, g being Function for A being set st f | A = g | A & f,g equal_outside A holds f = g proof let f, g be Function; ::_thesis: for A being set st f | A = g | A & f,g equal_outside A holds f = g let A be set ; ::_thesis: ( f | A = g | A & f,g equal_outside A implies f = g ) assume A1: ( f | A = g | A & f,g equal_outside A ) ; ::_thesis: f = g thus f = f | ((dom f) \/ A) by RELAT_1:68, XBOOLE_1:7 .= f | (((dom f) \ A) \/ A) by XBOOLE_1:39 .= (f | ((dom f) \ A)) \/ (f | A) by RELAT_1:78 .= (g | ((dom g) \ A)) \/ (g | A) by A1, Def2 .= g | (((dom g) \ A) \/ A) by RELAT_1:78 .= g | ((dom g) \/ A) by XBOOLE_1:39 .= g by RELAT_1:68, XBOOLE_1:7 ; ::_thesis: verum end; theorem :: FUNCT_7:91 for f being Function for a, b, A being set st a in A holds f,f +* (a,b) equal_outside A proof let f be Function; ::_thesis: for a, b, A being set st a in A holds f,f +* (a,b) equal_outside A let a, b, A be set ; ::_thesis: ( a in A implies f,f +* (a,b) equal_outside A ) percases ( a in dom f or not a in dom f ) ; supposeA1: a in dom f ; ::_thesis: ( a in A implies f,f +* (a,b) equal_outside A ) assume a in A ; ::_thesis: f,f +* (a,b) equal_outside A then {a} c= A by ZFMISC_1:31; then A2: dom (a .--> b) c= A by FUNCOP_1:13; f +* (a,b) = f +* (a .--> b) by A1, Def3; hence f,f +* (a,b) equal_outside A by A2, Th29; ::_thesis: verum end; suppose not a in dom f ; ::_thesis: ( a in A implies f,f +* (a,b) equal_outside A ) then f +* (a,b) = f by Def3; hence ( a in A implies f,f +* (a,b) equal_outside A ) by Th25; ::_thesis: verum end; end; end; theorem Th92: :: FUNCT_7:92 for f being Function for a, b, A being set holds ( a in A or (f +* (a,b)) | A = f | A ) proof let f be Function; ::_thesis: for a, b, A being set holds ( a in A or (f +* (a,b)) | A = f | A ) let a, b, A be set ; ::_thesis: ( a in A or (f +* (a,b)) | A = f | A ) percases ( a in dom f or not a in dom f ) ; supposeA1: a in dom f ; ::_thesis: ( a in A or (f +* (a,b)) | A = f | A ) assume not a in A ; ::_thesis: (f +* (a,b)) | A = f | A then {a} misses A by ZFMISC_1:50; then A2: dom (a .--> b) misses A by FUNCOP_1:13; thus (f +* (a,b)) | A = (f +* (a .--> b)) | A by A1, Def3 .= f | A by A2, FUNCT_4:72 ; ::_thesis: verum end; suppose not a in dom f ; ::_thesis: ( a in A or (f +* (a,b)) | A = f | A ) hence ( a in A or (f +* (a,b)) | A = f | A ) by Def3; ::_thesis: verum end; end; end; theorem :: FUNCT_7:93 for f, g being Function for a, b, A being set st f | A = g | A holds (f +* (a,b)) | A = (g +* (a,b)) | A proof let f, g be Function; ::_thesis: for a, b, A being set st f | A = g | A holds (f +* (a,b)) | A = (g +* (a,b)) | A let a, b, A be set ; ::_thesis: ( f | A = g | A implies (f +* (a,b)) | A = (g +* (a,b)) | A ) assume A1: f | A = g | A ; ::_thesis: (f +* (a,b)) | A = (g +* (a,b)) | A percases ( ( a in A & a in dom g ) or ( a in A & not a in dom g ) or not a in A ) ; supposethat A2: a in A and A3: a in dom g ; ::_thesis: (f +* (a,b)) | A = (g +* (a,b)) | A now__::_thesis:_a_in_dom_f assume not a in dom f ; ::_thesis: contradiction then not a in (dom f) /\ A by XBOOLE_0:def_4; then not a in dom (g | A) by A1, RELAT_1:61; then not a in (dom g) /\ A by RELAT_1:61; hence contradiction by A2, A3, XBOOLE_0:def_4; ::_thesis: verum end; hence (f +* (a,b)) | A = (f +* (a .--> b)) | A by Def3 .= (g | A) +* ((a .--> b) | A) by A1, FUNCT_4:71 .= (g +* (a .--> b)) | A by FUNCT_4:71 .= (g +* (a,b)) | A by A3, Def3 ; ::_thesis: verum end; supposethat A4: a in A and A5: not a in dom g ; ::_thesis: (f +* (a,b)) | A = (g +* (a,b)) | A now__::_thesis:_not_a_in_dom_f assume a in dom f ; ::_thesis: contradiction then a in (dom f) /\ A by A4, XBOOLE_0:def_4; then a in dom (g | A) by A1, RELAT_1:61; then a in (dom g) /\ A by RELAT_1:61; hence contradiction by A5, XBOOLE_0:def_4; ::_thesis: verum end; hence (f +* (a,b)) | A = g | A by A1, Def3 .= (g +* (a,b)) | A by A5, Def3 ; ::_thesis: verum end; supposeA6: not a in A ; ::_thesis: (f +* (a,b)) | A = (g +* (a,b)) | A hence (f +* (a,b)) | A = f | A by Th92 .= (g +* (a,b)) | A by A1, A6, Th92 ; ::_thesis: verum end; end; end; theorem Th94: :: FUNCT_7:94 for f being Function for a, b being set holds (f +* (a .--> b)) . a = b proof let f be Function; ::_thesis: for a, b being set holds (f +* (a .--> b)) . a = b let a, b be set ; ::_thesis: (f +* (a .--> b)) . a = b dom (a .--> b) = {a} by FUNCOP_1:13; then a in dom (a .--> b) by TARSKI:def_1; hence (f +* (a .--> b)) . a = (a .--> b) . a by FUNCT_4:13 .= b by FUNCOP_1:72 ; ::_thesis: verum end; theorem :: FUNCT_7:95 for a, b being set holds <*a*> +* (1,b) = <*b*> proof let a, b be set ; ::_thesis: <*a*> +* (1,b) = <*b*> A1: dom <*b*> = {1} by FINSEQ_1:2, FINSEQ_1:def_8; A2: dom <*a*> = {1} by FINSEQ_1:2, FINSEQ_1:def_8; then 1 in dom <*a*> by TARSKI:def_1; then A3: <*a*> +* (1,b) = <*a*> +* (1 .--> b) by Def3; A4: for x being set st x in {1} holds (<*a*> +* (1,b)) . x = <*b*> . x proof let x be set ; ::_thesis: ( x in {1} implies (<*a*> +* (1,b)) . x = <*b*> . x ) assume x in {1} ; ::_thesis: (<*a*> +* (1,b)) . x = <*b*> . x then A5: x = 1 by TARSKI:def_1; hence (<*a*> +* (1,b)) . x = b by A3, Th94 .= <*b*> . x by A5, FINSEQ_1:def_8 ; ::_thesis: verum end; dom (<*a*> +* (1,b)) = (dom <*a*>) \/ (dom (1 .--> b)) by A3, FUNCT_4:def_1 .= {1} \/ {1} by A2, FUNCOP_1:13 .= {1} ; hence <*a*> +* (1,b) = <*b*> by A1, A4, FUNCT_1:2; ::_thesis: verum end; theorem :: FUNCT_7:96 for f being Function for x being set st x in dom f holds f +* (x .--> (f . x)) = f proof let f be Function; ::_thesis: for x being set st x in dom f holds f +* (x .--> (f . x)) = f let x be set ; ::_thesis: ( x in dom f implies f +* (x .--> (f . x)) = f ) assume x in dom f ; ::_thesis: f +* (x .--> (f . x)) = f hence f +* (x .--> (f . x)) = f +* (x,(f . x)) by Def3 .= f by Th35 ; ::_thesis: verum end; theorem Th97: :: FUNCT_7:97 for w being FinSequence for r being set for i being Nat holds len (w +* (i,r)) = len w proof let w be FinSequence; ::_thesis: for r being set for i being Nat holds len (w +* (i,r)) = len w let r be set ; ::_thesis: for i being Nat holds len (w +* (i,r)) = len w let i be Nat; ::_thesis: len (w +* (i,r)) = len w dom (w +* (i,r)) = dom w by Th30; then Seg (len (w +* (i,r))) = dom w by FINSEQ_1:def_3 .= Seg (len w) by FINSEQ_1:def_3 ; hence len (w +* (i,r)) = len w by FINSEQ_1:6; ::_thesis: verum end; theorem :: FUNCT_7:98 for i being Nat for D being non empty set for w being FinSequence of D for r being Element of D st i in dom w holds w +* (i,r) = ((w | (i -' 1)) ^ <*r*>) ^ (w /^ i) proof let i be Nat; ::_thesis: for D being non empty set for w being FinSequence of D for r being Element of D st i in dom w holds w +* (i,r) = ((w | (i -' 1)) ^ <*r*>) ^ (w /^ i) let D be non empty set ; ::_thesis: for w being FinSequence of D for r being Element of D st i in dom w holds w +* (i,r) = ((w | (i -' 1)) ^ <*r*>) ^ (w /^ i) let w be FinSequence of D; ::_thesis: for r being Element of D st i in dom w holds w +* (i,r) = ((w | (i -' 1)) ^ <*r*>) ^ (w /^ i) let r be Element of D; ::_thesis: ( i in dom w implies w +* (i,r) = ((w | (i -' 1)) ^ <*r*>) ^ (w /^ i) ) assume A1: i in dom w ; ::_thesis: w +* (i,r) = ((w | (i -' 1)) ^ <*r*>) ^ (w /^ i) then A2: 1 <= i by FINSEQ_3:25; A3: i <= len w by A1, FINSEQ_3:25; A4: len (((w | (i -' 1)) ^ <*r*>) ^ (w /^ i)) = (len ((w | (i -' 1)) ^ <*r*>)) + (len (w /^ i)) by FINSEQ_1:22 .= ((len (w | (i -' 1))) + (len <*r*>)) + (len (w /^ i)) by FINSEQ_1:22 .= ((len (w | (i -' 1))) + 1) + (len (w /^ i)) by FINSEQ_1:39 .= ((i -' 1) + 1) + (len (w /^ i)) by A3, FINSEQ_1:59, NAT_D:44 .= ((i -' 1) + 1) + ((len w) - i) by A3, RFINSEQ:def_1 .= ((i - 1) + 1) + ((len w) - i) by A2, XREAL_1:233 ; for j being Nat st 1 <= j & j <= len (w +* (i,r)) holds (w +* (i,r)) . j = (((w | (i -' 1)) ^ <*r*>) ^ (w /^ i)) . j proof A5: len (w | (i -' 1)) = i -' 1 by A3, FINSEQ_1:59, NAT_D:44 .= i - 1 by A2, XREAL_1:233 ; let j be Nat; ::_thesis: ( 1 <= j & j <= len (w +* (i,r)) implies (w +* (i,r)) . j = (((w | (i -' 1)) ^ <*r*>) ^ (w /^ i)) . j ) assume that A6: 1 <= j and A7: j <= len (w +* (i,r)) ; ::_thesis: (w +* (i,r)) . j = (((w | (i -' 1)) ^ <*r*>) ^ (w /^ i)) . j A8: len ((w | (i -' 1)) ^ <*r*>) = (len (w | (i -' 1))) + (len <*r*>) by FINSEQ_1:22 .= (len (w | (i -' 1))) + 1 by FINSEQ_1:39 .= (i -' 1) + 1 by A3, FINSEQ_1:59, NAT_D:44 .= (i - 1) + 1 by A2, XREAL_1:233 .= i ; A9: len (w +* (i,r)) = len w by Th97; now__::_thesis:_(_(_i_<_j_&_(w_+*_(i,r))_._j_=_(((w_|_(i_-'_1))_^_<*r*>)_^_(w_/^_i))_._j_)_or_(_j_=_i_&_(w_+*_(i,r))_._j_=_(((w_|_(i_-'_1))_^_<*r*>)_^_(w_/^_i))_._j_)_or_(_j_<_i_&_(w_+*_(i,r))_._j_=_(((w_|_(i_-'_1))_^_<*r*>)_^_(w_/^_i))_._j_)_) percases ( i < j or j = i or j < i ) by XXREAL_0:1; caseA10: i < j ; ::_thesis: (w +* (i,r)) . j = (((w | (i -' 1)) ^ <*r*>) ^ (w /^ i)) . j then i + 1 <= j by NAT_1:13; then A11: (i + 1) - i <= j - i by XREAL_1:9; then A12: 1 <= j -' i by NAT_D:39; A13: j - i <= (len w) - i by A7, A9, XREAL_1:9; A14: i <= len w by A1, FINSEQ_3:25; len (w /^ i) = (len w) -' i by RFINSEQ:29 .= (len w) - i by A14, XREAL_1:233 ; then j -' i <= len (w /^ i) by A11, A13, NAT_D:39; then A15: j -' i in dom (w /^ i) by A12, FINSEQ_3:25; j <= len (((w | (i -' 1)) ^ <*r*>) ^ (w /^ i)) by A4, A7, Th97; then (((w | (i -' 1)) ^ <*r*>) ^ (w /^ i)) . j = (w /^ i) . (j - (len ((w | (i -' 1)) ^ <*r*>))) by A8, A10, FINSEQ_1:24 .= (w /^ i) . (j -' i) by A8, A10, XREAL_1:233 .= w . ((j -' i) + i) by A14, A15, RFINSEQ:def_1 .= w . j by A10, XREAL_1:235 ; hence (w +* (i,r)) . j = (((w | (i -' 1)) ^ <*r*>) ^ (w /^ i)) . j by A10, Th32; ::_thesis: verum end; caseA16: j = i ; ::_thesis: (w +* (i,r)) . j = (((w | (i -' 1)) ^ <*r*>) ^ (w /^ i)) . j A17: i = (len (w | (i -' 1))) + 1 by A5; (((w | (i -' 1)) ^ <*r*>) ^ (w /^ i)) . j = ((w | (i -' 1)) ^ <*r*>) . i by A6, A8, A16, FINSEQ_1:64 .= r by A17, FINSEQ_1:42 ; hence (w +* (i,r)) . j = (((w | (i -' 1)) ^ <*r*>) ^ (w /^ i)) . j by A1, A16, Th31; ::_thesis: verum end; caseA18: j < i ; ::_thesis: (w +* (i,r)) . j = (((w | (i -' 1)) ^ <*r*>) ^ (w /^ i)) . j then j + 1 <= i by NAT_1:13; then A19: (j + 1) - 1 <= i - 1 by XREAL_1:9; then A20: j <= i -' 1 by A2, XREAL_1:233; (((w | (i -' 1)) ^ <*r*>) ^ (w /^ i)) . j = ((w | (i -' 1)) ^ <*r*>) . j by A6, A8, A18, FINSEQ_1:64 .= (w | (i -' 1)) . j by A6, A5, A19, FINSEQ_1:64 .= w . j by A20, FINSEQ_3:112 ; hence (w +* (i,r)) . j = (((w | (i -' 1)) ^ <*r*>) ^ (w /^ i)) . j by A18, Th32; ::_thesis: verum end; end; end; hence (w +* (i,r)) . j = (((w | (i -' 1)) ^ <*r*>) ^ (w /^ i)) . j ; ::_thesis: verum end; hence w +* (i,r) = ((w | (i -' 1)) ^ <*r*>) ^ (w /^ i) by A4, Th97, FINSEQ_1:14; ::_thesis: verum end; definition let F be Function; let x, y be set ; func Swap (F,x,y) -> set equals :Def12: :: FUNCT_7:def 12 (F +* (x,(F . y))) +* (y,(F . x)) if ( x in dom F & y in dom F ) otherwise F; correctness coherence ( ( x in dom F & y in dom F implies (F +* (x,(F . y))) +* (y,(F . x)) is set ) & ( ( not x in dom F or not y in dom F ) implies F is set ) ); consistency for b1 being set holds verum; ; end; :: deftheorem Def12 defines Swap FUNCT_7:def_12_:_ for F being Function for x, y being set holds ( ( x in dom F & y in dom F implies Swap (F,x,y) = (F +* (x,(F . y))) +* (y,(F . x)) ) & ( ( not x in dom F or not y in dom F ) implies Swap (F,x,y) = F ) ); registration let F be Function; let x, y be set ; cluster Swap (F,x,y) -> Relation-like Function-like ; coherence ( Swap (F,x,y) is Relation-like & Swap (F,x,y) is Function-like ) proof percases ( ( x in dom F & y in dom F ) or not x in dom F or not y in dom F ) ; suppose ( x in dom F & y in dom F ) ; ::_thesis: ( Swap (F,x,y) is Relation-like & Swap (F,x,y) is Function-like ) then Swap (F,x,y) = (F +* (x,(F . y))) +* (y,(F . x)) by Def12; hence ( Swap (F,x,y) is Relation-like & Swap (F,x,y) is Function-like ) ; ::_thesis: verum end; suppose ( not x in dom F or not y in dom F ) ; ::_thesis: ( Swap (F,x,y) is Relation-like & Swap (F,x,y) is Function-like ) hence ( Swap (F,x,y) is Relation-like & Swap (F,x,y) is Function-like ) by Def12; ::_thesis: verum end; end; end; end; theorem Th99: :: FUNCT_7:99 for F being Function for x, y being set holds dom (Swap (F,x,y)) = dom F proof let F be Function; ::_thesis: for x, y being set holds dom (Swap (F,x,y)) = dom F let x, y be set ; ::_thesis: dom (Swap (F,x,y)) = dom F percases ( ( x in dom F & y in dom F ) or not x in dom F or not y in dom F ) ; suppose ( x in dom F & y in dom F ) ; ::_thesis: dom (Swap (F,x,y)) = dom F hence dom (Swap (F,x,y)) = dom ((F +* (x,(F . y))) +* (y,(F . x))) by Def12 .= dom (F +* (x,(F . y))) by Th30 .= dom F by Th30 ; ::_thesis: verum end; suppose ( not x in dom F or not y in dom F ) ; ::_thesis: dom (Swap (F,x,y)) = dom F hence dom (Swap (F,x,y)) = dom F by Def12; ::_thesis: verum end; end; end; theorem Th100: :: FUNCT_7:100 for F being Function for x, y being set holds rng (F +* (x,y)) c= (rng F) \/ {y} proof let F be Function; ::_thesis: for x, y being set holds rng (F +* (x,y)) c= (rng F) \/ {y} let x, y be set ; ::_thesis: rng (F +* (x,y)) c= (rng F) \/ {y} A1: rng (x .--> y) = {y} by FUNCOP_1:8; percases ( x in dom F or not x in dom F ) ; suppose x in dom F ; ::_thesis: rng (F +* (x,y)) c= (rng F) \/ {y} then F +* (x,y) = F +* (x .--> y) by Def3; hence rng (F +* (x,y)) c= (rng F) \/ {y} by A1, FUNCT_4:17; ::_thesis: verum end; suppose not x in dom F ; ::_thesis: rng (F +* (x,y)) c= (rng F) \/ {y} then F +* (x,y) = F by Def3; hence rng (F +* (x,y)) c= (rng F) \/ {y} by XBOOLE_1:7; ::_thesis: verum end; end; end; theorem Th101: :: FUNCT_7:101 for F being Function for x, y being set holds rng F c= (rng (F +* (x,y))) \/ {(F . x)} proof let F be Function; ::_thesis: for x, y being set holds rng F c= (rng (F +* (x,y))) \/ {(F . x)} let x, y be set ; ::_thesis: rng F c= (rng (F +* (x,y))) \/ {(F . x)} let z be set ; :: according to TARSKI:def_3 ::_thesis: ( not z in rng F or z in (rng (F +* (x,y))) \/ {(F . x)} ) assume z in rng F ; ::_thesis: z in (rng (F +* (x,y))) \/ {(F . x)} then consider e being set such that A1: e in dom F and A2: z = F . e by FUNCT_1:def_3; A3: dom F = dom (F +* (x,y)) by Th30; percases ( e = x or e <> x ) ; suppose e = x ; ::_thesis: z in (rng (F +* (x,y))) \/ {(F . x)} then z in {(F . x)} by A2, TARSKI:def_1; hence z in (rng (F +* (x,y))) \/ {(F . x)} by XBOOLE_0:def_3; ::_thesis: verum end; suppose e <> x ; ::_thesis: z in (rng (F +* (x,y))) \/ {(F . x)} then (F +* (x,y)) . e = F . e by Th32; then z in rng (F +* (x,y)) by A1, A2, A3, FUNCT_1:3; hence z in (rng (F +* (x,y))) \/ {(F . x)} by XBOOLE_0:def_3; ::_thesis: verum end; end; end; theorem Th102: :: FUNCT_7:102 for F being Function for x, y being set st x in dom F holds y in rng (F +* (x,y)) proof let F be Function; ::_thesis: for x, y being set st x in dom F holds y in rng (F +* (x,y)) let x, y be set ; ::_thesis: ( x in dom F implies y in rng (F +* (x,y)) ) assume x in dom F ; ::_thesis: y in rng (F +* (x,y)) then ( x in dom (F +* (x,y)) & (F +* (x,y)) . x = y ) by Th30, Th31; hence y in rng (F +* (x,y)) by FUNCT_1:3; ::_thesis: verum end; theorem :: FUNCT_7:103 for F being Function for x, y being set holds rng (Swap (F,x,y)) = rng F proof let F be Function; ::_thesis: for x, y being set holds rng (Swap (F,x,y)) = rng F let x, y be set ; ::_thesis: rng (Swap (F,x,y)) = rng F percases ( ( x in dom F & y in dom F ) or not x in dom F or not y in dom F ) ; supposethat A1: x in dom F and A2: y in dom F ; ::_thesis: rng (Swap (F,x,y)) = rng F F . x in rng F by A1, FUNCT_1:3; then F . x in (rng F) \/ {(F . y)} by XBOOLE_0:def_3; then ((rng F) \/ {(F . y)}) \/ {(F . x)} = (rng F) \/ {(F . y)} by ZFMISC_1:40 .= rng F by A2, FUNCT_1:3, ZFMISC_1:40 ; then A3: (rng (F +* (x,(F . y)))) \/ {(F . x)} c= rng F by Th100, XBOOLE_1:9; A4: (F +* (x,(F . y))) . y = F . y proof percases ( x <> y or x = y ) ; suppose x <> y ; ::_thesis: (F +* (x,(F . y))) . y = F . y hence (F +* (x,(F . y))) . y = F . y by Th32; ::_thesis: verum end; suppose x = y ; ::_thesis: (F +* (x,(F . y))) . y = F . y hence (F +* (x,(F . y))) . y = F . y by A1, Th31; ::_thesis: verum end; end; end; A5: rng F c= (rng (F +* (x,(F . y)))) \/ {(F . x)} by Th101; A6: Swap (F,x,y) = (F +* (x,(F . y))) +* (y,(F . x)) by A1, A2, Def12; then rng (Swap (F,x,y)) c= (rng (F +* (x,(F . y)))) \/ {(F . x)} by Th100; then A7: rng (Swap (F,x,y)) c= rng F by A3, XBOOLE_1:1; A8: y in dom (F +* (x,(F . y))) by A2, Th30; A9: F . y in rng (Swap (F,x,y)) proof percases ( F . x = F . y or F . x <> F . y ) ; suppose F . x = F . y ; ::_thesis: F . y in rng (Swap (F,x,y)) hence F . y in rng (Swap (F,x,y)) by A6, A8, Th102; ::_thesis: verum end; supposeA10: F . x <> F . y ; ::_thesis: F . y in rng (Swap (F,x,y)) A11: dom (Swap (F,x,y)) = dom F by Th99; (Swap (F,x,y)) . x = (F +* (x,(F . y))) . x by A6, A10, Th32 .= F . y by A1, Th31 ; hence F . y in rng (Swap (F,x,y)) by A1, A11, FUNCT_1:3; ::_thesis: verum end; end; end; F . x in rng (Swap (F,x,y)) by A6, A8, Th102; then F . x in (rng (Swap (F,x,y))) \/ {(F . y)} by XBOOLE_0:def_3; then ((rng (Swap (F,x,y))) \/ {(F . y)}) \/ {(F . x)} = (rng (Swap (F,x,y))) \/ {(F . y)} by ZFMISC_1:40 .= rng (Swap (F,x,y)) by A9, ZFMISC_1:40 ; then (rng (F +* (x,(F . y)))) \/ {(F . x)} c= rng (Swap (F,x,y)) by A6, A4, Th101, XBOOLE_1:9; then rng F c= rng (Swap (F,x,y)) by A5, XBOOLE_1:1; hence rng (Swap (F,x,y)) = rng F by A7, XBOOLE_0:def_10; ::_thesis: verum end; suppose ( not x in dom F or not y in dom F ) ; ::_thesis: rng (Swap (F,x,y)) = rng F hence rng (Swap (F,x,y)) = rng F by Def12; ::_thesis: verum end; end; end; scheme :: FUNCT_7:sch 6 Sch6{ F1() -> set , F2() -> non empty set , F3( set ) -> set } : F1(), { F3(d) where d is Element of F2() : d in F1() } are_equipotent provided A1: F1() c= F2() and A2: for d1, d2 being Element of F2() st d1 in F1() & d2 in F1() & F3(d1) = F3(d2) holds d1 = d2 proof percases ( F1() <> {} or F1() = {} ) ; suppose F1() <> {} ; ::_thesis: F1(), { F3(d) where d is Element of F2() : d in F1() } are_equipotent then reconsider D = F1() as non empty set ; set X = { F3(d) where d is Element of D : d in F1() } ; set Y = { F3(d) where d is Element of F2() : d in F1() } ; A3: now__::_thesis:_for_x_being_set_holds_ (_(_x_in__{__F3(d)_where_d_is_Element_of_D_:_d_in_F1()__}__implies_x_in__{__F3(d)_where_d_is_Element_of_F2()_:_d_in_F1()__}__)_&_(_x_in__{__F3(d)_where_d_is_Element_of_F2()_:_d_in_F1()__}__implies_x_in__{__F3(d)_where_d_is_Element_of_D_:_d_in_F1()__}__)_) let x be set ; ::_thesis: ( ( x in { F3(d) where d is Element of D : d in F1() } implies x in { F3(d) where d is Element of F2() : d in F1() } ) & ( x in { F3(d) where d is Element of F2() : d in F1() } implies x in { F3(d) where d is Element of D : d in F1() } ) ) hereby ::_thesis: ( x in { F3(d) where d is Element of F2() : d in F1() } implies x in { F3(d) where d is Element of D : d in F1() } ) assume x in { F3(d) where d is Element of D : d in F1() } ; ::_thesis: x in { F3(d) where d is Element of F2() : d in F1() } then ex d being Element of D st ( F3(d) = x & d in F1() ) ; hence x in { F3(d) where d is Element of F2() : d in F1() } by A1; ::_thesis: verum end; hereby ::_thesis: verum assume x in { F3(d) where d is Element of F2() : d in F1() } ; ::_thesis: x in { F3(d) where d is Element of D : d in F1() } then ex d being Element of F2() st ( F3(d) = x & d in F1() ) ; hence x in { F3(d) where d is Element of D : d in F1() } ; ::_thesis: verum end; end; A4: now__::_thesis:_for_d1,_d2_being_Element_of_D_st_F3(d1)_=_F3(d2)_holds_ d1_=_d2 let d1, d2 be Element of D; ::_thesis: ( F3(d1) = F3(d2) implies d1 = d2 ) ( d1 in F1() & d2 in F1() ) ; then reconsider d = d1, dd = d2 as Element of F2() by A1; assume F3(d1) = F3(d2) ; ::_thesis: d1 = d2 then d = dd by A2; hence d1 = d2 ; ::_thesis: verum end; A5: F1() c= D ; F1(), { F3(d) where d is Element of D : d in F1() } are_equipotent from FUNCT_7:sch_4(A5, A4); hence F1(), { F3(d) where d is Element of F2() : d in F1() } are_equipotent by A3, TARSKI:1; ::_thesis: verum end; supposeA6: F1() = {} ; ::_thesis: F1(), { F3(d) where d is Element of F2() : d in F1() } are_equipotent now__::_thesis:_not__{__F3(d)_where_d_is_Element_of_F2()_:_d_in_F1()__}__<>_{} set a = the Element of { F3(d) where d is Element of F2() : d in F1() } ; assume { F3(d) where d is Element of F2() : d in F1() } <> {} ; ::_thesis: contradiction then the Element of { F3(d) where d is Element of F2() : d in F1() } in { F3(d) where d is Element of F2() : d in F1() } ; then ex d being Element of F2() st ( the Element of { F3(d) where d is Element of F2() : d in F1() } = F3(d) & d in F1() ) ; hence contradiction by A6; ::_thesis: verum end; hence F1(), { F3(d) where d is Element of F2() : d in F1() } are_equipotent by A6; ::_thesis: verum end; end; end; theorem :: FUNCT_7:104 for f, g, h being Function for A being set st f,g equal_outside A holds f +* h,g +* h equal_outside A proof let f, g, h be Function; ::_thesis: for A being set st f,g equal_outside A holds f +* h,g +* h equal_outside A let A be set ; ::_thesis: ( f,g equal_outside A implies f +* h,g +* h equal_outside A ) A1: dom ((f +* h) | ((dom (f +* h)) \ A)) = (dom (f +* h)) \ A by RELAT_1:156 .= ((dom f) \/ (dom h)) \ A by FUNCT_4:def_1 .= ((dom f) \ A) \/ ((dom h) \ A) by XBOOLE_1:42 ; assume f,g equal_outside A ; ::_thesis: f +* h,g +* h equal_outside A then A2: f | ((dom f) \ A) = g | ((dom g) \ A) by Def2; then A3: (dom f) \ A = dom (g | ((dom g) \ A)) by RELAT_1:156 .= (dom g) \ A by RELAT_1:156 ; then A4: dom ((f +* h) | ((dom (f +* h)) \ A)) = ((dom g) \/ (dom h)) \ A by A1, XBOOLE_1:42 .= (dom (g +* h)) \ A by FUNCT_4:def_1 .= dom ((g +* h) | ((dom (g +* h)) \ A)) by RELAT_1:156 ; now__::_thesis:_for_x_being_set_st_x_in_dom_((f_+*_h)_|_((dom_(f_+*_h))_\_A))_holds_ ((f_+*_h)_|_((dom_(f_+*_h))_\_A))_._x_=_((g_+*_h)_|_((dom_(g_+*_h))_\_A))_._x let x be set ; ::_thesis: ( x in dom ((f +* h) | ((dom (f +* h)) \ A)) implies ((f +* h) | ((dom (f +* h)) \ A)) . b1 = ((g +* h) | ((dom (g +* h)) \ A)) . b1 ) assume A5: x in dom ((f +* h) | ((dom (f +* h)) \ A)) ; ::_thesis: ((f +* h) | ((dom (f +* h)) \ A)) . b1 = ((g +* h) | ((dom (g +* h)) \ A)) . b1 then A6: ( x in (dom f) \ A or x in (dom h) \ A ) by A1, XBOOLE_0:def_3; percases ( x in (dom h) \ A or not x in (dom h) \ A ) ; supposeA7: x in (dom h) \ A ; ::_thesis: ((f +* h) | ((dom (f +* h)) \ A)) . b1 = ((g +* h) | ((dom (g +* h)) \ A)) . b1 thus ((f +* h) | ((dom (f +* h)) \ A)) . x = (f +* h) . x by A5, FUNCT_1:47 .= h . x by A7, FUNCT_4:13 .= (g +* h) . x by A7, FUNCT_4:13 .= ((g +* h) | ((dom (g +* h)) \ A)) . x by A4, A5, FUNCT_1:47 ; ::_thesis: verum end; supposeA8: not x in (dom h) \ A ; ::_thesis: ((f +* h) | ((dom (f +* h)) \ A)) . b1 = ((g +* h) | ((dom (g +* h)) \ A)) . b1 not x in A by A6, XBOOLE_0:def_5; then A9: not x in dom h by A8, XBOOLE_0:def_5; A10: x in (dom f) \ A by A1, A5, A8, XBOOLE_0:def_3; thus ((f +* h) | ((dom (f +* h)) \ A)) . x = (f +* h) . x by A5, FUNCT_1:47 .= f . x by A9, FUNCT_4:11 .= (g | ((dom g) \ A)) . x by A2, A6, A8, FUNCT_1:49 .= g . x by A3, A10, FUNCT_1:49 .= (g +* h) . x by A9, FUNCT_4:11 .= ((g +* h) | ((dom (g +* h)) \ A)) . x by A4, A5, FUNCT_1:47 ; ::_thesis: verum end; end; end; then (f +* h) | ((dom (f +* h)) \ A) = (g +* h) | ((dom (g +* h)) \ A) by A4, FUNCT_1:2; hence f +* h,g +* h equal_outside A by Def2; ::_thesis: verum end; theorem :: FUNCT_7:105 for f, g, h being Function for A being set st f,g equal_outside A holds h +* f,h +* g equal_outside A proof let f, g, h be Function; ::_thesis: for A being set st f,g equal_outside A holds h +* f,h +* g equal_outside A let A be set ; ::_thesis: ( f,g equal_outside A implies h +* f,h +* g equal_outside A ) assume f,g equal_outside A ; ::_thesis: h +* f,h +* g equal_outside A then A1: f | ((dom f) \ A) = g | ((dom g) \ A) by Def2; then A2: (dom f) \ A = dom (g | ((dom g) \ A)) by RELAT_1:156 .= (dom g) \ A by RELAT_1:156 ; A3: dom ((h +* f) | ((dom (h +* f)) \ A)) = (dom (h +* f)) \ A by RELAT_1:156 .= ((dom h) \/ (dom f)) \ A by FUNCT_4:def_1 .= ((dom h) \ A) \/ ((dom f) \ A) by XBOOLE_1:42 ; then A4: dom ((h +* f) | ((dom (h +* f)) \ A)) = ((dom h) \/ (dom g)) \ A by A2, XBOOLE_1:42 .= (dom (h +* g)) \ A by FUNCT_4:def_1 .= dom ((h +* g) | ((dom (h +* g)) \ A)) by RELAT_1:156 ; now__::_thesis:_for_x_being_set_st_x_in_dom_((h_+*_f)_|_((dom_(h_+*_f))_\_A))_holds_ ((h_+*_f)_|_((dom_(h_+*_f))_\_A))_._x_=_((h_+*_g)_|_((dom_(h_+*_g))_\_A))_._x let x be set ; ::_thesis: ( x in dom ((h +* f) | ((dom (h +* f)) \ A)) implies ((h +* f) | ((dom (h +* f)) \ A)) . b1 = ((h +* g) | ((dom (h +* g)) \ A)) . b1 ) assume A5: x in dom ((h +* f) | ((dom (h +* f)) \ A)) ; ::_thesis: ((h +* f) | ((dom (h +* f)) \ A)) . b1 = ((h +* g) | ((dom (h +* g)) \ A)) . b1 then A6: ( x in (dom h) \ A or x in (dom f) \ A ) by A3, XBOOLE_0:def_3; percases ( x in (dom f) \ A or not x in (dom f) \ A ) ; supposeA7: x in (dom f) \ A ; ::_thesis: ((h +* f) | ((dom (h +* f)) \ A)) . b1 = ((h +* g) | ((dom (h +* g)) \ A)) . b1 thus ((h +* f) | ((dom (h +* f)) \ A)) . x = (h +* f) . x by A5, FUNCT_1:47 .= f . x by A7, FUNCT_4:13 .= (g | ((dom g) \ A)) . x by A1, A7, FUNCT_1:49 .= g . x by A2, A7, FUNCT_1:49 .= (h +* g) . x by A2, A7, FUNCT_4:13 .= ((h +* g) | ((dom (h +* g)) \ A)) . x by A4, A5, FUNCT_1:47 ; ::_thesis: verum end; supposeA8: not x in (dom f) \ A ; ::_thesis: ((h +* f) | ((dom (h +* f)) \ A)) . b1 = ((h +* g) | ((dom (h +* g)) \ A)) . b1 A9: not x in A by A6, XBOOLE_0:def_5; then A10: not x in dom f by A8, XBOOLE_0:def_5; A11: not x in dom g by A2, A8, A9, XBOOLE_0:def_5; thus ((h +* f) | ((dom (h +* f)) \ A)) . x = (h +* f) . x by A5, FUNCT_1:47 .= h . x by A10, FUNCT_4:11 .= (h +* g) . x by A11, FUNCT_4:11 .= ((h +* g) | ((dom (h +* g)) \ A)) . x by A4, A5, FUNCT_1:47 ; ::_thesis: verum end; end; end; then (h +* f) | ((dom (h +* f)) \ A) = (h +* g) | ((dom (h +* g)) \ A) by A4, FUNCT_1:2; hence h +* f,h +* g equal_outside A by Def2; ::_thesis: verum end; theorem :: FUNCT_7:106 for f, g, h being Function holds ( f +* h = g +* h iff f,g equal_outside dom h ) proof let f, g, h be Function; ::_thesis: ( f +* h = g +* h iff f,g equal_outside dom h ) thus ( f +* h = g +* h implies f,g equal_outside dom h ) ::_thesis: ( f,g equal_outside dom h implies f +* h = g +* h ) proof assume f +* h = g +* h ; ::_thesis: f,g equal_outside dom h then A1: f +* h,g equal_outside dom h by Th26, Th29; f,f +* h equal_outside dom h by Th29; hence f,g equal_outside dom h by A1, Th27; ::_thesis: verum end; assume A2: f,g equal_outside dom h ; ::_thesis: f +* h = g +* h then A3: (dom f) \ (dom h) = (dom g) \ (dom h) by Th28; A4: for x being set st x in dom (f +* h) holds (f +* h) . x = (g +* h) . x proof let x be set ; ::_thesis: ( x in dom (f +* h) implies (f +* h) . x = (g +* h) . x ) assume A5: x in dom (f +* h) ; ::_thesis: (f +* h) . x = (g +* h) . x percases ( x in dom h or not x in dom h ) ; supposeA6: x in dom h ; ::_thesis: (f +* h) . x = (g +* h) . x hence (f +* h) . x = h . x by FUNCT_4:13 .= (g +* h) . x by A6, FUNCT_4:13 ; ::_thesis: verum end; supposeA7: not x in dom h ; ::_thesis: (f +* h) . x = (g +* h) . x dom (f +* h) = (dom f) \/ (dom h) by FUNCT_4:def_1; then x in dom f by A5, A7, XBOOLE_0:def_3; then A8: x in (dom f) \ (dom h) by A7, XBOOLE_0:def_5; A9: f | ((dom f) \ (dom h)) = g | ((dom g) \ (dom h)) by A2, Def2; thus (f +* h) . x = f . x by A7, FUNCT_4:11 .= (g | ((dom g) \ (dom h))) . x by A9, A8, FUNCT_1:49 .= g . x by A3, A8, FUNCT_1:49 .= (g +* h) . x by A7, FUNCT_4:11 ; ::_thesis: verum end; end; end; dom (f +* h) = (dom f) \/ (dom h) by FUNCT_4:def_1 .= ((dom g) \ (dom h)) \/ (dom h) by A3, XBOOLE_1:39 .= (dom g) \/ (dom h) by XBOOLE_1:39 .= dom (g +* h) by FUNCT_4:def_1 ; hence f +* h = g +* h by A4, FUNCT_1:2; ::_thesis: verum end; theorem Th107: :: FUNCT_7:107 for x, y, a being set for f being Function st f . x = f . y holds f . a = (f * ((id (dom f)) +* (x,y))) . a proof let x, y, a be set ; ::_thesis: for f being Function st f . x = f . y holds f . a = (f * ((id (dom f)) +* (x,y))) . a let f be Function; ::_thesis: ( f . x = f . y implies f . a = (f * ((id (dom f)) +* (x,y))) . a ) assume A1: f . x = f . y ; ::_thesis: f . a = (f * ((id (dom f)) +* (x,y))) . a set g1 = (id (dom f)) +* (x,y); A2: dom (id (dom f)) = dom f ; percases ( not x in dom f or x in dom f ) ; suppose not x in dom f ; ::_thesis: f . a = (f * ((id (dom f)) +* (x,y))) . a then id (dom f) = (id (dom f)) +* (x,y) by A2, Def3; hence f . a = (f * ((id (dom f)) +* (x,y))) . a by RELAT_1:52; ::_thesis: verum end; supposeA3: x in dom f ; ::_thesis: f . a = (f * ((id (dom f)) +* (x,y))) . a A4: dom ((id (dom f)) +* (x,y)) = dom f by A2, Th30; A5: ((id (dom f)) +* (x,y)) . x = y by A2, A3, Th31; thus f . a = (f * ((id (dom f)) +* (x,y))) . a ::_thesis: verum proof percases ( a in dom f or not a in dom f ) ; supposeA6: a in dom f ; ::_thesis: f . a = (f * ((id (dom f)) +* (x,y))) . a now__::_thesis:_(_a_<>_x_implies_f_._a_=_(f_*_((id_(dom_f))_+*_(x,y)))_._a_) assume a <> x ; ::_thesis: f . a = (f * ((id (dom f)) +* (x,y))) . a then ((id (dom f)) +* (x,y)) . a = (id (dom f)) . a by Th32 .= a by A6, FUNCT_1:18 ; hence f . a = (f * ((id (dom f)) +* (x,y))) . a by A4, A6, FUNCT_1:13; ::_thesis: verum end; hence f . a = (f * ((id (dom f)) +* (x,y))) . a by A1, A3, A5, A4, FUNCT_1:13; ::_thesis: verum end; supposeA7: not a in dom f ; ::_thesis: f . a = (f * ((id (dom f)) +* (x,y))) . a dom (f * ((id (dom f)) +* (x,y))) c= dom ((id (dom f)) +* (x,y)) by RELAT_1:25; then not a in dom (f * ((id (dom f)) +* (x,y))) by A4, A7; then (f * ((id (dom f)) +* (x,y))) . a = {} by FUNCT_1:def_2; hence f . a = (f * ((id (dom f)) +* (x,y))) . a by A7, FUNCT_1:def_2; ::_thesis: verum end; end; end; end; end; end; theorem :: FUNCT_7:108 for x, y being set for f being Function st ( x in dom f implies ( y in dom f & f . x = f . y ) ) holds f = f * ((id (dom f)) +* (x,y)) proof let x, y be set ; ::_thesis: for f being Function st ( x in dom f implies ( y in dom f & f . x = f . y ) ) holds f = f * ((id (dom f)) +* (x,y)) let f be Function; ::_thesis: ( ( x in dom f implies ( y in dom f & f . x = f . y ) ) implies f = f * ((id (dom f)) +* (x,y)) ) assume A1: ( x in dom f implies ( y in dom f & f . x = f . y ) ) ; ::_thesis: f = f * ((id (dom f)) +* (x,y)) set g1 = (id (dom f)) +* (x,y); set g = f * ((id (dom f)) +* (x,y)); A2: dom (id (dom f)) = dom f ; percases ( not x in dom f or x in dom f ) ; suppose not x in dom f ; ::_thesis: f = f * ((id (dom f)) +* (x,y)) then id (dom f) = (id (dom f)) +* (x,y) by A2, Def3; hence f = f * ((id (dom f)) +* (x,y)) by RELAT_1:52; ::_thesis: verum end; supposeA3: x in dom f ; ::_thesis: f = f * ((id (dom f)) +* (x,y)) A4: dom ((id (dom f)) +* (x,y)) = dom f by A2, Th30; now__::_thesis:_(_dom_f_=_dom_(f_*_((id_(dom_f))_+*_(x,y)))_&_(_for_a_being_set_st_a_in_dom_f_holds_ f_._a_=_(f_*_((id_(dom_f))_+*_(x,y)))_._a_)_) rng ((id (dom f)) +* (x,y)) c= dom f proof let b be set ; :: according to TARSKI:def_3 ::_thesis: ( not b in rng ((id (dom f)) +* (x,y)) or b in dom f ) assume b in rng ((id (dom f)) +* (x,y)) ; ::_thesis: b in dom f then consider a being set such that A5: a in dom ((id (dom f)) +* (x,y)) and A6: b = ((id (dom f)) +* (x,y)) . a by FUNCT_1:def_3; percases ( a = x or a <> x ) ; suppose a = x ; ::_thesis: b in dom f hence b in dom f by A1, A2, A3, A6, Th31; ::_thesis: verum end; suppose a <> x ; ::_thesis: b in dom f then (id (dom f)) . a = ((id (dom f)) +* (x,y)) . a by Th32; hence b in dom f by A4, A5, A6, FUNCT_1:18; ::_thesis: verum end; end; end; hence dom f = dom (f * ((id (dom f)) +* (x,y))) by A4, RELAT_1:27; ::_thesis: for a being set st a in dom f holds f . a = (f * ((id (dom f)) +* (x,y))) . a let a be set ; ::_thesis: ( a in dom f implies f . a = (f * ((id (dom f)) +* (x,y))) . a ) assume a in dom f ; ::_thesis: f . a = (f * ((id (dom f)) +* (x,y))) . a thus f . a = (f * ((id (dom f)) +* (x,y))) . a by A1, A3, Th107; ::_thesis: verum end; hence f = f * ((id (dom f)) +* (x,y)) by FUNCT_1:2; ::_thesis: verum end; end; end; theorem :: FUNCT_7:109 for f being Function for x being set st x in dom f holds f +* (x .--> (f . x)) = f proof let f be Function; ::_thesis: for x being set st x in dom f holds f +* (x .--> (f . x)) = f let x be set ; ::_thesis: ( x in dom f implies f +* (x .--> (f . x)) = f ) assume x in dom f ; ::_thesis: f +* (x .--> (f . x)) = f hence f +* (x .--> (f . x)) = f +* (x,(f . x)) by Def3 .= f by Th35 ; ::_thesis: verum end; theorem Th110: :: FUNCT_7:110 for X being set for p being Permutation of X for x, y being Element of X holds (p +* (x,(p . y))) +* (y,(p . x)) is Permutation of X proof let X be set ; ::_thesis: for p being Permutation of X for x, y being Element of X holds (p +* (x,(p . y))) +* (y,(p . x)) is Permutation of X let p be Permutation of X; ::_thesis: for x, y being Element of X holds (p +* (x,(p . y))) +* (y,(p . x)) is Permutation of X let x, y be Element of X; ::_thesis: (p +* (x,(p . y))) +* (y,(p . x)) is Permutation of X set p1 = p +* (x,(p . y)); set p2 = (p +* (x,(p . y))) +* (y,(p . x)); A1: dom ((p +* (x,(p . y))) +* (y,(p . x))) = dom (p +* (x,(p . y))) by Th30; A2: dom (p +* (x,(p . y))) = dom p by Th30; A3: ( X = {} implies X = {} ) ; then A4: dom p = X by FUNCT_2:def_1; percases ( X is empty or not X is empty ) ; suppose X is empty ; ::_thesis: (p +* (x,(p . y))) +* (y,(p . x)) is Permutation of X then (p +* (x,(p . y))) +* (y,(p . x)) = {} by A1, A2; hence (p +* (x,(p . y))) +* (y,(p . x)) is Permutation of X by A1, A2, A3; ::_thesis: verum end; supposeA5: not X is empty ; ::_thesis: (p +* (x,(p . y))) +* (y,(p . x)) is Permutation of X A6: rng p = X by FUNCT_2:def_3; then A7: p . x in X by A4, A5, FUNCT_1:def_3; thus (p +* (x,(p . y))) +* (y,(p . x)) is Permutation of X ::_thesis: verum proof percases ( x = y or x <> y ) ; supposeA8: x = y ; ::_thesis: (p +* (x,(p . y))) +* (y,(p . x)) is Permutation of X then (p +* (x,(p . y))) +* (y,(p . x)) = p +* (x,(p . y)) by Th35 .= p by A8, Th35 ; hence (p +* (x,(p . y))) +* (y,(p . x)) is Permutation of X ; ::_thesis: verum end; supposeA9: x <> y ; ::_thesis: (p +* (x,(p . y))) +* (y,(p . x)) is Permutation of X then A10: ((p +* (x,(p . y))) +* (y,(p . x))) . x = (p +* (x,(p . y))) . x by Th32 .= p . y by A4, A5, Th31 ; A11: now__::_thesis:_for_z_being_set_st_z_in_X_&_z_<>_x_&_z_<>_y_holds_ ((p_+*_(x,(p_._y)))_+*_(y,(p_._x)))_._z_=_p_._z let z be set ; ::_thesis: ( z in X & z <> x & z <> y implies ((p +* (x,(p . y))) +* (y,(p . x))) . z = p . z ) assume that z in X and A12: z <> x and A13: z <> y ; ::_thesis: ((p +* (x,(p . y))) +* (y,(p . x))) . z = p . z thus ((p +* (x,(p . y))) +* (y,(p . x))) . z = (p +* (x,(p . y))) . z by A13, Th32 .= p . z by A12, Th32 ; ::_thesis: verum end; A14: ((p +* (x,(p . y))) +* (y,(p . x))) . y = p . x by A2, A4, A5, Th31; A15: now__::_thesis:_for_pz_being_set_holds_ (_(_pz_in_rng_((p_+*_(x,(p_._y)))_+*_(y,(p_._x)))_implies_pz_in_X_)_&_(_pz_in_X_implies_pz_in_rng_((p_+*_(x,(p_._y)))_+*_(y,(p_._x)))_)_) let pz be set ; ::_thesis: ( ( pz in rng ((p +* (x,(p . y))) +* (y,(p . x))) implies pz in X ) & ( pz in X implies b1 in rng ((p +* (x,(p . y))) +* (y,(p . x))) ) ) hereby ::_thesis: ( pz in X implies b1 in rng ((p +* (x,(p . y))) +* (y,(p . x))) ) assume pz in rng ((p +* (x,(p . y))) +* (y,(p . x))) ; ::_thesis: pz in X then consider z being set such that A16: z in dom ((p +* (x,(p . y))) +* (y,(p . x))) and A17: pz = ((p +* (x,(p . y))) +* (y,(p . x))) . z by FUNCT_1:def_3; A18: p . z in X by A1, A2, A6, A16, FUNCT_1:def_3; percases ( z = x or z = y or ( z <> x & z <> y ) ) ; suppose z = x ; ::_thesis: pz in X hence pz in X by A4, A5, A6, A10, A17, FUNCT_1:def_3; ::_thesis: verum end; suppose z = y ; ::_thesis: pz in X hence pz in X by A2, A4, A7, A17, Th31; ::_thesis: verum end; suppose ( z <> x & z <> y ) ; ::_thesis: pz in X hence pz in X by A1, A2, A11, A16, A17, A18; ::_thesis: verum end; end; end; assume pz in X ; ::_thesis: b1 in rng ((p +* (x,(p . y))) +* (y,(p . x))) then consider z being set such that A19: z in dom p and A20: pz = p . z by A6, FUNCT_1:def_3; percases ( z = x or z = y or ( z <> x & z <> y ) ) ; suppose z = x ; ::_thesis: b1 in rng ((p +* (x,(p . y))) +* (y,(p . x))) hence pz in rng ((p +* (x,(p . y))) +* (y,(p . x))) by A1, A2, A4, A14, A19, A20, FUNCT_1:def_3; ::_thesis: verum end; suppose z = y ; ::_thesis: b1 in rng ((p +* (x,(p . y))) +* (y,(p . x))) hence pz in rng ((p +* (x,(p . y))) +* (y,(p . x))) by A1, A2, A4, A10, A19, A20, FUNCT_1:def_3; ::_thesis: verum end; suppose ( z <> x & z <> y ) ; ::_thesis: b1 in rng ((p +* (x,(p . y))) +* (y,(p . x))) then ((p +* (x,(p . y))) +* (y,(p . x))) . z = p . z by A11, A19; hence pz in rng ((p +* (x,(p . y))) +* (y,(p . x))) by A1, A2, A19, A20, FUNCT_1:def_3; ::_thesis: verum end; end; end; then rng ((p +* (x,(p . y))) +* (y,(p . x))) = X by TARSKI:1; then reconsider p2 = (p +* (x,(p . y))) +* (y,(p . x)) as Function of X,X by A1, A2, A4, A5, FUNCT_2:def_1, RELSET_1:4; now__::_thesis:_for_z1,_z2_being_set_st_z1_in_X_&_z2_in_X_&_p2_._z1_=_p2_._z2_holds_ not_z1_<>_z2 let z1, z2 be set ; ::_thesis: ( z1 in X & z2 in X & p2 . z1 = p2 . z2 implies not z1 <> z2 ) assume that A21: z1 in X and A22: z2 in X and A23: p2 . z1 = p2 . z2 and A24: z1 <> z2 ; ::_thesis: contradiction percases ( ( z1 = x & z2 = y ) or ( z1 = y & z2 = x ) or ( z1 = x & z2 <> y ) or ( z1 <> x & z2 = y ) or ( z1 = y & z2 <> x ) or ( z1 <> y & z2 = x ) or ( z1 <> y & z2 <> x & z1 <> x & z2 <> y ) ) ; suppose ( z1 = x & z2 = y ) ; ::_thesis: contradiction hence contradiction by A5, A9, A10, A14, A23, FUNCT_2:19; ::_thesis: verum end; suppose ( z1 = y & z2 = x ) ; ::_thesis: contradiction hence contradiction by A5, A9, A10, A14, A23, FUNCT_2:19; ::_thesis: verum end; supposeA25: ( z1 = x & z2 <> y ) ; ::_thesis: contradiction then p2 . z2 = p . z2 by A11, A22, A24; hence contradiction by A10, A22, A23, A25, FUNCT_2:19; ::_thesis: verum end; supposeA26: ( z1 <> x & z2 = y ) ; ::_thesis: contradiction then p2 . z1 = p . z1 by A11, A21, A24; hence contradiction by A14, A21, A23, A26, FUNCT_2:19; ::_thesis: verum end; supposeA27: ( z1 = y & z2 <> x ) ; ::_thesis: contradiction then p2 . z2 = p . z2 by A11, A22, A24; hence contradiction by A14, A22, A23, A27, FUNCT_2:19; ::_thesis: verum end; supposeA28: ( z1 <> y & z2 = x ) ; ::_thesis: contradiction then p2 . z1 = p . z1 by A11, A21, A24; hence contradiction by A10, A21, A23, A28, FUNCT_2:19; ::_thesis: verum end; suppose ( z1 <> y & z2 <> x & z1 <> x & z2 <> y ) ; ::_thesis: contradiction then ( p2 . z1 = p . z1 & p2 . z2 = p . z2 ) by A11, A21, A22; hence contradiction by A21, A22, A23, A24, FUNCT_2:19; ::_thesis: verum end; end; end; then A29: p2 is one-to-one by A5, FUNCT_2:19; rng p2 = X by A15, TARSKI:1; then p2 is onto by FUNCT_2:def_3; hence (p +* (x,(p . y))) +* (y,(p . x)) is Permutation of X by A29; ::_thesis: verum end; end; end; end; end; end; theorem :: FUNCT_7:111 for f being Function for x, y being set st x in dom f & y in dom f holds ex p being Permutation of (dom f) st (f +* (x,(f . y))) +* (y,(f . x)) = f * p proof let f be Function; ::_thesis: for x, y being set st x in dom f & y in dom f holds ex p being Permutation of (dom f) st (f +* (x,(f . y))) +* (y,(f . x)) = f * p let x, y be set ; ::_thesis: ( x in dom f & y in dom f implies ex p being Permutation of (dom f) st (f +* (x,(f . y))) +* (y,(f . x)) = f * p ) assume that A1: x in dom f and A2: y in dom f ; ::_thesis: ex p being Permutation of (dom f) st (f +* (x,(f . y))) +* (y,(f . x)) = f * p set i = id (dom f); ( (id (dom f)) . x = x & (id (dom f)) . y = y ) by A1, A2, FUNCT_1:18; then reconsider p = ((id (dom f)) +* (x,y)) +* (y,x) as Permutation of (dom f) by A1, A2, Th110; set pk = (id (dom f)) +* (x,y); set fr = f * p; set fk = f +* (x,(f . y)); take p ; ::_thesis: (f +* (x,(f . y))) +* (y,(f . x)) = f * p set fl = (f +* (x,(f . y))) +* (y,(f . x)); A3: dom (id (dom f)) = dom f ; A4: dom (f +* (x,(f . y))) = dom ((f +* (x,(f . y))) +* (y,(f . x))) by Th30; A5: dom p = dom ((id (dom f)) +* (x,y)) by Th30; A6: dom ((id (dom f)) +* (x,y)) = dom (id (dom f)) by Th30; A7: dom f = dom (f +* (x,(f . y))) by Th30; now__::_thesis:_(_dom_f_=_dom_((f_+*_(x,(f_._y)))_+*_(y,(f_._x)))_&_dom_f_=_dom_(f_*_p)_&_(_for_z_being_set_st_z_in_dom_f_holds_ ((f_+*_(x,(f_._y)))_+*_(y,(f_._x)))_._z_=_(f_*_p)_._z_)_) thus dom f = dom ((f +* (x,(f . y))) +* (y,(f . x))) by A4, Th30; ::_thesis: ( dom f = dom (f * p) & ( for z being set st z in dom f holds ((f +* (x,(f . y))) +* (y,(f . x))) . b2 = (f * p) . b2 ) ) rng p = dom f by FUNCT_2:def_3; hence dom f = dom (f * p) by A5, A6, RELAT_1:27; ::_thesis: for z being set st z in dom f holds ((f +* (x,(f . y))) +* (y,(f . x))) . b2 = (f * p) . b2 let z be set ; ::_thesis: ( z in dom f implies ((f +* (x,(f . y))) +* (y,(f . x))) . b1 = (f * p) . b1 ) assume A8: z in dom f ; ::_thesis: ((f +* (x,(f . y))) +* (y,(f . x))) . b1 = (f * p) . b1 percases ( x <> y or x = y ) ; supposeA9: x <> y ; ::_thesis: ((f +* (x,(f . y))) +* (y,(f . x))) . b1 = (f * p) . b1 thus ((f +* (x,(f . y))) +* (y,(f . x))) . z = (f * p) . z ::_thesis: verum proof percases ( z = x or z = y or ( z <> x & z <> y ) ) ; supposeA10: z = x ; ::_thesis: ((f +* (x,(f . y))) +* (y,(f . x))) . z = (f * p) . z hence ((f +* (x,(f . y))) +* (y,(f . x))) . z = (f +* (x,(f . y))) . z by A9, Th32 .= f . y by A8, A10, Th31 .= f . (((id (dom f)) +* (x,y)) . x) by A1, A3, Th31 .= f . (p . x) by A9, Th32 .= (f * p) . z by A5, A6, A8, A10, FUNCT_1:13 ; ::_thesis: verum end; supposeA11: z = y ; ::_thesis: ((f +* (x,(f . y))) +* (y,(f . x))) . z = (f * p) . z hence ((f +* (x,(f . y))) +* (y,(f . x))) . z = f . x by A7, A8, Th31 .= f . (p . y) by A2, A6, Th31 .= (f * p) . z by A5, A6, A8, A11, FUNCT_1:13 ; ::_thesis: verum end; supposeA12: ( z <> x & z <> y ) ; ::_thesis: ((f +* (x,(f . y))) +* (y,(f . x))) . z = (f * p) . z then A13: p . z = ((id (dom f)) +* (x,y)) . z by Th32 .= (id (dom f)) . z by A12, Th32 .= z by A8, FUNCT_1:18 ; thus ((f +* (x,(f . y))) +* (y,(f . x))) . z = (f +* (x,(f . y))) . z by A12, Th32 .= f . (p . z) by A12, A13, Th32 .= (f * p) . z by A5, A6, A8, FUNCT_1:13 ; ::_thesis: verum end; end; end; end; supposeA14: x = y ; ::_thesis: ((f +* (x,(f . y))) +* (y,(f . x))) . b1 = (f * p) . b1 A15: x = (id (dom f)) . x by A1, FUNCT_1:17; ( f +* (x,(f . y)) = f & id (dom f) = (id (dom f)) +* (x,((id (dom f)) . y)) ) by A14, Th35; hence ((f +* (x,(f . y))) +* (y,(f . x))) . z = (f * p) . z by A14, A15, RELAT_1:52; ::_thesis: verum end; end; end; hence (f +* (x,(f . y))) +* (y,(f . x)) = f * p by FUNCT_1:2; ::_thesis: verum end; theorem :: FUNCT_7:112 for f being Function for d, r being set st d in dom f holds dom f = dom (f +* (d .--> r)) proof let f be Function; ::_thesis: for d, r being set st d in dom f holds dom f = dom (f +* (d .--> r)) let d, r be set ; ::_thesis: ( d in dom f implies dom f = dom (f +* (d .--> r)) ) assume A1: d in dom f ; ::_thesis: dom f = dom (f +* (d .--> r)) thus dom f = dom (f +* (d,r)) by Th30 .= dom (f +* (d .--> r)) by A1, Def3 ; ::_thesis: verum end; theorem :: FUNCT_7:113 for f, g being FinSequence of INT for m, n being Element of NAT st 1 <= n & n <= len f & 1 <= m & m <= len f & g = (f +* (m,(f /. n))) +* (n,(f /. m)) holds ( f . m = g . n & f . n = g . m & ( for k being set st k <> m & k <> n & k in dom f holds f . k = g . k ) & f,g are_fiberwise_equipotent ) proof let f, g be FinSequence of INT ; ::_thesis: for m, n being Element of NAT st 1 <= n & n <= len f & 1 <= m & m <= len f & g = (f +* (m,(f /. n))) +* (n,(f /. m)) holds ( f . m = g . n & f . n = g . m & ( for k being set st k <> m & k <> n & k in dom f holds f . k = g . k ) & f,g are_fiberwise_equipotent ) let m, n be Element of NAT ; ::_thesis: ( 1 <= n & n <= len f & 1 <= m & m <= len f & g = (f +* (m,(f /. n))) +* (n,(f /. m)) implies ( f . m = g . n & f . n = g . m & ( for k being set st k <> m & k <> n & k in dom f holds f . k = g . k ) & f,g are_fiberwise_equipotent ) ) assume that A1: ( 1 <= n & n <= len f ) and A2: ( 1 <= m & m <= len f ) and A3: g = (f +* (m,(f /. n))) +* (n,(f /. m)) ; ::_thesis: ( f . m = g . n & f . n = g . m & ( for k being set st k <> m & k <> n & k in dom f holds f . k = g . k ) & f,g are_fiberwise_equipotent ) A4: dom (f +* (m,(f /. n))) = dom f by Th30; A5: n in dom f by A1, FINSEQ_3:25; hence A6: g . n = f /. m by A3, A4, Th31 .= f . m by A2, FINSEQ_4:15 ; ::_thesis: ( f . n = g . m & ( for k being set st k <> m & k <> n & k in dom f holds f . k = g . k ) & f,g are_fiberwise_equipotent ) A7: m in dom f by A2, FINSEQ_3:25; hereby ::_thesis: ( ( for k being set st k <> m & k <> n & k in dom f holds f . k = g . k ) & f,g are_fiberwise_equipotent ) percases ( m = n or m <> n ) ; suppose m = n ; ::_thesis: g . m = f . n hence g . m = f . n by A6; ::_thesis: verum end; suppose m <> n ; ::_thesis: g . m = f . n hence g . m = (f +* (m,(f /. n))) . m by A3, Th32 .= f /. n by A7, Th31 .= f . n by A1, FINSEQ_4:15 ; ::_thesis: verum end; end; end; A9: now__::_thesis:_for_k_being_set_st_k_<>_m_&_k_<>_n_&_k_in_dom_f_holds_ g_._k_=_f_._k let k be set ; ::_thesis: ( k <> m & k <> n & k in dom f implies g . k = f . k ) assume that A10: k <> m and A11: k <> n and k in dom f ; ::_thesis: g . k = f . k thus g . k = (f +* (m,(f /. n))) . k by A3, A11, Th32 .= f . k by A10, Th32 ; ::_thesis: verum end; dom g = dom f by A3, A4, Th30; hence ( ( for k being set st k <> m & k <> n & k in dom f holds f . k = g . k ) & f,g are_fiberwise_equipotent ) by A5, A7, A6, A8, A9, RFINSEQ:28; ::_thesis: verum end; theorem :: FUNCT_7:114 for f being Function for a, A, b, B, c, C being set st a <> b & a <> c holds (((f +* (a .--> A)) +* (b .--> B)) +* (c .--> C)) . a = A proof let f be Function; ::_thesis: for a, A, b, B, c, C being set st a <> b & a <> c holds (((f +* (a .--> A)) +* (b .--> B)) +* (c .--> C)) . a = A let a, A, b, B, c, C be set ; ::_thesis: ( a <> b & a <> c implies (((f +* (a .--> A)) +* (b .--> B)) +* (c .--> C)) . a = A ) assume ( a <> b & a <> c ) ; ::_thesis: (((f +* (a .--> A)) +* (b .--> B)) +* (c .--> C)) . a = A hence (((f +* (a .--> A)) +* (b .--> B)) +* (c .--> C)) . a = (f +* (a .--> A)) . a by FUNCT_4:91 .= A by Th94 ; ::_thesis: verum end; theorem Th115: :: FUNCT_7:115 for A, B, a, b being set for f being Function of A,B st b in B holds f +* (a,b) is Function of A,B proof let A, B, a, b be set ; ::_thesis: for f being Function of A,B st b in B holds f +* (a,b) is Function of A,B let f be Function of A,B; ::_thesis: ( b in B implies f +* (a,b) is Function of A,B ) assume A1: b in B ; ::_thesis: f +* (a,b) is Function of A,B A2: dom f = A by A1, FUNCT_2:def_1; percases ( not a in A or a in A ) ; suppose not a in A ; ::_thesis: f +* (a,b) is Function of A,B hence f +* (a,b) is Function of A,B by A2, Def3; ::_thesis: verum end; supposeA3: a in A ; ::_thesis: f +* (a,b) is Function of A,B set g = a .--> b; set f1 = f +* (a .--> b); rng (a .--> b) = {b} by FUNCOP_1:8; then rng (a .--> b) c= B by A1, ZFMISC_1:31; then A4: ( rng (f +* (a .--> b)) c= (rng f) \/ (rng (a .--> b)) & (rng f) \/ (rng (a .--> b)) c= B \/ B ) by FUNCT_4:17, XBOOLE_1:13; A5: {a} c= A by A3, ZFMISC_1:31; dom (f +* (a .--> b)) = A \/ (dom (a .--> b)) by A2, FUNCT_4:def_1 .= A \/ {a} by FUNCOP_1:13 .= A by A5, XBOOLE_1:12 ; then A6: f +* (a .--> b) is Function of A,B by A4, FUNCT_2:2, XBOOLE_1:1; a in dom f by A1, A3, FUNCT_2:def_1; hence f +* (a,b) is Function of A,B by A6, Def3; ::_thesis: verum end; end; end; theorem Th116: :: FUNCT_7:116 for A being set for f being Function for x, y being set st rng f c= A holds f +~ (x,y) = ((id A) +* (x,y)) * f proof let A be set ; ::_thesis: for f being Function for x, y being set st rng f c= A holds f +~ (x,y) = ((id A) +* (x,y)) * f let f be Function; ::_thesis: for x, y being set st rng f c= A holds f +~ (x,y) = ((id A) +* (x,y)) * f let x, y be set ; ::_thesis: ( rng f c= A implies f +~ (x,y) = ((id A) +* (x,y)) * f ) assume A1: rng f c= A ; ::_thesis: f +~ (x,y) = ((id A) +* (x,y)) * f percases ( x in A or not x in A ) ; suppose x in A ; ::_thesis: f +~ (x,y) = ((id A) +* (x,y)) * f then A2: x in dom (id A) ; thus f +~ (x,y) = ((id A) * f) +* ((x .--> y) * f) by A1, RELAT_1:53 .= ((id A) +* (x .--> y)) * f by Th10 .= ((id A) +* (x,y)) * f by A2, Def3 ; ::_thesis: verum end; supposeA3: not x in A ; ::_thesis: f +~ (x,y) = ((id A) +* (x,y)) * f then A4: not x in dom (id A) ; not x in rng f by A1, A3; hence f +~ (x,y) = f by FUNCT_4:103 .= (id A) * f by A1, RELAT_1:53 .= ((id A) +* (x,y)) * f by A4, Def3 ; ::_thesis: verum end; end; end; theorem :: FUNCT_7:117 for f, g being Function for x, y being set holds (f +* g) +~ (x,y) = (f +~ (x,y)) +* (g +~ (x,y)) proof let f, g be Function; ::_thesis: for x, y being set holds (f +* g) +~ (x,y) = (f +~ (x,y)) +* (g +~ (x,y)) let x, y be set ; ::_thesis: (f +* g) +~ (x,y) = (f +~ (x,y)) +* (g +~ (x,y)) set A = (rng f) \/ (rng g); A1: g +~ (x,y) = ((id ((rng f) \/ (rng g))) +* (x,y)) * g by Th116, XBOOLE_1:7; A2: dom ((id ((rng f) \/ (rng g))) +* (x,y)) = dom (id ((rng f) \/ (rng g))) by Th30 .= (rng f) \/ (rng g) ; rng (f +* g) c= (rng f) \/ (rng g) by FUNCT_4:17; hence (f +* g) +~ (x,y) = ((id ((rng f) \/ (rng g))) +* (x,y)) * (f +* g) by Th116 .= (((id ((rng f) \/ (rng g))) +* (x,y)) * f) +* (((id ((rng f) \/ (rng g))) +* (x,y)) * g) by A2, Th9, XBOOLE_1:7 .= (f +~ (x,y)) +* (g +~ (x,y)) by A1, Th116, XBOOLE_1:7 ; ::_thesis: verum end; definition let a, b be set ; funca followed_by b -> set equals :: FUNCT_7:def 13 (NAT --> b) +* (0,a); coherence (NAT --> b) +* (0,a) is set ; end; :: deftheorem defines followed_by FUNCT_7:def_13_:_ for a, b being set holds a followed_by b = (NAT --> b) +* (0,a); registration let a, b be set ; clustera followed_by b -> Relation-like Function-like ; coherence ( a followed_by b is Function-like & a followed_by b is Relation-like ) ; end; theorem Th118: :: FUNCT_7:118 for a, b being set holds dom (a followed_by b) = NAT proof let a, b be set ; ::_thesis: dom (a followed_by b) = NAT thus dom (a followed_by b) = dom ((NAT --> b) +* (0,a)) .= dom (NAT --> b) by Th30 .= NAT by FUNCOP_1:13 ; ::_thesis: verum end; definition let X be non empty set ; let a, b be Element of X; :: original: followed_by redefine funca followed_by b -> sequence of X; coherence a followed_by b is sequence of X proof a followed_by b = (NAT --> b) +* (0,a) ; hence a followed_by b is sequence of X by Th115; ::_thesis: verum end; end; theorem Th119: :: FUNCT_7:119 for a, b being set holds (a followed_by b) . 0 = a proof let a, b be set ; ::_thesis: (a followed_by b) . 0 = a dom (NAT --> b) = NAT by FUNCOP_1:13; hence (a followed_by b) . 0 = a by Th31; ::_thesis: verum end; theorem Th120: :: FUNCT_7:120 for a, b being set for n being Nat st n > 0 holds (a followed_by b) . n = b proof let a, b be set ; ::_thesis: for n being Nat st n > 0 holds (a followed_by b) . n = b let n be Nat; ::_thesis: ( n > 0 implies (a followed_by b) . n = b ) A1: n in NAT by ORDINAL1:def_12; assume n > 0 ; ::_thesis: (a followed_by b) . n = b hence (a followed_by b) . n = (NAT --> b) . n by Th32 .= b by A1, FUNCOP_1:7 ; ::_thesis: verum end; definition let a, b, c be set ; func(a,b) followed_by c -> set equals :: FUNCT_7:def 14 (NAT --> c) +* ((0,1) --> (a,b)); coherence (NAT --> c) +* ((0,1) --> (a,b)) is set ; end; :: deftheorem defines followed_by FUNCT_7:def_14_:_ for a, b, c being set holds (a,b) followed_by c = (NAT --> c) +* ((0,1) --> (a,b)); registration let a, b, c be set ; cluster(a,b) followed_by c -> Relation-like Function-like ; coherence ( (a,b) followed_by c is Function-like & (a,b) followed_by c is Relation-like ) ; end; theorem Th121: :: FUNCT_7:121 for a, b, c being set holds dom ((a,b) followed_by c) = NAT proof let a, b, c be set ; ::_thesis: dom ((a,b) followed_by c) = NAT thus dom ((a,b) followed_by c) = (dom (NAT --> c)) \/ (dom ((0,1) --> (a,b))) by FUNCT_4:def_1 .= NAT \/ (dom ((0,1) --> (a,b))) by FUNCOP_1:13 .= NAT \/ {0,1} by FUNCT_4:62 .= NAT by XBOOLE_1:12 ; ::_thesis: verum end; theorem Th122: :: FUNCT_7:122 for a, b, c being set holds ((a,b) followed_by c) . 0 = a proof let a, b, c be set ; ::_thesis: ((a,b) followed_by c) . 0 = a dom ((0,1) --> (a,b)) = {0,1} by FUNCT_4:62; then A1: 0 in dom ((0,1) --> (a,b)) by TARSKI:def_2; thus ((a,b) followed_by c) . 0 = ((NAT --> c) +* ((0,1) --> (a,b))) . 0 .= ((0,1) --> (a,b)) . 0 by A1, FUNCT_4:13 .= a by FUNCT_4:63 ; ::_thesis: verum end; theorem Th123: :: FUNCT_7:123 for a, b, c being set holds ((a,b) followed_by c) . 1 = b proof let a, b, c be set ; ::_thesis: ((a,b) followed_by c) . 1 = b dom ((0,1) --> (a,b)) = {0,1} by FUNCT_4:62; then A1: 1 in dom ((0,1) --> (a,b)) by TARSKI:def_2; thus ((a,b) followed_by c) . 1 = ((NAT --> c) +* ((0,1) --> (a,b))) . 1 .= ((0,1) --> (a,b)) . 1 by A1, FUNCT_4:13 .= b by FUNCT_4:63 ; ::_thesis: verum end; theorem Th124: :: FUNCT_7:124 for a, b, c being set for n being Nat st n > 1 holds ((a,b) followed_by c) . n = c proof let a, b, c be set ; ::_thesis: for n being Nat st n > 1 holds ((a,b) followed_by c) . n = c let n be Nat; ::_thesis: ( n > 1 implies ((a,b) followed_by c) . n = c ) assume A1: n > 1 ; ::_thesis: ((a,b) followed_by c) . n = c dom ((0,1) --> (a,b)) = {0,1} by FUNCT_4:62; then A2: not n in dom ((0,1) --> (a,b)) by A1, TARSKI:def_2; A3: n in NAT by ORDINAL1:def_12; thus ((a,b) followed_by c) . n = ((NAT --> c) +* ((0,1) --> (a,b))) . n .= (NAT --> c) . n by A2, FUNCT_4:11 .= c by A3, FUNCOP_1:7 ; ::_thesis: verum end; theorem Th125: :: FUNCT_7:125 for a, b, c being set holds (a,b) followed_by c = (a followed_by c) +* (1,b) proof let a, b, c be set ; ::_thesis: (a,b) followed_by c = (a followed_by c) +* (1,b) set f = (a,b) followed_by c; set g = (a followed_by c) +* (1,b); A1: dom (a followed_by c) = NAT by Th118; A2: dom ((a,b) followed_by c) = NAT by Th121; hence dom ((a,b) followed_by c) = dom ((a followed_by c) +* (1,b)) by A1, Th30; :: according to FUNCT_1:def_11 ::_thesis: for b1 being set holds ( not b1 in proj1 ((a,b) followed_by c) or ((a,b) followed_by c) . b1 = ((a followed_by c) +* (1,b)) . b1 ) let x be set ; ::_thesis: ( not x in proj1 ((a,b) followed_by c) or ((a,b) followed_by c) . x = ((a followed_by c) +* (1,b)) . x ) assume x in dom ((a,b) followed_by c) ; ::_thesis: ((a,b) followed_by c) . x = ((a followed_by c) +* (1,b)) . x then reconsider n = x as Nat by A2; percases ( n = 0 or n = 1 or n > 1 ) by NAT_1:25; supposeA3: n = 0 ; ::_thesis: ((a,b) followed_by c) . x = ((a followed_by c) +* (1,b)) . x hence ((a,b) followed_by c) . x = a by Th122 .= (a followed_by c) . x by A3, Th119 .= ((a followed_by c) +* (1,b)) . x by A3, Th32 ; ::_thesis: verum end; supposeA4: n = 1 ; ::_thesis: ((a,b) followed_by c) . x = ((a followed_by c) +* (1,b)) . x hence ((a,b) followed_by c) . x = b by Th123 .= ((a followed_by c) +* (1,b)) . x by A1, A4, Th31 ; ::_thesis: verum end; supposeA5: n > 1 ; ::_thesis: ((a,b) followed_by c) . x = ((a followed_by c) +* (1,b)) . x hence ((a,b) followed_by c) . x = c by Th124 .= (a followed_by c) . x by A5, Th120 .= ((a followed_by c) +* (1,b)) . x by A5, Th32 ; ::_thesis: verum end; end; end; definition let X be non empty set ; let a, b, c be Element of X; :: original: followed_by redefine func(a,b) followed_by c -> sequence of X; coherence (a,b) followed_by c is sequence of X proof (a,b) followed_by c = (a followed_by c) +* (1,b) by Th125; hence (a,b) followed_by c is sequence of X by Th115; ::_thesis: verum end; end; theorem Th126: :: FUNCT_7:126 for a, b being set holds rng (a followed_by b) = {a,b} proof let a, b be set ; ::_thesis: rng (a followed_by b) = {a,b} rng (NAT --> b) = {b} by FUNCOP_1:8; then rng ((NAT --> b) +* (0,a)) c= {b} \/ {a} by Th100; hence rng (a followed_by b) c= {a,b} by ENUMSET1:1; :: according to XBOOLE_0:def_10 ::_thesis: {a,b} c= rng (a followed_by b) let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in {a,b} or x in rng (a followed_by b) ) assume A1: x in {a,b} ; ::_thesis: x in rng (a followed_by b) A2: dom (NAT --> b) = NAT by FUNCOP_1:13; then 1 in dom (NAT --> b) ; then A3: 1 in dom (a followed_by b) by Th30; (a followed_by b) . 1 = b by Th120; then A4: b in rng (a followed_by b) by A3, FUNCT_1:3; a in rng (a followed_by b) by A2, Th102; hence x in rng (a followed_by b) by A1, A4, TARSKI:def_2; ::_thesis: verum end; theorem :: FUNCT_7:127 for a, b, c being set holds rng ((a,b) followed_by c) = {a,b,c} proof let a, b, c be set ; ::_thesis: rng ((a,b) followed_by c) = {a,b,c} A1: (a,b) followed_by c = (a followed_by c) +* (1,b) by Th125; then A2: dom ((a,b) followed_by c) = dom (a followed_by c) by Th30 .= dom (NAT --> c) by Th30 .= NAT by FUNCOP_1:13 ; ((a,b) followed_by c) . 2 = c by Th124; then A3: c in rng ((a,b) followed_by c) by A2, FUNCT_1:3; ((a,b) followed_by c) . 1 = b by Th123; then A4: b in rng ((a,b) followed_by c) by A2, FUNCT_1:3; rng (a followed_by c) = {a,c} by Th126; then rng ((a followed_by c) +* (1,b)) c= {a,c} \/ {b} by Th100; then rng ((a followed_by c) +* (1,b)) c= {a,c,b} by ENUMSET1:3; hence rng ((a,b) followed_by c) c= {a,b,c} by A1, ENUMSET1:57; :: according to XBOOLE_0:def_10 ::_thesis: {a,b,c} c= rng ((a,b) followed_by c) let x be set ; :: according to TARSKI:def_3 ::_thesis: ( not x in {a,b,c} or x in rng ((a,b) followed_by c) ) ((a,b) followed_by c) . 0 = a by Th122; then A5: a in rng ((a,b) followed_by c) by A2, FUNCT_1:3; assume x in {a,b,c} ; ::_thesis: x in rng ((a,b) followed_by c) hence x in rng ((a,b) followed_by c) by A5, A4, A3, ENUMSET1:def_1; ::_thesis: verum end; definition let A, B be set ; let f be Function of A,B; let x be set ; let y be Element of B; :: original: +* redefine funcf +* (x,y) -> Function of A,B; coherence f +* (x,y) is Function of A,B proof set F = f +* (x,y); A1: rng (f +* (x,y)) c= (rng f) \/ {y} by Th100; percases ( B is empty or not B is empty ) ; suppose B is empty ; ::_thesis: f +* (x,y) is Function of A,B then dom f is empty ; hence f +* (x,y) is Function of A,B by Def3; ::_thesis: verum end; supposeA2: not B is empty ; ::_thesis: f +* (x,y) is Function of A,B then {y} c= B by ZFMISC_1:31; then (rng f) \/ {y} c= B by XBOOLE_1:8; then A3: rng (f +* (x,y)) c= B by A1, XBOOLE_1:1; dom f = A by A2, FUNCT_2:def_1; then dom (f +* (x,y)) = A by Th30; hence f +* (x,y) is Function of A,B by A2, A3, FUNCT_2:def_1, RELSET_1:4; ::_thesis: verum end; end; end; end; theorem :: FUNCT_7:128 for A, B being non empty set for f being Function of A,B for x being Element of A for y being set holds (f +* (x,y)) . x = y proof let A, B be non empty set ; ::_thesis: for f being Function of A,B for x being Element of A for y being set holds (f +* (x,y)) . x = y let f be Function of A,B; ::_thesis: for x being Element of A for y being set holds (f +* (x,y)) . x = y let x be Element of A; ::_thesis: for y being set holds (f +* (x,y)) . x = y let y be set ; ::_thesis: (f +* (x,y)) . x = y x in A ; then x in dom f by FUNCT_2:def_1; hence (f +* (x,y)) . x = y by Th31; ::_thesis: verum end; theorem :: FUNCT_7:129 for A, B being non empty set for f, g being Function of A,B for x being Element of A st ( for y being Element of A st f . y <> g . y holds y = x ) holds f = g +* (x,(f . x)) proof let A, B be non empty set ; ::_thesis: for f, g being Function of A,B for x being Element of A st ( for y being Element of A st f . y <> g . y holds y = x ) holds f = g +* (x,(f . x)) let f, g be Function of A,B; ::_thesis: for x being Element of A st ( for y being Element of A st f . y <> g . y holds y = x ) holds f = g +* (x,(f . x)) let x be Element of A; ::_thesis: ( ( for y being Element of A st f . y <> g . y holds y = x ) implies f = g +* (x,(f . x)) ) assume A1: for y being Element of A st f . y <> g . y holds y = x ; ::_thesis: f = g +* (x,(f . x)) x in A ; then A2: x in dom g by FUNCT_2:def_1; A3: dom f = A by FUNCT_2:def_1 .= A \/ {x} by XBOOLE_1:12 .= (dom g) \/ {x} by FUNCT_2:def_1 .= (dom g) \/ (dom (x .--> (f . x))) by FUNCOP_1:13 ; for e being set st e in (dom g) \/ (dom (x .--> (f . x))) holds ( ( e in dom (x .--> (f . x)) implies f . e = (x .--> (f . x)) . e ) & ( not e in dom (x .--> (f . x)) implies f . e = g . e ) ) proof let e be set ; ::_thesis: ( e in (dom g) \/ (dom (x .--> (f . x))) implies ( ( e in dom (x .--> (f . x)) implies f . e = (x .--> (f . x)) . e ) & ( not e in dom (x .--> (f . x)) implies f . e = g . e ) ) ) assume A4: e in (dom g) \/ (dom (x .--> (f . x))) ; ::_thesis: ( ( e in dom (x .--> (f . x)) implies f . e = (x .--> (f . x)) . e ) & ( not e in dom (x .--> (f . x)) implies f . e = g . e ) ) thus ( e in dom (x .--> (f . x)) implies f . e = (x .--> (f . x)) . e ) ::_thesis: ( not e in dom (x .--> (f . x)) implies f . e = g . e ) proof assume e in dom (x .--> (f . x)) ; ::_thesis: f . e = (x .--> (f . x)) . e then e in {x} by FUNCOP_1:13; then e = x by TARSKI:def_1; hence f . e = (x .--> (f . x)) . e by FUNCOP_1:72; ::_thesis: verum end; assume not e in dom (x .--> (f . x)) ; ::_thesis: f . e = g . e then not e in {x} by FUNCOP_1:13; then e <> x by TARSKI:def_1; hence f . e = g . e by A1, A4; ::_thesis: verum end; hence f = g +* (x .--> (f . x)) by A3, FUNCT_4:def_1 .= g +* (x,(f . x)) by A2, Def3 ; ::_thesis: verum end; theorem Th130: :: FUNCT_7:130 for A being set for f being Function for g being b1 -defined Function holds f,f +* g equal_outside A proof let A be set ; ::_thesis: for f being Function for g being A -defined Function holds f,f +* g equal_outside A let f be Function; ::_thesis: for g being A -defined Function holds f,f +* g equal_outside A let g be A -defined Function; ::_thesis: f,f +* g equal_outside A dom g c= A ; hence f,f +* g equal_outside A by Th29; ::_thesis: verum end; theorem :: FUNCT_7:131 for A being set for f, g being b1 -defined Function holds f,g equal_outside A proof let A be set ; ::_thesis: for f, g being A -defined Function holds f,g equal_outside A let f, g be A -defined Function; ::_thesis: f,g equal_outside A A1: (dom g) \ A = {} by XBOOLE_1:37; (dom f) \ A = {} by XBOOLE_1:37; hence f | ((dom f) \ A) = {} .= g | ((dom g) \ A) by A1 ; :: according to FUNCT_7:def_2 ::_thesis: verum end; theorem :: FUNCT_7:132 for A being set for f, g being b1 -defined Function for h being Function holds h +* f,h +* g equal_outside A proof let A be set ; ::_thesis: for f, g being A -defined Function for h being Function holds h +* f,h +* g equal_outside A let f, g be A -defined Function; ::_thesis: for h being Function holds h +* f,h +* g equal_outside A let h be Function; ::_thesis: h +* f,h +* g equal_outside A h,h +* f equal_outside A by Th130; then A1: h +* f,h equal_outside A by Th26; h,h +* g equal_outside A by Th130; hence h +* f,h +* g equal_outside A by A1, Th27; ::_thesis: verum end; theorem :: FUNCT_7:133 for m being Element of NAT for I being NAT -defined Function holds card (Shift (I,m)) = card I proof let m be Element of NAT ; ::_thesis: for I being NAT -defined Function holds card (Shift (I,m)) = card I defpred S1[ set ] means verum; deffunc H1( Element of NAT ) -> Element of NAT = $1; let I be NAT -defined Function; ::_thesis: card (Shift (I,m)) = card I A1: for x being set st x in dom I holds ex d being Element of NAT st x = H1(d) ; defpred S2[ Element of NAT ] means $1 in dom I; deffunc H2( Element of NAT ) -> Element of NAT = $1 + m; set B = { l where l is Element of NAT : H1(l) in dom I } ; set C = { H2(l) where l is Element of NAT : ( l in { n where n is Element of NAT : S2[n] } & S1[l] ) } ; set D = { H2(l) where l is Element of NAT : l in { l where l is Element of NAT : H1(l) in dom I } } ; set E = { (l + m) where l is Element of NAT : l in dom I } ; A2: for d1, d2 being Element of NAT st H1(d1) = H1(d2) holds d1 = d2 ; A3: dom I, { l where l is Element of NAT : H1(l) in dom I } are_equipotent from FUNCT_7:sch_3(A1, A2); A4: { H2(l) where l is Element of NAT : ( l in { n where n is Element of NAT : S2[n] } & S1[l] ) } c= { (l + m) where l is Element of NAT : l in dom I } proof let e be set ; :: according to TARSKI:def_3 ::_thesis: ( not e in { H2(l) where l is Element of NAT : ( l in { n where n is Element of NAT : S2[n] } & S1[l] ) } or e in { (l + m) where l is Element of NAT : l in dom I } ) assume e in { H2(l) where l is Element of NAT : ( l in { n where n is Element of NAT : S2[n] } & S1[l] ) } ; ::_thesis: e in { (l + m) where l is Element of NAT : l in dom I } then consider l being Element of NAT such that A5: e = H2(l) and A6: ( l in { n where n is Element of NAT : S2[n] } & S1[l] ) ; ex n being Element of NAT st ( n = l & S2[n] ) by A6; hence e in { (l + m) where l is Element of NAT : l in dom I } by A5; ::_thesis: verum end; set B = { l where l is Element of NAT : S2[l] } ; { l where l is Element of NAT : S2[l] } is Subset of NAT from DOMAIN_1:sch_7(); then A7: { l where l is Element of NAT : S2[l] } c= NAT ; set B = { l where l is Element of NAT : l in dom I } ; A8: for d1, d2 being Element of NAT st H2(d1) = H2(d2) holds d1 = d2 ; A9: { l where l is Element of NAT : l in dom I } , { H2(l) where l is Element of NAT : l in { l where l is Element of NAT : H1(l) in dom I } } are_equipotent from FUNCT_7:sch_4(A7, A8); A10: { (l + m) where l is Element of NAT : l in dom I } c= { H2(l) where l is Element of NAT : l in { l where l is Element of NAT : H1(l) in dom I } } proof let e be set ; :: according to TARSKI:def_3 ::_thesis: ( not e in { (l + m) where l is Element of NAT : l in dom I } or e in { H2(l) where l is Element of NAT : l in { l where l is Element of NAT : H1(l) in dom I } } ) assume e in { (l + m) where l is Element of NAT : l in dom I } ; ::_thesis: e in { H2(l) where l is Element of NAT : l in { l where l is Element of NAT : H1(l) in dom I } } then consider l being Element of NAT such that A11: e = l + m and A12: l in dom I ; l in { l where l is Element of NAT : l in dom I } by A12; hence e in { H2(l) where l is Element of NAT : l in { l where l is Element of NAT : H1(l) in dom I } } by A11; ::_thesis: verum end; A13: dom (Shift (I,m)) = { (l + m) where l is Element of NAT : l in dom I } by VALUED_1:def_12; A14: { H2(l) where l is Element of NAT : l in { l where l is Element of NAT : H1(l) in dom I } } c= { H2(l) where l is Element of NAT : ( l in { n where n is Element of NAT : S2[n] } & S1[l] ) } proof let e be set ; :: according to TARSKI:def_3 ::_thesis: ( not e in { H2(l) where l is Element of NAT : l in { l where l is Element of NAT : H1(l) in dom I } } or e in { H2(l) where l is Element of NAT : ( l in { n where n is Element of NAT : S2[n] } & S1[l] ) } ) assume e in { H2(l) where l is Element of NAT : l in { l where l is Element of NAT : H1(l) in dom I } } ; ::_thesis: e in { H2(l) where l is Element of NAT : ( l in { n where n is Element of NAT : S2[n] } & S1[l] ) } then ex l being Element of NAT st ( e = H2(l) & l in { l where l is Element of NAT : l in dom I } ) ; hence e in { H2(l) where l is Element of NAT : ( l in { n where n is Element of NAT : S2[n] } & S1[l] ) } ; ::_thesis: verum end; then { (l + m) where l is Element of NAT : l in dom I } c= { H2(l) where l is Element of NAT : ( l in { n where n is Element of NAT : S2[n] } & S1[l] ) } by A10, XBOOLE_1:1; then A15: { H2(l) where l is Element of NAT : ( l in { n where n is Element of NAT : S2[n] } & S1[l] ) } = { (l + m) where l is Element of NAT : l in dom I } by A4, XBOOLE_0:def_10; then { H2(l) where l is Element of NAT : ( l in { n where n is Element of NAT : S2[n] } & S1[l] ) } = { H2(l) where l is Element of NAT : l in { l where l is Element of NAT : H1(l) in dom I } } by A10, A14, XBOOLE_0:def_10; then A16: dom (Shift (I,m)), dom I are_equipotent by A3, A15, A9, A13, WELLORD2:15; thus card (Shift (I,m)) = card (dom (Shift (I,m))) by CARD_1:62 .= card (dom I) by A16, CARD_1:5 .= card I by CARD_1:62 ; ::_thesis: verum end; theorem Th134: :: FUNCT_7:134 for A, B being set for f, g being Function st dom f = dom g & dom f c= A \/ B & f | B = g | B holds f,g equal_outside A proof let A, B be set ; ::_thesis: for f, g being Function st dom f = dom g & dom f c= A \/ B & f | B = g | B holds f,g equal_outside A let f, g be Function; ::_thesis: ( dom f = dom g & dom f c= A \/ B & f | B = g | B implies f,g equal_outside A ) assume that A1: dom f = dom g and A2: dom f c= A \/ B ; ::_thesis: ( not f | B = g | B or f,g equal_outside A ) assume f | B = g | B ; ::_thesis: f,g equal_outside A hence f | ((dom f) \ A) = g | ((dom g) \ A) by A1, A2, RELAT_1:153, XBOOLE_1:43; :: according to FUNCT_7:def_2 ::_thesis: verum end; theorem Th135: :: FUNCT_7:135 for B, A being set for f, g being Function st dom f = dom g & B c= dom f & A misses B & f,g equal_outside A holds f | B = g | B proof let B, A be set ; ::_thesis: for f, g being Function st dom f = dom g & B c= dom f & A misses B & f,g equal_outside A holds f | B = g | B let f, g be Function; ::_thesis: ( dom f = dom g & B c= dom f & A misses B & f,g equal_outside A implies f | B = g | B ) assume that A1: dom f = dom g and A2: ( B c= dom f & A misses B ) ; ::_thesis: ( not f,g equal_outside A or f | B = g | B ) assume f | ((dom f) \ A) = g | ((dom g) \ A) ; :: according to FUNCT_7:def_2 ::_thesis: f | B = g | B hence f | B = g | B by A1, A2, RELAT_1:153, XBOOLE_1:86; ::_thesis: verum end; theorem :: FUNCT_7:136 for I, A, B being set for X, Y being ManySortedSet of I st I c= A \/ B & X | B = Y | B holds X,Y equal_outside A proof let I, A, B be set ; ::_thesis: for X, Y being ManySortedSet of I st I c= A \/ B & X | B = Y | B holds X,Y equal_outside A let X, Y be ManySortedSet of I; ::_thesis: ( I c= A \/ B & X | B = Y | B implies X,Y equal_outside A ) ( dom X = I & dom Y = I ) by PARTFUN1:def_2; hence ( I c= A \/ B & X | B = Y | B implies X,Y equal_outside A ) by Th134; ::_thesis: verum end; theorem :: FUNCT_7:137 for B, I, A being set for X, Y being ManySortedSet of I st B c= I & A misses B & X,Y equal_outside A holds X | B = Y | B proof let B, I, A be set ; ::_thesis: for X, Y being ManySortedSet of I st B c= I & A misses B & X,Y equal_outside A holds X | B = Y | B let X, Y be ManySortedSet of I; ::_thesis: ( B c= I & A misses B & X,Y equal_outside A implies X | B = Y | B ) ( dom X = I & dom Y = I ) by PARTFUN1:def_2; hence ( B c= I & A misses B & X,Y equal_outside A implies X | B = Y | B ) by Th135; ::_thesis: verum end; registration let V be non empty set ; let f be V -valued Function; let x be set ; let y be Element of V; clusterf +* (x,y) -> V -valued ; coherence f +* (x,y) is V -valued proof A1: rng (f +* (x,y)) c= (rng f) \/ {y} by Th100; thus rng (f +* (x,y)) c= V by A1, XBOOLE_1:1; :: according to RELAT_1:def_19 ::_thesis: verum end; end; theorem :: FUNCT_7:138 for f, g being Function for x, y being set st f c= g & not x in dom f holds f c= g +* (x,y) proof let f, g be Function; ::_thesis: for x, y being set st f c= g & not x in dom f holds f c= g +* (x,y) let x, y be set ; ::_thesis: ( f c= g & not x in dom f implies f c= g +* (x,y) ) assume A1: f c= g ; ::_thesis: ( x in dom f or f c= g +* (x,y) ) assume not x in dom f ; ::_thesis: f c= g +* (x,y) then A2: f c= f +* (x .--> y) by FUNCT_4:107; percases ( x in dom g or not x in dom g ) ; suppose x in dom g ; ::_thesis: f c= g +* (x,y) then g +* (x,y) = g +* (x .--> y) by Def3; then f +* (x .--> y) c= g +* (x,y) by A1, FUNCT_4:123; hence f c= g +* (x,y) by A2, XBOOLE_1:1; ::_thesis: verum end; suppose not x in dom g ; ::_thesis: f c= g +* (x,y) hence f c= g +* (x,y) by A1, Def3; ::_thesis: verum end; end; end; theorem :: FUNCT_7:139 for I being non empty set for X being ManySortedSet of I for l1, l2 being Element of I for i1, i2 being set holds X +* ((l1,l2) --> (i1,i2)) = (X +* (l1,i1)) +* (l2,i2) proof let I be non empty set ; ::_thesis: for X being ManySortedSet of I for l1, l2 being Element of I for i1, i2 being set holds X +* ((l1,l2) --> (i1,i2)) = (X +* (l1,i1)) +* (l2,i2) let X be ManySortedSet of I; ::_thesis: for l1, l2 being Element of I for i1, i2 being set holds X +* ((l1,l2) --> (i1,i2)) = (X +* (l1,i1)) +* (l2,i2) let l1, l2 be Element of I; ::_thesis: for i1, i2 being set holds X +* ((l1,l2) --> (i1,i2)) = (X +* (l1,i1)) +* (l2,i2) let i1, i2 be set ; ::_thesis: X +* ((l1,l2) --> (i1,i2)) = (X +* (l1,i1)) +* (l2,i2) A1: dom X = I by PARTFUN1:def_2; then A2: l1 in dom X ; dom (X +* (l1,i1)) = I by A1, Th30; then A3: l2 in dom (X +* (l1,i1)) ; thus X +* ((l1,l2) --> (i1,i2)) = X +* ((l1 .--> i1) +* (l2 .--> i2)) .= (X +* (l1 .--> i1)) +* (l2 .--> i2) by FUNCT_4:14 .= (X +* (l1,i1)) +* (l2 .--> i2) by A2, Def3 .= (X +* (l1,i1)) +* (l2,i2) by A3, Def3 ; ::_thesis: verum end;