:: Miscellaneous Facts about Functions
:: by Grzegorz Bancerek and Andrzej Trybulec
::
:: Received January 12, 1996
:: Copyright (c) 1996-2016 Association of Mizar Users
:: (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland).
:: This code can be distributed under the GNU General Public Licence
:: version 3.0 or later, or the Creative Commons Attribution-ShareAlike
:: License version 3.0 or later, subject to the binding interpretation
:: detailed in file COPYING.interpretation.
:: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these
:: licenses, or see http://www.gnu.org/licenses/gpl.html and
:: http://creativecommons.org/licenses/by-sa/3.0/.
environ
vocabularies NUMBERS, SUBSET_1, FUNCT_1, RELAT_1, TARSKI, XBOOLE_0, FUNCOP_1,
PBOOLE, ZFMISC_1, FUNCT_4, FINSEQ_1, ARYTM_3, CARD_1, NAT_1, XXREAL_0,
FINSET_1, SETFAM_1, FINSEQ_2, ORDINAL4, MCART_1, PARTFUN1, REWRITE1,
FUNCT_2, ARYTM_1, RFINSEQ, CLASSES1, FUNCT_7, VALUED_1, ORDINAL1;
notations TARSKI, XBOOLE_0, ZFMISC_1, ENUMSET1, XTUPLE_0, SUBSET_1, CARD_1,
WELLORD2, ORDINAL1, NUMBERS, XCMPLX_0, XXREAL_0, NAT_1, SETFAM_1, PBOOLE,
DOMAIN_1, RELAT_1, FUNCT_1, RELSET_1, BINOP_1, FINSET_1, PARTFUN1,
FUNCOP_1, FUNCT_2, FINSEQ_1, FINSEQ_2, FUNCT_4, CLASSES1, RFINSEQ, NAT_D,
REWRITE1, VALUED_1;
constructors SETFAM_1, PARTFUN1, WELLORD2, BINOP_1, DOMAIN_1, FUNCT_4,
XXREAL_0, NAT_1, INT_1, PBOOLE, RFINSEQ, NAT_D, REWRITE1, RELAT_2,
REAL_1, CLASSES1, RELSET_1, VALUED_1, FINSEQ_2, XTUPLE_0;
registrations XBOOLE_0, SUBSET_1, RELAT_1, FUNCT_1, ORDINAL1, PARTFUN1,
FUNCOP_1, FUNCT_4, XREAL_0, NAT_1, INT_1, CARD_1, FINSEQ_1, FUNCT_2,
RELSET_1, XXREAL_0, XTUPLE_0, FINSEQ_3;
requirements NUMERALS, REAL, BOOLE, SUBSET, ARITHM;
definitions TARSKI, XBOOLE_0, RELAT_1, FUNCT_1, FUNCOP_1;
equalities TARSKI, RELAT_1, FUNCOP_1, BINOP_1, FINSEQ_2, FUNCT_4, ORDINAL1;
expansions TARSKI, XBOOLE_0, FUNCT_1, FUNCOP_1;
theorems FINSEQ_1, RELAT_1, TARSKI, AXIOMS, ZFMISC_1, INT_1, FUNCT_1,
FINSEQ_2, FUNCT_4, SUBSET_1, FINSET_1, CARD_1, NAT_1, FUNCT_2, FUNCOP_1,
SETFAM_1, FINSEQ_3, ENUMSET1, REWRITE1, FINSEQ_4, RELSET_1, XBOOLE_0,
XBOOLE_1, PARTFUN1, GRFUNC_1, XREAL_1, XXREAL_0, ORDINAL1, RFINSEQ,
FINSEQ_5, NAT_D, WELLORD2, VALUED_1, XTUPLE_0;
schemes NAT_1, DOMAIN_1, CLASSES1, FRAENKEL, FINSEQ_1, RECDEF_1, FUNCT_2;
begin :: Preliminaries
reserve a,x,y for object, A,B for set,
l,m,n for Nat;
theorem
for f being Function, X being set st rng f c= X holds (id X)*f = f
proof
let f be Function, X be set;
assume rng f c= X;
then reconsider g = f as Function of dom f, X by FUNCT_2:2;
(id X)*g = g by FUNCT_2:17;
hence thesis;
end;
theorem
for X being set, Y being non empty set, f being Function of X,Y st f
is one-to-one for B being Subset of X, C being Subset of Y st C c= f.:B holds f
"C c= B
proof
let X be set, Y be non empty set, f be Function of X,Y such that
A1: f is one-to-one;
let B be Subset of X, C be Subset of Y;
assume C c= f.:B;
then
A2: f"C c= f"(f.:B) by RELAT_1:143;
f"(f.:B) c= B by A1,FUNCT_1:82;
hence thesis by A2;
end;
theorem Th3:
for X,Y be non empty set, f being Function of X,Y st f is
one-to-one for x being Element of X, A being Subset of X st f.x in f.:A holds x
in A
proof
let X,Y be non empty set, f be Function of X,Y such that
A1: f is one-to-one;
let x be Element of X, A be Subset of X;
assume f.x in f.:A;
then ex y be Element of X st y in A & f.y = f.x by FUNCT_2:65;
hence thesis by A1,FUNCT_2:19;
end;
theorem Th4:
for X,Y be non empty set, f being Function of X,Y st f is
one-to-one for x being Element of X, A being Subset of X, 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, f be Function of X,Y such that
A1: f is one-to-one;
let x be Element of X, A be Subset of X, B be Subset of Y;
assume
A2: f.x in f.:A \ B;
A3: now
assume x in f"B;
then f.x in B by FUNCT_1:def 7;
hence contradiction by A2,XBOOLE_0:def 5;
end;
f.x in f.:A by A2,XBOOLE_0:def 5;
then x in A by A1,Th3;
hence thesis by A3,XBOOLE_0:def 5;
end;
theorem
for X,Y be non empty set, f being Function of X,Y st f is one-to-one
for y being Element of Y, A being Subset of X, 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, f be Function of X,Y such that
A1: f is one-to-one;
let y be Element of Y, A be Subset of X, B be Subset of Y;
assume
A2: y in f.:A \ 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 thesis by A1,A2,Th4;
end;
theorem Th6:
for f being Function, a being set st a in dom f holds f|{a} = a
.--> f.a
proof
let f be Function, a be set;
assume a in dom f;
hence f|{a} = {[a,f.a]} by GRFUNC_1:28
.= a .--> f.a by ZFMISC_1:29;
end;
registration
let x,y be object;
cluster x .--> y -> non empty;
coherence;
end;
registration
let x,y,a,b be object;
cluster (x,y) --> (a,b) -> non empty;
coherence;
end;
theorem Th7:
for I being set, M being ManySortedSet of I for i being set st i
in I holds i.--> (M.i) = M|{i}
proof
let I be set, M be ManySortedSet of I, i be set;
assume i in I;
then i in dom M by PARTFUN1:def 2;
hence thesis by Th6;
end;
theorem
for I,J being set, 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}:] qua set)
proof
let I,J be set, M be ManySortedSet of [:I,J:];
let i,j be set;
assume i in I & j in 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]} qua set) by A1,Th7
.= M|([:{i},{j}:] qua set) by ZFMISC_1:29;
end;
theorem Th9:
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 such that
A1: rng h c= dom f;
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)
proof
let x be object;
assume
A5: x in dom(f*(g +* 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;
per cases;
suppose
A8: x in dom h;
then h.x in dom f by A6,FUNCT_4:13;
then x in dom(f*h) by A8,FUNCT_1:11;
hence thesis by XBOOLE_0:def 3;
end;
suppose
not x in dom 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 thesis by XBOOLE_0:def 3;
end;
end;
let x be object;
assume
A9: x in dom(f*g) \/ dom(f*h);
per cases;
suppose
A10: x in dom(f*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 thesis by A2,A12,A11,FUNCT_1:11;
end;
suppose
A13: not x in dom(f*h);
x in dom h implies h.x in dom f
proof
assume x in dom h;
then h.x in rng h by FUNCT_1:3;
hence thesis by A1;
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 thesis by A3,A14,FUNCT_1:11;
end;
end;
now
let x be object;
assume
A15: x in dom(f*g) \/ dom(f*h);
thus x in dom(f*h) implies (f*(g +* h)).x = (f*h).x
proof
assume x in dom(f*h);
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;
end;
assume
A17: not x in dom(f*h);
x in dom h implies h.x in dom f
proof
assume x in dom h;
then h.x in rng h by FUNCT_1:3;
hence thesis by A1;
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;
end;
hence thesis by A4,FUNCT_4:def 1;
end;
theorem Th10:
for f,g,h being Function holds (g +* h)*f = (g*f) +* (h*f)
proof
let f,g,h be Function;
A1: dom((g +* h)*f) = dom(g*f) \/ dom(h*f)
proof
thus dom((g +* h)*f) c= dom(g*f) \/ dom(h*f)
proof
let x be object;
assume
A2: x in dom((g +* 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 thesis by XBOOLE_0:def 3;
end;
let x be object;
assume x in dom(g*f) \/ dom(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 thesis by A5,FUNCT_1:11;
end;
now
let x be object;
assume x in dom(g*f) \/ dom(h*f);
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
assume
A7: x in dom(h*f);
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;
end;
assume not x in dom(h*f);
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;
end;
hence thesis by A1,FUNCT_4:def 1;
end;
theorem
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;
assume
A1: rng f misses dom g;
thus (h +* g)*f = (h*f) +* (g*f) by Th10
.= h*f +* {} by A1,RELAT_1:44
.= h*f;
end;
theorem Th12:
for A,B be set, y be set st A meets rng(id B +* (A --> y)) holds
y in A
proof
let A,B be set, y be set;
assume A meets rng(id B +* (A --> y));
then consider x being object such that
A1: x in A and
A2: x in rng(id B +* (A --> y)) by XBOOLE_0:3;
consider z being object 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;
per cases;
suppose
A6: z in dom(A --> y);
then y = (A --> y).z by FUNCOP_1:7
.= x by A4,A6,FUNCT_4:13;
hence thesis by A1;
end;
suppose
A7: not z in dom(A --> y);
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 thesis by A1,A7,FUNCOP_1:13;
end;
end;
theorem
for x,y be set, A be set st x <> y holds not x in rng(id A +* (x .-->
y))
proof
let x,y be set, A be set;
assume x <> y;
then not y in {x} by TARSKI:def 1;
then {x} misses rng(id A +* ({x} --> y)) by Th12;
hence thesis by ZFMISC_1:48;
end;
theorem
for X being set, a being set, f being Function st dom f = X \/ {a}
holds f = f|X +* (a .--> f.a)
proof
let X be set, a be set, f be Function;
assume
A1: dom f = X \/ {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;
end;
theorem
for f being Function, X,y,z being set holds (f+*(X-->y))+*(X-->z) = f
+*(X-->z)
proof
let f be Function, X,y,z be set;
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
let x be object;
assume x in dom f \/ X;
per cases;
suppose
A5: x in X;
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;
end;
suppose
A6: not x in X;
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;
end;
end;
dom (f+*(X-->z)) = dom f \/ X by A1,FUNCT_4:def 1;
hence thesis by A3,A4;
end;
theorem
INT <> INT*
proof
now
A1: {} in 1 by CARD_1:49,TARSKI:def 1;
assume 1 in INT*;
then ex x,y being object st {} = [x,y] by A1,RELAT_1:def 1;
hence contradiction;
end;
hence thesis by INT_1:def 2;
end;
theorem
{}* = {{}}
proof
thus {}* c= {{}}
proof
let x be object;
assume x in {}*;
then reconsider f = x as FinSequence of {} by FINSEQ_1:def 11;
now
assume x <> {};
then ex x st x in dom f;
hence contradiction;
end;
hence thesis by ZFMISC_1:31;
end;
let x be object;
assume x in {{}};
then
A1: x = {} by TARSKI:def 1;
rng {} = {};
then x is FinSequence of {} by A1,FINSEQ_1:def 4;
hence thesis by FINSEQ_1:def 11;
end;
theorem Th18:
for x being object holds <*x*> in A* iff x in A
proof let x be object;
rng <*x*> = {x} by FINSEQ_1:38;
then {x} c= A iff <*x*> is FinSequence of A by FINSEQ_1:def 4;
hence thesis by FINSEQ_1:def 11,ZFMISC_1:31;
end;
theorem
A* c= B* implies A c= B
proof
assume
A1: A* c= B*;
let x be object;
assume x in A;
then <*x*> in A* by Th18;
hence thesis by A1,Th18;
end;
theorem
for A being Subset of NAT st for n,m st n in A & m < n holds m in A
holds A is Cardinal
proof
let A be Subset of NAT such that
A1: for n,m st n in A & m < n holds m in A;
per cases;
suppose
A = {};
hence thesis;
end;
suppose that
A2: A <> {} and
A3: ex m being Nat st for n being Nat st n in A holds n <= m;
defpred P[set] means $1 in A;
consider M being Nat such that
A4: for n being Nat st P[n] holds n <= M by A3;
ex m being Element of NAT st P[m] by A2,SUBSET_1:4;
then
A5: ex m being Nat st P[m];
consider m being Nat such that
A6: P[m] and
A7: for n being Nat st P[n] holds n <= m from NAT_1:sch 6(A4,A5);
A = { l where l is Nat : l < m+1 }
proof
thus A c= { l where l is Nat : l < m+1 }
proof
let x be object;
assume
A8: x in A;
then reconsider l = x as Nat;
l <= m by A7,A8;
then l < m+1 by NAT_1:13;
hence thesis;
end;
let x be object;
assume x in { l where l is Nat : l < m+1 };
then consider l being Nat such that
A9: x = l and
A10: l < m+1;
reconsider l as Nat;
l <= m by A10,NAT_1:13;
then l < m or l = m by XXREAL_0:1;
hence thesis by A1,A6,A9;
end;
hence thesis by AXIOMS:4;
end;
suppose
A11: for m being Nat ex n being Nat st n in A & n > m;
NAT c= A
proof
let x be object;
assume x in NAT;
then reconsider m = x as Nat;
ex n being Nat st n in A & n > m by A11;
hence thesis by A1;
end;
hence thesis by XBOOLE_0:def 10;
end;
end;
theorem
for A being finite set, X being non empty Subset-Family of A ex C
being Element of X st for B being Element of X holds B c= C implies B = C
proof
let A be finite set, X be non empty Subset-Family of A;
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 holds x c= B implies B = x by FINSET_1:6;
reconsider x as Subset of A by A1;
reconsider C = x` as Element of X by A1,SETFAM_1:def 7;
take C;
let B be Element of X such that
A3: B c= C;
B`` = B;
then B` in D by SETFAM_1:def 7;
then B` = x by A2,A3,SUBSET_1:16;
hence thesis;
end;
theorem Th22:
for p,q being FinSequence st len p = len q+1
for i being Nat holds i in dom q iff i in dom p & i+1 in dom p
proof
let p,q be FinSequence;
assume
A1: len p = len q+1;
let i be Nat;
hereby
assume
A2: i in dom q;
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;
end;
assume that
A6: i in dom p and
A7: i+1 in dom p;
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 thesis by A8,FINSEQ_3:25;
end;
registration
cluster Function-yielding non empty non-empty for FinSequence;
existence
proof
take p = <*<*0 qua set*>*>;
A1: dom p = {1} & p.1 = <*0*> by FINSEQ_1:2,38,40;
thus p is Function-yielding;
thus p is non empty;
let x be object;
assume x in dom p;
hence thesis by A1,TARSKI:def 1;
end;
end;
registration
cluster empty -> Function-yielding for Function;
coherence;
end;
registration
let n be Nat, f be Function;
cluster n |-> f -> Function-yielding;
coherence;
end;
registration
let p,q be Function-yielding FinSequence;
cluster p^q -> Function-yielding;
coherence
proof
let x be object;
assume
A1: x in dom (p^q);
then reconsider i = x as Nat;
per cases;
suppose
i in dom p;
then p.i = (p^q).i by FINSEQ_1:def 7;
hence thesis;
end;
suppose
not i in dom p;
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 thesis;
end;
end;
end;
theorem Th23:
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;
assume
A1: for x being object st x in dom (p^q) holds (p^q).x is Function;
hereby
let x be object;
assume
A2: x in dom p;
then (p^q).x = p.x by FINSEQ_1:def 7;
hence p.x is Function by A1,A2,FINSEQ_3:22;
end;
let x be object;
assume
A3: x in dom q;
then reconsider i = x as Nat;
(p^q).(len p+i) = q.x by A3,FINSEQ_1:def 7;
hence thesis by A1,A3,FINSEQ_1:28;
end;
begin :: Some useful schemes
scheme
Kappa2D{ X,Y,Z()->non empty set,F(Element of X(),Element of Y())->object}:
ex f being Function of [:X(),Y():], Z() st
for x being Element of X(), y being Element of Y() holds f.(x,y)=F(x,y)
provided
A1: for x being Element of X(), y being Element of Y() holds F(x,y) in Z
()
proof
deffunc G(Element of [:X(),Y():]) = F($1`1,$1`2);
A2: for p being Element of [:X(),Y():] holds G(p) in Z() by A1;
consider f being Function of [:X(),Y():], Z() such that
A3: for p being Element of [:X(),Y():] holds f.p = G(p) from FUNCT_2:sch
8(A2);
take f;
let x be Element of X(), y be Element of Y();
[x,y]`1 = x & [x,y]`2 = y;
hence thesis by A3;
end;
scheme
FinMono{ A() -> set, D() -> non empty set, F,G(object) -> object }:
{ F(d) where d
is Element of D() : G(d) in A() } is finite
provided
A1: A() is finite and
A2: for d1,d2 being Element of D() st G(d1) = G(d2) holds d1 = d2
proof
per cases;
suppose
A3: A() = {};
now
set a =the Element of { F(d) where d is Element of D() : G(d) in A () };
assume { F(d) where d is Element of D() : G(d) in A() } <> {};
then a in { F(d) where d is Element of D() : G(d) in A() };
then ex d being Element of D() st a = F(d) & G(d) in A();
hence contradiction by A3;
end;
hence thesis;
end;
suppose
A() <> {};
then reconsider D = A() as non empty set;
defpred R[set] means ex d being Element of D() st $1 = G(d);
set B = { d where d is Element of D() : G(d) in D}, C = { a where a is
Element of D: R[a]};
A4: { F(d) where d is Element of D() : G(d) in A() } = { F(d) where d is
Element of D(): d in B}
proof
thus { F(d) where d is Element of D() : G(d) in A() } c= { F(d) where d
is Element of D(): d in B}
proof
let x be object;
assume x in { F(d) where d is Element of D() : G(d) in A() };
then consider d9 being Element of D() such that
A5: x = F(d9) and
A6: G(d9) in A();
d9 in B by A6;
hence thesis by A5;
end;
let x be object;
assume x in { F(d) where d is Element of D(): d in B};
then consider d1 being Element of D() such that
A7: x = F(d1) and
A8: d1 in B;
ex d3 being Element of D() st d3 = d1 & G(d3) in D by A8;
hence thesis by A7;
end;
A9: C,B are_equipotent
proof
take Z = the set of all [G(d),d] where d is Element of D();
hereby
let x be object;
assume x in C;
then consider a being Element of D such that
A10: a = x and
A11: ex d being Element of D() st a = G(d);
consider d being Element of D() such that
A12: a = G(d) by A11;
reconsider d as object;
take d;
thus d in B & [x,d] in Z by A10,A12;
end;
hereby
let y be object;
assume y in B;
then consider d being Element of D() such that
A13: d = y & G(d) in D;
reconsider x = G(d) as object;
take x;
thus x in C & [x,y] in Z by A13;
end;
let x,y,z,u be object;
assume [x,y] in Z;
then consider d1 being Element of D() such that
A14: [x,y] = [G(d1),d1];
assume [z,u] in Z;
then consider d2 being Element of D() such that
A15: [z,u] = [G(d2),d2];
A16: z = G(d2) & u = d2 by A15,XTUPLE_0:1;
x = G(d1) & y = d1 by A14,XTUPLE_0:1;
hence thesis by A2,A16;
end;
C is Subset of D from DOMAIN_1:sch 7;
then C is finite by A1,FINSET_1:1;
then
A17: B is finite by A9,CARD_1:38;
{ F(d) where d is Element of D(): d in B} is finite from FRAENKEL:sch
21(A17);
hence thesis by A4;
end;
end;
scheme
CardMono{ A() -> set, D() -> non empty set, G(object) -> object }:
A(),{ d where d is Element of D() : G(d) in A() } are_equipotent
provided
A1: for x being set st x in A() ex d being Element of D() st x = G(d) and
A2: for d1,d2 being Element of D() st G(d1) = G(d2) holds d1 = d2
proof
set D = { d where d is Element of D() : G(d) in A() };
per cases;
suppose
A3: A() = {};
now
set a =the Element of D;
assume D <> {};
then a in D;
then ex d being Element of D() st a = d & G(d) in A();
hence contradiction by A3;
end;
hence thesis by A3;
end;
suppose
A() <> {};
then reconsider A = A() as non empty set;
A,D are_equipotent
proof
take Z = the set of all [G(d),d] where d is Element of D();
hereby
let x be object;
assume
A4: x in A;
then consider d being Element of D() such that
A5: x = G(d) by A1;
reconsider d as object;
take d;
thus d in D by A4,A5;
thus [x,d] in Z by A5;
end;
hereby
let y be object;
assume y in D;
then consider d being Element of D() such that
A6: d = y & G(d) in A;
reconsider x = G(d) as object;
take x;
thus x in A & [x,y] in Z by A6;
end;
let x,y,z,u be object;
assume [x,y] in Z;
then consider d1 being Element of D() such that
A7: [x,y] = [G(d1),d1];
assume [z,u] in Z;
then consider d2 being Element of D() such that
A8: [z,u] = [G(d2),d2];
A9: z = G(d2) & u = d2 by A8,XTUPLE_0:1;
x = G(d1) & y = d1 by A7,XTUPLE_0:1;
hence thesis by A2,A9;
end;
hence thesis;
end;
end;
scheme
CardMono9{ A() -> set, D() -> non empty set, G(object) -> object }:
A(),{ G(d) where d is Element of D() : d in A() } are_equipotent
provided
A1: A() c= D() and
A2: for d1,d2 being Element of D() st G(d1) = G(d2) holds d1 = d2;
per cases;
suppose
A3: A() = {};
now
set a =the Element of { G(d) where d is Element of D() : d in A() };
assume { G(d) where d is Element of D() : d in A() } <> {};
then a in { G(d) where d is Element of D() : d in A() };
then ex d being Element of D() st a = G(d) & d in A();
hence contradiction by A3;
end;
hence thesis by A3;
end;
suppose
A() <> {};
then reconsider A = A() as non empty set;
set D = { G(d) where d is Element of D() : d in A };
A,D are_equipotent
proof
take Z = the set of all [d,G(d)] where d is Element of D();
hereby
let x be object;
assume
A4: x in A;
then reconsider d = x as Element of D() by A1;
reconsider y = G(d) as object;
take y;
thus y in D by A4;
thus [x,y] in Z;
end;
hereby
let y be object;
assume y in D;
then consider d being Element of D() such that
A5: G(d) = y & d in A;
reconsider d as object;
take d;
thus d in A & [d,y] in Z by A5;
end;
let x,y,z,u be object;
assume [x,y] in Z;
then consider d1 being Element of D() such that
A6: [x,y] = [d1,G(d1)];
assume [z,u] in Z;
then consider d2 being Element of D() such that
A7: [z,u] = [d2,G(d2)];
A8: z = d2 & u = G(d2) by A7,XTUPLE_0:1;
x = d1 & y = G(d1) by A6,XTUPLE_0:1;
hence thesis by A2,A8;
end;
hence thesis;
end;
end;
scheme
FuncSeqInd {P[object]}: for p being Function-yielding FinSequence holds P[p]
provided
A1: P[ {} ] and
A2: for p being Function-yielding FinSequence st P[p] for f being
Function holds P[p^<*f*>]
proof
defpred R[FinSequence] means $1 is Function-yielding implies P[ $1];
A3: for p being FinSequence, x being object st R[p] holds R[p^<*x*>]
proof
let p be FinSequence, x be object such that
A4: p is Function-yielding implies P[p] and
A5: p^<*x*> is Function-yielding;
A6: <*x*>.1 = x by FINSEQ_1:40;
p is Function-yielding & <*x*> is Function-yielding by A5,Th23;
hence thesis by A2,A4,A6;
end;
A7: R[{}] by A1;
for p being FinSequence holds R[p] from FINSEQ_1:sch 3(A7,A3);
hence thesis;
end;
begin :: Some auxiliary concepts
definition
::$CD
let f,g be Function;
let A be set;
pred f,g equal_outside A means
f|(dom f \ A) = g|(dom g \ A);
end;
::$CT
theorem
for f be Function, A be set holds f,f equal_outside A;
theorem Th25:
for f,g be Function, A be set st f,g equal_outside A holds g,f
equal_outside A;
theorem
for f,g,h be Function, A be set st f,g equal_outside A & g,h
equal_outside A holds f,h equal_outside A;
theorem Th27:
for f,g be Function, A be set st f,g equal_outside A holds dom f
\ A = dom g \ A
proof
let f,g be Function, A be set;
assume
A1: f|(dom f \ A) = g|(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;
end;
theorem Th28:
for f,g being Function, A be set st dom g c= A holds f, f +* g
equal_outside A
proof
let f,g be Function, A be set;
assume
A1: dom g c= 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;
end;
definition
let f be Function, i, x be object;
func f+*(i,x) -> Function equals
:Def2:
f+*(i.-->x) if i in dom f otherwise
f;
correctness;
end;
theorem Th29:
for f be Function, d,i be object holds dom(f+*(i,d)) = dom f
proof
let f be Function, x,i be object;
per cases;
suppose
A1: i in dom f;
then
A2: {i} c= dom f by ZFMISC_1:31;
thus dom(f+*(i,x)) = dom(f+*(i.-->x)) by A1,Def2
.= dom f \/ dom(i.-->x) by FUNCT_4:def 1
.= dom f \/ {i} by FUNCOP_1:13
.= dom f by A2,XBOOLE_1:12;
end;
suppose
not i in dom f;
hence thesis by Def2;
end;
end;
registration
let f be empty Function, i, x be object;
cluster f+*(i,x) -> empty;
coherence
proof
dom f is empty;
then dom(f+*(i,x)) is empty by Th29;
hence thesis;
end;
end;
registration
let f be non empty Function, i, x be object;
cluster f+*(i,x) -> non empty;
coherence
proof
dom f is non empty;
then dom(f+*(i,x)) is non empty by Th29;
hence thesis;
end;
end;
theorem Th30:
for f be Function, d,i be object st i in dom f holds (f+*(i,d)).i = d
proof
let f be Function, d,i be object;
dom(i.-->d) = {i} by FUNCOP_1:13;
then
A1: i in dom(i.-->d) by TARSKI:def 1;
assume i in dom f;
hence (f+*(i,d)).i = (f+*(i.-->d)).i by Def2
.= (i.-->d).i by A1,FUNCT_4:13
.= d by FUNCOP_1:72;
end;
theorem Th31:
for f be Function, d,i,j be object st i <> j holds (f+*(i,d)).j = f.j
proof
let f be Function, d,i,j be object such that
A1: i <> j;
A2: not j in dom(i.-->d) by A1,TARSKI:def 1;
per cases;
suppose
i in dom f;
hence (f+*(i,d)).j = (f+*(i.-->d)).j by Def2
.= f.j by A2,FUNCT_4:11;
end;
suppose
not i in dom f;
hence thesis by Def2;
end;
end;
theorem
for f be Function, d,e,i,j be set st i <> j holds f+*(i,d)+*(j,e) = f
+*(j,e)+*(i,d)
proof
let f be Function, d,e,i,j be set such that
A1: i <> j;
per cases;
suppose that
A2: i in dom f and
A3: j in dom f;
A4: i in dom(f+*(j,e)) by A2,Th29;
A5: dom(i.-->d) = {i} & dom(j.-->e) = {j} by FUNCOP_1:13;
j in dom(f+*(i,d)) by A3,Th29;
hence f+*(i,d)+*(j,e) = f+*(i,d)+*(j.-->e) by Def2
.= f+*(i.-->d)+*(j.-->e) by A2,Def2
.= 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,Def2
.= f+*(j,e)+*(i,d) by A4,Def2;
end;
suppose that
i in dom f and
A6: not j in dom f;
not j in dom(f+*(i,d)) by A6,Th29;
hence f+*(i,d)+*(j,e) = f+*(i,d) by Def2
.= f+*(j,e)+*(i,d) by A6,Def2;
end;
suppose that
A7: not i in dom f and
j in dom f;
A8: not i in dom(f+*(j,e)) by A7,Th29;
thus f+*(i,d)+*(j,e) = f+*(j,e) by A7,Def2
.= f+*(j,e)+*(i,d) by A8,Def2;
end;
suppose that
A9: not i in dom f and
A10: not j in dom f;
A11: not i in dom(f+*(j,e)) by A9,Th29;
not j in dom(f+*(i,d)) by A10,Th29;
hence f+*(i,d)+*(j,e) = f+*(i,d) by Def2
.= f by A9,Def2
.= f+*(j,e) by A10,Def2
.= f+*(j,e)+*(i,d) by A11,Def2;
end;
end;
theorem
for f be Function, d,e,i be set holds f+*(i,d)+*(i,e) = f+*(i,e)
proof
let f be Function, d,e,i be set;
A1: dom(i.-->d) = {i} by FUNCOP_1:13
.= dom(i.-->e) by FUNCOP_1:13;
per cases;
suppose
A2: i in dom f;
then i in dom(f+*(i,d)) by Th29;
hence f+*(i,d)+*(i,e) = f+*(i,d)+*(i.-->e) by Def2
.= f+*(i.-->d)+*(i.-->e) by A2,Def2
.= f+*((i.-->d)+*(i.-->e)) by FUNCT_4:14
.= f+*(i.-->e) by A1,FUNCT_4:19
.= f+*(i,e) by A2,Def2;
end;
suppose
not i in dom f;
hence thesis by Def2;
end;
end;
theorem Th34:
for f be Function, i be set holds f+*(i,f.i) = f
proof
let f be Function, i be set;
per cases;
suppose
A1: i in dom f;
then
A2: i.-->f.i = f|{i} by Th6;
thus f+*(i,f.i) = f +*(i.-->f.i) by A1,Def2
.= f by A2,FUNCT_4:75;
end;
suppose
not i in dom f;
hence thesis by Def2;
end;
end;
registration
let f be FinSequence, i,x be object;
cluster f+*(i,x) -> FinSequence-like;
coherence
proof
dom(f+*(i,x)) = dom f by Th29
.= Seg len f by FINSEQ_1:def 3;
hence thesis by FINSEQ_1:def 2;
end;
end;
definition
let D be set, f be FinSequence of D, i be Nat, d be Element of D;
redefine func f+*(i,d) -> FinSequence of D;
coherence
proof
per cases;
suppose
A1: i in dom f;
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,Def2;
then rng(f+*(i,d)) c= rng f \/ rng(i.-->d) by FUNCT_4:17;
then rng(f+*(i,d)) c= D by A2;
hence thesis by FINSEQ_1:def 4;
end;
suppose
not i in dom f;
hence thesis by Def2;
end;
end;
end;
theorem
for D be non empty set, f be FinSequence of D, d be Element of D, i be
Nat st i in dom f holds (f+*(i,d))/.i = d
proof
let D be non empty set, f be FinSequence of D, d be Element of D, i be
Nat;
assume
A1: i in dom f;
then i in dom(f+*(i,d)) by Th29;
hence (f+*(i,d))/.i = (f+*(i,d)).i by PARTFUN1:def 6
.= d by A1,Th30;
end;
theorem
for D be non empty set, f be FinSequence of D, d be Element of D, i,j
be Nat st i <> j & j in dom f holds (f+*(i,d))/.j = f/.j
proof
let D be non empty set, f be FinSequence of D, d be Element of D, i,j be
Nat such that
A1: i <> j and
A2: j in dom f;
j in dom(f+*(i,d)) by A2,Th29;
hence (f+*(i,d))/.j = (f+*(i,d)).j by PARTFUN1:def 6
.= f.j by A1,Th31
.= f/.j by A2,PARTFUN1:def 6;
end;
theorem
for D be non empty set, f be FinSequence of D, d,e be Element of D, i
be Nat holds f+*(i,f/.i) = f
proof
let D be non empty set, f be FinSequence of D, d,e be Element of D, i be
Nat;
per cases;
suppose
i in dom f;
hence f+*(i,f/.i) = f+*(i,f.i) by PARTFUN1:def 6
.= f by Th34;
end;
suppose
not i in dom f;
hence thesis by Def2;
end;
end;
begin :: On the composition of a finite sequence of functions
definition
let X be set;
let p be Function-yielding FinSequence;
func compose(p,X) -> Function means
: Def3:
ex f being ManySortedFunction of
NAT st it = f.len p & f.0 = id X & for i being Nat st i+1 in dom p
for g,h being Function st g = f.i & h = p.(i+1) holds f.(i+1) = h*g;
uniqueness
proof
let g1,g2 be Function;
given f1 being ManySortedFunction of NAT such that
A1: g1 = f1.len p and
A2: f1.0 = id X and
A3: for i being Nat st i+1 in dom p for g,h being Function
st g = f1.i & h = p.(i+1) holds f1.(i+1) = h*g;
given f2 being ManySortedFunction of NAT such that
A4: g2 = f2.len p and
A5: f2.0 = id X and
A6: for i being Nat st i+1 in dom p for g,h being Function
st g = f2.i & h = p.(i+1) holds f2.(i+1) = h*g;
defpred R[Nat] means $1 <= len p implies f1.$1 = f2.$1 & f1.$1
is Function;
A7: for i being Nat st R[i] holds R[i+1]
proof
let i be Nat such that
A8: i <= len p implies f1.i = f2.i & f1.i is Function and
A9: i+1 <= len p;
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 thesis by A6,A8,A9,A10,NAT_1:13;
end;
A11: R[ 0 ] by A2,A5;
for i being Nat holds R[i] from NAT_1:sch 2(A11,A7);
hence thesis by A1,A4;
end;
correctness
proof
reconsider e = 0 as Function;
defpred P[Nat,set,set] means not $2 is 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 Nat for x being set ex y being set st P[n,x,y]
proof
let n be Nat, x be set;
reconsider h = p.(n+1) as Function;
per cases;
suppose
x is Function;
then reconsider g = x as Function;
take h*g;
thus thesis;
end;
suppose
A13: x is not Function;
take 0;
thus thesis by A13;
end;
end;
consider f being Function such that
A14: dom f = NAT & f.0 = id X and
A15: for n being Nat holds P[n,f.n,f.(n+1)] from RECDEF_1:
sch 1(A12);
defpred P[Nat] means f.$1 is Function;
A16: for i being Nat st P[i] holds P[i+1]
proof
let i be Nat;
reconsider h = p.(i+1) as Function;
assume f.i is Function;
then reconsider g = f.i as Function;
f.(i+1) = h*g by A15;
hence thesis;
end;
A17: P[ 0] by A14;
A18: for i being Nat holds P[i] from NAT_1:sch 2(A17,A16);
then reconsider F = f.len p as Function;
f is Function-yielding
by A14,A18;
then reconsider f as ManySortedFunction of NAT by A14,PARTFUN1:def 2
,RELAT_1:def 18;
take F;
take f;
thus F = f.len p & f.0 = id X by A14;
let i be Nat;
thus thesis by A15;
end;
end;
definition
let p be Function-yielding FinSequence;
let x be object;
func apply(p,x) -> FinSequence means
:Def4:
len it = len p+1 & it.1 = x &
for i being Nat, f being Function st i in dom p & f = p.i holds it.(
i+1) = f.(it.i);
existence
proof
defpred P[Nat,set,set] means ex f being Function st f = p.$1 &
$3 = f.$2;
A1: for i being Nat st 1 <= i & i < len p+1 for x being set ex
y being set st P[i,x,y]
proof
let i be Nat;
assume 1 <= i;
assume
i < len p+1;
reconsider f = p.i as Function;
let x be set;
take f.x, f;
thus thesis;
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 Nat st 1 <= i & i < len p+1 holds P[i,q.i,q
.(i+1)] from RECDEF_1:sch 3(A1);
take q;
thus len q = len p+1 & q.1 = x by A2;
let i be Nat, f be Function;
assume
A4: i in dom p;
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 thesis;
end;
correctness
proof
let q1, q2 be FinSequence such that
A6: len q1 = len p+1 and
A7: q1.1 = x and
A8: for i being Nat, 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 Nat, f being Function st i in dom p & f =
p.i holds q2.(i+1) = f.(q2.i);
defpred P[Nat] means $1 in dom q1 implies q1.$1 = q2.$1;
A12: for i being Nat st P[i] holds P[i+1]
proof
let i be Nat such that
A13: i in dom q1 implies q1.i = q2.i and
A14: i+1 in dom q1;
i+1 <= len q1 by A14,FINSEQ_3:25;
then
A15: i <= len p by A6,XREAL_1:6;
per cases;
suppose
i = 0;
hence thesis by A7,A10;
end;
suppose
A16: i > 0;
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;
end;
end;
A18: P[ 0] by FINSEQ_3:25;
A19: for i being Nat holds P[i] from NAT_1:sch 2(A18,A12);
dom q1 = dom q2 by A6,A9,FINSEQ_3:29;
hence thesis by A19;
end;
end;
reserve X,Y for set, x for object,
p,q for Function-yielding FinSequence,
f,g,h for Function;
theorem Th38:
compose({},X) = id X
proof
ex f being ManySortedFunction of NAT st compose({},X) = f.0 & f.0 = id X
& for i being Nat st i+1 in dom {} for g,h being Function st g = f.i
& h = {} .(i+1) holds f.(i+1) = h*g by Def3,CARD_1:27;
hence thesis;
end;
theorem Th39:
apply({},x) = <*x*>
proof
len apply({},x) = 0+1 & apply({},x).1 = x by Def4,CARD_1:27;
hence thesis by FINSEQ_1:40;
end;
theorem Th40:
compose(p^<*f*>,X) = f*compose(p,X)
proof
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 Nat st i+1 in dom (p^<*f*>) for g,h being
Function st g = ff.i & h = (p^<*f*>).(i+1) holds ff.(i+1) = h*g by Def3;
reconsider g = ff.len p as Function;
A6: dom p c= dom(p^<*f*>) by FINSEQ_1:26;
now
let i be Nat;
assume
A7: i+1 in dom p;
let g,h be Function;
assume that
A8: g = ff.i and
A9: h = p.(i+1);
h = (p^<*f*>).(i+1) by A7,A9,FINSEQ_1:def 7;
hence ff.(i+1) = h*g by A5,A6,A7,A8;
end;
then
A10: g = compose(p,X) by A4,Def3;
1 in Seg 1 & dom <*f*> = Seg 1 by FINSEQ_1:2,38,TARSKI:def 1;
hence thesis by A3,A5,A10,A2,A1,FINSEQ_1:28;
end;
theorem Th41:
apply(p^<*f*>,x) = apply(p,x)^<*f.(apply(p,x).(len p+1))*>
proof
defpred P[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 Def4;
A2: apply(p,x).1 = x by Def4;
A3: for i being Nat st P[i] holds P[i+1]
proof
let i be Nat such 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);
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;
per cases;
suppose
i = 0;
hence thesis by A2,Def4;
end;
suppose
A9: i > 0;
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,def 7;
then apply(p^<*f*>,x).(i+1) = g.(apply(p^<*f*>,x).i) by A11,Def4;
hence thesis by A4,A7,A10,A11,Def4,FINSEQ_3:25;
end;
end;
A12: P[ 0] by FINSEQ_3:25;
A13: for i being Nat holds P[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
let i be Nat;
assume i in dom <*f.(apply(p,x).(len p+1))*>;
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
,Def4;
hence
apply(p^<*f*>,x).((len apply(p,x))+i) = <*f.(apply(p,x).(len p+1))*>.
i by A19,FINSEQ_1:40;
end;
len apply(p^<*f*>,x) = len (p^<*f*>)+1 by Def4;
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,def 3;
hence thesis by A13,A18,FINSEQ_1:def 7;
end;
theorem
compose(<*f*>^p,X) = compose(p,f.:X)*(f|X)
proof
defpred R[Function-yielding FinSequence] means compose(<*f*>^$1,X) = compose
($1,f.:X)*(f|X);
A1: for p being Function-yielding FinSequence st R[p] for f being Function
holds R[p^<*f*>]
proof
let p be Function-yielding FinSequence such that
A2: compose(<*f*>^p,X) = compose(p,f.:X)*(f|X);
let g be Function;
thus compose(<*f*>^(p^<*g*>),X) = compose(<*f*>^p^<*g*>,X) by FINSEQ_1:32
.= g*compose(<*f*>^p,X) by Th40
.= g*compose(p,f.:X)*(f|X) by A2,RELAT_1:36
.= compose(p^<*g*>,f.:X)*(f|X) by Th40;
end;
<*f*>^{} = <*f*> & {}^<*f*> = <*f*> by FINSEQ_1:34;
then compose(<*f*>^{},X) = f*compose({},X) by Th40
.= f*id X by Th38
.= 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 Th38;
then
A3: R[{}];
for p holds R[p] from FuncSeqInd(A3,A1);
hence thesis;
end;
theorem
apply(<*f*>^p,x) = <*x*>^apply(p,f.x)
proof
defpred P[Function-yielding FinSequence] means apply(<*f*>^$1,x) = <*x*>^
apply($1,f.x);
A1: len {} = 0;
A2: for p being Function-yielding FinSequence st P[p] for f being Function
holds P[p^<*f*>]
proof
let p such that
A3: apply(<*f*>^p,x) = <*x*>^apply(p,f.x);
let g be Function;
set p9 = <*f*>^p;
A4: len apply(p,f.x) = len p+1 by Def4;
len <*f*> = 1 by FINSEQ_1:40;
then
A5: len p9 = len p+1 by FINSEQ_1:22;
then len p9 >= 1 by NAT_1:11;
then len <*x*> = 1 & len p9 in dom apply(p,f.x) by A4,A5,FINSEQ_1:40
,FINSEQ_3:25;
then
A6: apply(p9,x).(1+len p9) = apply(p,f.x).(len p+1) by A3,A5,FINSEQ_1:def 7;
apply(p9^<*g*>,x) = apply(p9,x)^<*g.(apply(p9,x).(len p9+1))*> by Th41;
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 Th41;
end;
<*f*>^{} = <*f*> & {}^<*f*> = <*f*> by FINSEQ_1:34;
then apply(<*f*>^{},x) = apply({},x)^<*f.(apply({},x).(0+1))*> by A1,Th41
.= <*x*>^<*f.(apply({},x).1)*> by Th39
.= <*x*>^<*f.(<*x*>.1)*> by Th39
.= <*x*>^<*f.x*> by FINSEQ_1:40
.= <*x*>^apply({},f.x) by Th39;
then
A7: P[{}];
for p holds P[p] from FuncSeqInd(A7,A2);
hence thesis;
end;
theorem Th44:
compose(<*f*>,X) = f*id X
proof
<*f*> = {}^<*f*> by FINSEQ_1:34;
hence compose(<*f*>,X) = f*compose({},X) by Th40
.= f*id X by Th38;
end;
theorem
dom f c= X implies compose(<*f*>,X) = f
proof
compose(<*f*>,X) = f*id X by Th44;
hence thesis by RELAT_1:51;
end;
theorem Th46:
apply(<*f*>,x) = <*x,f.x*>
proof
A1: <*x*>.(0+1) = x by FINSEQ_1:40;
A2: apply({},x) = <*x*> & len {} = 0 by Th39;
thus apply(<*f*>,x) = apply({}^<*f*>,x) by FINSEQ_1:34
.= <*x*>^<*f.x*> by A2,A1,Th41
.= <*x,f.x*> by FINSEQ_1:def 9;
end;
theorem
rng compose(p,X) c= Y implies compose(p^q,X) = compose(q,Y)*compose(p,
X )
proof
assume
A1: rng compose(p,X) c= Y;
defpred P[Function-yielding FinSequence] means compose(p^$1,X) = compose($1,
Y)*compose(p,X);
A2: for p being Function-yielding FinSequence st P[p] for f being Function
holds P[p^<*f*>]
proof
let q such that
A3: compose(p^q,X) = compose(q,Y)*compose(p,X);
let f;
thus compose(p^(q^<*f*>),X) = compose(p^q^<*f*>,X) by FINSEQ_1:32
.= f*compose(p^q,X) by Th40
.= f*compose(q,Y)*compose(p,X) by A3,RELAT_1:36
.= compose(q^<*f*>,Y)*compose(p,X) by Th40;
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 Th38;
then
A4: P[{}];
for q holds P[q] from FuncSeqInd(A4,A2);
hence thesis;
end;
theorem Th48:
apply(p^q,x).(len (p^q)+1) = apply(q,apply(p,x).(len p+1)).(len
q+1)
proof
defpred P[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 P[p] for f being Function
holds P[p^<*f*>]
proof
set y = apply(p,x).(len p+1);
let q such that
A2: apply(p^q,x).(len (p^q)+1) = apply(q,apply(p,x).(len p+1)).(len q+
1);
let f be Function;
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*>,y) = apply(q,y)^<*f.(apply(q,y).(len q+1))*> & len
apply(q,y) = len q+1 by Def4,Th41;
A7: len apply(p^q,x) = len (p^q)+1 by Def4;
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 Th41,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;
end;
apply({},apply(p,x).(len p+1)) = <*apply(p,x).(len p+1)*> & p^{} = p by Th39,
FINSEQ_1:34;
then
A8: P[{}] by FINSEQ_1:40;
for q holds P[q] from FuncSeqInd(A8,A1);
hence thesis;
end;
theorem
apply(p^q,x) = apply(p,x)$^apply(q,apply(p,x).(len p+1))
proof
defpred P[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 Def4;
then consider r being FinSequence, y being object such that
A2: apply(p,x) = r^<*y*> by CARD_1:27,FINSEQ_1:46;
A3: for p being Function-yielding FinSequence st P[p] for f being Function
holds P[p^<*f*>]
proof
let q such that
A4: apply(p^q,x) = apply(p,x)$^apply(q,apply(p,x).(len p+1));
A5: apply(p^q,x).(len (p^q)+1) = apply(q,apply(p,x).(len p+1)).(len q+1)
by Th48;
let f;
A6: len apply(q,apply(p,x).(len p+1)) = len q+1 by Def4;
A7: len apply(q^<*f*>,apply(p,x).(len p+1)) = len(q^<*f*>)+1 by Def4;
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 Th41
.= 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,Th41
.= apply(p,x)$^apply(q^<*f*>,apply(p,x).(len p+1))
by A2,A7,CARD_1:27,REWRITE1:2;
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 Th39;
then
A9: P[{}];
for q holds P[q] from FuncSeqInd(A9,A3);
hence thesis;
end;
theorem Th50:
compose(<*f,g*>,X) = g*f*id X
proof
<*f,g*> = <*f*>^<*g*> by FINSEQ_1:def 9;
hence compose(<*f,g*>,X) = g*compose(<*f*>,X) by Th40
.= g*(f*id X) by Th44
.= g*f*id X by RELAT_1:36;
end;
theorem
dom f c= X or dom(g*f) c= X implies compose(<*f,g*>,X) = g*f
proof
compose(<*f,g*>,X) = g*f*id X & g*f*id X = g*(f*id X) by Th50,RELAT_1:36;
hence thesis by RELAT_1:51;
end;
theorem Th52:
apply(<*f,g*>,x) = <*x,f.x,g.(f.x)*>
proof
A1: apply(<*f*>,x) = <*x,f.x*> & len <*f*> = 1 by Th46,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,Th41
.= <*x,f.x*>^<*g.(f.x)*> by FINSEQ_1:44
.= <*x,f.x,g.(f.x)*> by FINSEQ_1:43;
end;
theorem Th53:
compose(<*f,g,h*>,X) = h*g*f*id X
proof
<*f,g,h*> = <*f,g*>^<*h*> by FINSEQ_1:43;
hence compose(<*f,g,h*>,X) = h*compose(<*f,g*>,X) by Th40
.= h*(g*f*id X) by Th50
.= h*(g*f)*id X by RELAT_1:36
.= h*g*f*id X by RELAT_1:36;
end;
theorem
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
proof
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 Th53,
RELAT_1:36;
hence thesis by A1,A2,RELAT_1:51;
end;
theorem
apply(<*f,g,h*>,x) = <*x*>^<*f.x,g.(f.x),h.(g.(f.x))*>
proof
A1: apply(<*f,g*>,x) = <*x,f.x,g.(f.x)*> & len <*f,g*> = 2 by Th52,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,Th41
.= <*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;
end;
definition
let F be FinSequence;
func firstdom F -> set means
: Def5:
it is empty if F is empty otherwise it = proj1
(F.1);
correctness;
func lastrng F -> set means
: Def6:
it is empty if F is empty otherwise it = proj2
(F.len F);
correctness;
end;
theorem Th56:
firstdom {} = {} & lastrng {} = {} by Def5,Def6;
theorem Th57:
for p being FinSequence holds firstdom (<*f*>^p) = dom f &
lastrng (p^<*f*>) = rng f
proof
let p be FinSequence;
thus firstdom (<*f*>^p) = proj1((<*f*>^p).1) by Def5
.= dom f by FINSEQ_1:41;
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 Def6
.= rng f by FINSEQ_1:42;
end;
theorem Th58:
for p being Function-yielding FinSequence st p <> {} holds rng
compose(p,X) c= lastrng p
proof
defpred P[Function-yielding FinSequence] means $1 <> {} implies rng compose(
$1,X) c= lastrng $1;
A1: for p being Function-yielding FinSequence st P[p] for f being Function
holds P[p^<*f*>]
proof
let q;
assume q <> {} implies rng compose(q,X) c= lastrng q;
let f;
assume q^<*f*> <> {};
compose(q^<*f*>,X) = f*compose(q,X) by Th40;
then rng compose(q^<*f*>,X) c= rng f by RELAT_1:26;
hence thesis by Th57;
end;
A2: P[{}];
thus for p holds P[p] from FuncSeqInd(A2,A1);
end;
definition
let IT be FinSequence;
attr IT is FuncSeq-like means
: Def7:
ex p being FinSequence st len p = len
IT+1 & for i being Nat st i in dom IT holds IT.i in Funcs(p.i, p.(i+
1));
end;
theorem Th59:
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;
given pq being FinSequence such that
A1: len pq = len (p^q)+1 and
A2: for i being Nat st i in dom (p^q) holds (p^q).i in Funcs(
pq.i, pq.(i+1));
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
take p1;
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;
let i be Nat;
assume
A7: i in dom p;
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;
end;
consider q2 being FinSequence such that
A10: pq = p2^q2 by FINSEQ_1:80;
take q2;
len pq = len p2+len q2 by A10,FINSEQ_1:22;
hence len q2 = len q+1 by A1,A3,A5;
let x be Nat;
assume
A11: x in dom q;
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 thesis by A10,A5,A12,A14,FINSEQ_1:def 7;
end;
registration
cluster FuncSeq-like -> Function-yielding for FinSequence;
coherence
proof
let q be FinSequence;
given p being FinSequence such that
len p = len q+1 and
A1: for i being Nat st i in dom q holds q.i in Funcs(p.i, p
.(i+1));
let i be object;
assume
A2: i in dom q;
then reconsider i as Nat;
q.i in Funcs(p.i, p.(i+1)) by A1,A2;
hence thesis;
end;
end;
registration
cluster empty -> FuncSeq-like for FinSequence;
coherence
proof
let p be FinSequence;
assume
A1: p is empty;
take q = <*{}*>;
thus len q = len p+1 by A1,FINSEQ_1:40;
thus thesis by A1;
end;
end;
registration
let f be Function;
cluster <*f*> -> FuncSeq-like;
coherence
proof
take q = <*dom f, rng f*>;
set p = <*f*>;
thus len q = 1+1 by FINSEQ_1:44
.= len p+1 by FINSEQ_1:40;
let i be Nat;
assume i in dom p;
then i in {1} by FINSEQ_1:2,38;
then
A1: i = 1 by TARSKI:def 1;
then
A2: q.(i+1) = rng f by FINSEQ_1:44;
p.i = f & q.i = dom f by A1,FINSEQ_1:40,44;
hence thesis by A2,FUNCT_2:def 2;
end;
end;
registration
cluster FuncSeq-like non empty non-empty for FinSequence;
existence
proof
set f =the non empty Function;
take p = <*f*>;
thus p is FuncSeq-like;
thus p is non empty;
let x be object;
assume x in dom p;
then x in {1} by FINSEQ_1:2,38;
then x = 1 by TARSKI:def 1;
hence thesis by FINSEQ_1:40;
end;
end;
definition
mode FuncSequence is FuncSeq-like FinSequence;
end;
theorem Th60:
for p being FuncSequence st p <> {} holds dom compose(p,X) = (
firstdom p) /\ X
proof
defpred P[Function-yielding FinSequence] means $1 is FuncSequence & $1 <> {}
implies dom compose($1,X) = (firstdom $1) /\ X;
A1: for p being Function-yielding FinSequence st P[p] for f being Function
holds P[p^<*f*>]
proof
let q;
assume
A2: q is FuncSequence & q <> {} implies dom compose(q,X) = (firstdom q
) /\ X;
let f;
assume that
A3: q^<*f*> is FuncSequence and
q^<*f*> <> {};
A4: compose(q^<*f*>,X) = f*compose(q,X) by Th40;
per cases;
suppose
q = {};
then
A5: q^<*f*> = <*f*> by FINSEQ_1:34;
then
A6: compose(q^<*f*>,X) = f*id X by Th44;
<*f*>^{} = <*f*> by FINSEQ_1:34;
then firstdom(q^<*f*>) = dom f by A5,Th57;
hence thesis by A6,FUNCT_1:19;
end;
suppose
A7: q <> {};
then consider y being object, s being FinSequence such that
A8: q = <*y*>^s and
A9: len q = len s+1 by REWRITE1:5;
reconsider y as set by TARSKI:1;
q.1 = y by A8,FINSEQ_1:41;
then
A10: firstdom q = proj1 y by A8,Def5;
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,Th58;
consider p being FinSequence such that
len p = len (q^<*f*>)+1 and
A14: for i being Nat st i in dom (q^<*f*>) holds (q^<*f*>
).i in Funcs(p.i, p.(i+1)) by A3,Def7;
consider r being FinSequence, x being object 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,Def5;
lastrng q = rng g by A15,A18,Th57;
hence thesis by A2,A3,A4,A7,A23,A10,A19,A22,A13,Th59,RELAT_1:27
,XBOOLE_1:1;
end;
end;
A24: P[{}];
for p being Function-yielding FinSequence holds P[p] from FuncSeqInd(
A24,A1);
hence thesis;
end;
theorem Th61:
for p being FuncSequence holds dom compose(p,firstdom p) =
firstdom p
proof
let p be FuncSequence;
per cases;
suppose
p = {};
then compose(p,firstdom p) = id firstdom p by Th38;
hence thesis;
end;
suppose
p <> {};
then dom compose(p,firstdom p) = (firstdom p) /\ firstdom p by Th60;
hence thesis;
end;
end;
theorem
for p being FuncSequence, f being Function st rng f c= firstdom p
holds <*f*>^p is FuncSequence
proof
let p be FuncSequence, f be Function such that
A1: rng f c= firstdom p;
consider q being FinSequence such that
A2: len q = len p+1 and
A3: for i being Nat st i in dom p holds p.i in Funcs(q.i, q.(
i+1)) by Def7;
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
assume
A8: p <> {};
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,Def5;
end;
<*f*>^p is FuncSeq-like
proof
take r;
1 <= len q by A2,NAT_1:11;
then
A9: 1 in dom q by FINSEQ_3:25;
thus len r = len (<*f*>^p)+1 by A2,A4,A6,FINSEQ_1:22;
let i be Nat;
assume
A10: i in dom (<*f*>^p);
then
A11: i >= 1 by FINSEQ_3:25;
A12: rng f c= q.1 by A1,A7,Th56;
A13: i <= len p+1 by A6,A10,FINSEQ_3:25;
per cases;
suppose
A14: i = 1;
then
A15: r.i = dom f & (<*f*>^p).i = f by FINSEQ_1:41;
r.(i+1) = q.1 by A4,A9,A14,FINSEQ_1:def 7;
hence thesis by A12,A15,FUNCT_2:def 2;
end;
suppose
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 r.i = q.(j+1) by A4,A16,A21,FINSEQ_1:def 7;
hence thesis by A4,A16,A21,A20,A19,FINSEQ_1:def 7;
end;
end;
hence thesis;
end;
theorem
for p being FuncSequence, f being Function st lastrng p c= dom f holds
p^<*f*> is FuncSequence
proof
let p be FuncSequence, f be Function such that
A1: lastrng p c= dom f;
consider q being FinSequence such that
A2: len q = len p+1 and
A3: for i being Nat st i in dom p holds p.i in Funcs(q.i, q.(
i+1)) by Def7;
consider q9 being FinSequence, x being object such that
A4: q = q9^<*x*> by A2,CARD_1:27,FINSEQ_1:46;
A5: now
assume
A6: len p in dom p;
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,Def6,RELAT_1:38;
hence p.len p in Funcs(q.len p,dom f) by A1,A7,A8,FUNCT_2:def 2;
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 r = 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 r;
thus len r = len (p^<*f*>)+1 by A2,A15,A11,A12;
let i be Nat;
assume
A17: i in dom (p^<*f*>);
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;
per cases by A19,XXREAL_0:1;
suppose
A20: i = len p+1;
then
A21: r.i = dom f & (p^<*f*>).i = f by A2,A15,A14,A9,FINSEQ_1:42,def 7;
r.(i+1) = rng f by A2,A15,A12,A16,A10,A20,FINSEQ_1:def 7;
hence thesis by A21,FUNCT_2:def 2;
end;
suppose
A22: i = len p;
then i in dom q9 by A2,A15,A18,FINSEQ_3:25;
then
A23: r.i = q9.i & q9.i = q.i by A4,FINSEQ_1:def 7;
len p in dom p & r.(i+1) = dom f by A2,A15,A14,A9,A18,A22,FINSEQ_1:def 7
,FINSEQ_3:25;
hence thesis by A5,A22,A23,FINSEQ_1:def 7;
end;
suppose
A24: i < len p;
then i in dom q9 by A2,A15,A18,FINSEQ_3:25;
then
A25: q.i = q9.i & q9.i = r.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 thesis by A28,A25,A27,FINSEQ_1:def 7;
end;
end;
hence thesis;
end;
theorem
for p being FuncSequence st x in firstdom p & x in X holds apply(p,x).
(len p+1) = compose(p,X).x
proof
defpred P[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 P[p] for f being Function
holds P[p^<*f*>]
proof
A2: dom id X = X;
let p such that
A3: p is FuncSequence & x in firstdom p & x in X implies apply(p,x).(
len p+1) = compose(p,X).x;
let f;
assume that
A4: p^<*f*> is FuncSequence and
A5: x in firstdom (p^<*f*>) and
A6: x in X;
A7: p is FuncSequence by A4,Th59;
(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 Th40;
A11: apply(<*f*>,x) = <*x,f.x*> & compose(<*f*>,X) = f*id X by Th44,Th46;
A12: apply(p^<*f*>,x) = apply(p,x)^<*f.(apply(p,x).(len p+1))*> by Th41;
per cases;
suppose
p = {};
then p^<*f*> = <*f*> by FINSEQ_1:34;
hence thesis by A9,A11,A8,FINSEQ_1:44;
end;
suppose
A13: p <> {};
then
A14: dom compose(p,X) = (firstdom p) /\ X by A7,Th60;
A15: firstdom (p^<*f*>) = proj1((p^<*f*>).1) by Def5;
A16: firstdom p = proj1 (p.1) by A13,Def5;
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,Def4,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,Th59,FINSEQ_1:42,def 7
.= compose(p^<*f*>,X).x by A10,A14,A18,FUNCT_1:13;
end;
end;
A19: P[{}] by Def5;
for p holds P[p] from FuncSeqInd(A19,A1);
hence thesis;
end;
definition
let X,Y be set such that
A1: Y is empty implies X is empty;
mode FuncSequence of X,Y -> FuncSequence means
: Def8:
firstdom it = X &
lastrng it c= Y;
existence
proof
set f =the Function of X,Y;
take p = <*f*>;
A2: p^{} = p & {}^p = p by FINSEQ_1:34;
dom f = X & rng f c= Y by A1,FUNCT_2:def 1;
hence thesis by A2,Th57;
end;
end;
definition
let Y be non empty set, X be set;
let F be FuncSequence of X,Y;
redefine func compose(F,X) -> Function of X,Y;
coherence
proof
A1: firstdom F = X by Def8;
now
assume F = {};
then X = {} & compose(F,X) = id X by A1,Def5,Th38;
hence rng compose(F,X) = {};
end;
then
A2: rng compose(F,X) c= lastrng F by Th58;
lastrng F c= Y by Def8;
then
A3: rng compose(F,X) c= Y by A2;
dom compose(F,X) = X by A1,Th61;
hence thesis by A3,FUNCT_2:def 1,RELSET_1:4;
end;
end;
definition
let q be non-empty non empty FinSequence;
mode FuncSequence of q -> FinSequence means
:Def9:
len it+1 = len q & for i
being Nat st i in dom it holds it.i in Funcs(q.i,q.(i+1));
existence
proof
defpred P[object,object] means
ex i being 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 as Element of NAT by ORDINAL1:def 12;
A2: for x being object st x in Seg n ex y being object st P[x,y]
proof
let x be object;
assume
A3: x in Seg n;
then reconsider i = x as 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 y,i;
thus thesis by FUNCT_2:8;
end;
consider f being Function such that
A7: dom f = Seg n and
A8: for x being object st x in Seg n holds P[x,f.x] from CLASSES1:sch 1(A2);
reconsider f as FinSequence by A7,FINSEQ_1:def 2;
take f;
thus len f+1 = len q by A1,A7,FINSEQ_1:def 3;
let i be Nat;
assume i in dom f;
then
ex j being Nat st j = i & f.i in Funcs(q.j,q.(j+1)) by A7,A8;
hence thesis;
end;
end;
registration
let q be non-empty non empty FinSequence;
cluster -> FuncSeq-like non-empty for FuncSequence of q;
coherence
proof
let p be FuncSequence of q;
thus p is FuncSeq-like
proof
take q;
thus thesis by Def9;
end;
let x be object;
assume
A1: x in dom p;
then reconsider i = x as Nat;
len q = len p+1 by Def9;
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,Def9;
then ex f st p.x = f & dom f = X & rng f c= Y by FUNCT_2:def 2;
hence thesis;
end;
end;
theorem Th65:
for q being non-empty non empty FinSequence, 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;
let p be FuncSequence of q;
assume
A1: p <> {};
then 1 in dom p by FINSEQ_5:6;
then p.1 in Funcs(q.1,q.(1+1)) by Def9;
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,Def5;
len p in dom p by A1,FINSEQ_5:6;
then p.len p in Funcs(q.len p,q.(len p+1)) by Def9;
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 Def9;
hence thesis by A1,A2,Def6;
end;
theorem
for q being non-empty non empty FinSequence, 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;
let p be FuncSequence of q;
per cases;
suppose
A1: p = {};
A2: len q = len p+1 by Def9;
compose(p,q.1) = id (q.1) & len p = 0 by A1,Th38;
hence thesis by A2;
end;
suppose
A3: p <> {};
then
A4: lastrng p c= q.len q by Th65;
firstdom p = q.1 & rng compose(p,q.1) c= lastrng p by A3,Th58,Th65;
hence thesis by A4,Th61;
end;
end;
:: Moved from FUNCT_4
registration
let X be set;
let f be sequence of bool [:X,X:];
let n be Nat;
cluster f.n -> Relation-like;
coherence
proof
reconsider n as Element of NAT by ORDINAL1:def 12;
f.n is Element of bool [:X,X:];
hence thesis;
end;
end;
Lm1: for f being Function of X,X holds rng f c= dom f
proof
let f be Function of X,X;
dom f = X by FUNCT_2:52;
hence thesis;
end;
Lm2: for f being Relation for n being Nat
for p1,p2 being sequence of 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;
let n be Nat;
let p1,p2 be sequence of bool [:field f,field f:] such 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;
defpred P[Nat,Relation,set] means $3 = f*$2;
A5: for k being Nat holds P[k,p1.k,p1.(k+1)] by A2;
set FX = bool [:field f,field f:];
reconsider ID = id(field f) as Element of FX;
A6: p2.0 = ID by A3;
A7: for k being Nat for x,y1,y2 being Element of FX st P[k,x,y1] & P[k,x,y2]
holds y1 = y2;
A8: for k being Nat holds P[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 thesis;
end;
definition
let f be Relation;
let n be Nat;
func iter (f,n) -> Relation means
:Def10:
ex p being sequence of 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
proof
reconsider n9=n as Element of NAT by ORDINAL1:def 12;
defpred P[Nat,Relation,set] means $3 = f * $2;
set FX = bool [:field f,field f:];
reconsider ID = id(field f) as Element of FX;
A1: for n being Nat for x being Element of FX ex y being
Element of FX st P[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 Nat;
let x be Element of FX;
reconsider g = x as Relation of field f,field f;
h * g is Element of FX;
hence thesis;
end;
consider p being sequence of FX such that
A2: p.0 = ID & for n being Nat holds P[n,p.n,p.(n+1)] from
RECDEF_1:sch 2(A1);
p.n9 is Relation of field f,field f;
hence thesis by A2;
end;
uniqueness by Lm2;
end;
registration
let f be Function;
let n be Nat;
cluster iter (f,n) -> Function-like;
coherence
proof
consider p being sequence of 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 Def10;
defpred P[Nat] means p.$1 is Function;
A3: P[0] by A1;
A4: for m being Nat holds P[m] implies P[m+1]
proof let m be Nat;
assume P[m]; then
reconsider g = p.m as Function;
p.(m+1) = g*f by A2;
hence thesis;
end;
for m being Nat holds P[m] from NAT_1:sch 2(A3,A4);
hence thesis by A1;
end;
end;
reserve m,n,k for Nat, R for Relation;
Lm3: id(field R)*R = R & R*id(field R) = R by RELAT_1:51,53,XBOOLE_1:7;
theorem Th67:
iter (R,0) = id(field R)
proof
ex p being sequence of 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 Def10;
hence thesis;
end;
Lm4: rng R c= dom R implies iter (R,0) = id(dom R)
proof
assume rng R c= dom R;
then field R = dom R by XBOOLE_1:12;
hence thesis by Th67;
end;
theorem Th68:
for n be Nat holds iter(R,n+1) = R*iter(R,n)
proof
let n be Nat;
consider p being sequence of 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 Def10;
p.(n+1) = R*p.n by A2;
hence thesis by A1,A2,Def10;
end;
theorem Th69:
iter(R,1) = R
proof
thus iter(R,1) = iter(R,0+1)
.= R*iter(R,0) by Th68
.= R*id(field R) by Th67
.= R by Lm3;
end;
theorem Th70:
for n being Nat holds iter(R,n+1) = iter(R,n)*R
proof
let n be Nat;
defpred P[Nat] means iter(R,$1+1) = iter(R,$1)*R;
A1: for k be Nat st P[k] holds P[k+1]
proof
let k be Nat;
assume
A2: iter(R,k+1) = iter(R,k)*R;
thus iter(R,k+1)*R = R*iter(R,k)*R by Th68
.= R*(iter(R,k)*R) by RELAT_1:36
.= iter(R,k+1+1) by A2,Th68;
end;
iter(R,0+1) = R by Th69
.= id(field R)*R by Lm3
.= iter(R,0)*R by Th67;
then
A3: P[ 0];
for k be Nat holds P[k] from NAT_1:sch 2(A3,A1);
hence thesis;
end;
theorem Th71:
dom iter(R,n) c= field R & rng iter(R,n) c= field R
proof
defpred P[Nat] means dom iter(R,$1) c= field R & rng iter(
R,$1) c= field R;
A1: P[k] implies P[k+1]
proof
iter(R,k+1) = iter(R,k)*R by Th70;
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 Th68;
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;
hence thesis by A2,A3,XBOOLE_1:1;
end;
iter(R,0) = id(field R) by Th67;
then
A4: P[ 0];
P[k] from NAT_1:sch 2(A4,A1);
hence thesis;
end;
theorem
n <> 0 implies dom iter(R,n) c= dom R & rng iter(R,n) c= rng R
proof
defpred P[Nat] means dom iter(R,$1+1) c= dom R & rng iter(R,$1+1) c= rng R;
assume n <> 0;
then
A1: ex k be Nat st n = k+1 by NAT_1:6;
A2: for k be Nat st P[k] holds P[k+1]
proof
let k be Nat;
assume that
dom iter(R,k+1) c= dom R and
rng iter(R,k+1) c= rng R;
iter(R,k+1+1) = R*iter(R,k+1) & iter(R,k+1+1) = iter(R,k+1)*R by Th68,Th70;
hence thesis by RELAT_1:25,26;
end;
A3: P[ 0] by Th69;
for k be Nat holds P[k] from NAT_1:sch 2(A3,A2);
hence thesis by A1;
end;
theorem Th73:
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 n be Nat;
defpred P[Nat] means dom iter(R,$1) = dom R & rng iter(R,$1) c= dom R;
A1: for k being Nat holds P[k] implies P[k+1]
proof
let k be Nat;
assume
A2: dom iter(R,k) = dom R & rng iter(R,k) c= dom R;
iter(R,k+1) = R*iter(R,k) by Th68;
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 Th70;
hence thesis by A2,A3,RELAT_1:27,XBOOLE_1:1;
end;
assume rng R c= dom R;
then iter(R,0) = id dom R by Lm4;
then
A4: P[ 0];
for k being Nat holds P[k] from NAT_1:sch 2(A4,A1);
hence thesis;
end;
theorem Th74:
id(field R)*iter(R,n) = iter(R,n)
proof
dom iter(R,n) c= field R by Th71;
hence thesis by RELAT_1:51;
end;
theorem
iter(R,n)*id(field R) = iter(R,n)
proof
rng iter(R,n) c= field R by Th71;
hence thesis by RELAT_1:53;
end;
theorem Th76:
iter(R,m)*iter(R,n) = iter(R,n+m)
proof
defpred P[Nat] means iter(R,$1)*iter(R,n) = iter(R,n+$1);
A1: P[k] implies P[k+1]
proof
assume
A2: iter(R,k)*iter(R,n) = iter(R,n+k);
thus iter(R,k+1)*iter(R,n) = R*iter(R,k)*iter(R,n) by Th68
.= R*(iter(R,k)*iter(R,n)) by RELAT_1:36
.= iter(R,n+k+1) by A2,Th68
.= iter(R,n+(k+1));
end;
iter(R,0)*iter(R,n) = id(field R)*iter(R,n) by Th67
.= iter(R,n+0) by Th74;
then
A3: P[ 0];
P[k] from NAT_1:sch 2(A3,A1);
hence thesis;
end;
Lm5: iter(iter(R,m),k) = iter(R,m*k) implies iter(iter(R,m),k+1) = iter(R,m*(k
+1))
proof
assume
A1: iter(iter(R,m),k) = iter(R,m*k);
thus iter(iter(R,m),k+1) = iter(R,m)*iter(iter(R,m),k) by Th68
.= iter(R,m*k + m*1) by A1,Th76
.= iter(R,m*(k+1));
end;
theorem
n <> 0 implies iter(iter(R,m),n) = iter(R,m*n)
proof
defpred P[Nat] means iter(iter(R,m),$1+1) = iter(R,m*($1+1));
A1: P[k] implies P[k+1] by Lm5;
A2: P[ 0] by Th69;
A3: P[k] from NAT_1:sch 2(A2,A1);
assume n <> 0;
then consider k be Nat such that
A4: n = k+1 by NAT_1:6;
reconsider k as Nat;
n=k+1 by A4;
hence thesis by A3;
end;
theorem Th78:
rng R c= dom R implies iter(iter(R,m),n) = iter(R,m*n)
proof
defpred P[Nat] means iter(iter(R,m),$1) = iter(R,m*$1);
assume
A1: rng R c= dom R;
then dom iter(R,m) = dom R by Th73;
then field iter(R,m) = dom R by A1,Th73,XBOOLE_1:12;
then iter(iter(R,m),0) = id(dom R) by Th67
.= id(field R) by A1,XBOOLE_1:12
.= iter(R,m*0) by Th67;
then
A2: P[ 0];
A3: P[k] implies P[k+1] by Lm5;
P[k] from NAT_1:sch 2(A2,A3);
hence thesis;
end;
theorem
iter({},n) = {}
proof
defpred P[Nat] means iter({},$1) = {};
A1: P[k] implies P[k+1]
proof
assume iter({},k) = {};
thus iter({},k+1) = iter({},k)*{} by Th68
.= {};
end;
iter({},0) = id (field {}) by Th67
.= {};
then
A2: P[0 ];
P[k] from NAT_1:sch 2(A2,A1);
hence thesis;
end;
theorem
iter(id(X),n) = id(X)
proof
defpred P[Nat] means iter(id(X),$1) = id(X);
A1: P[k] implies P[k+1]
proof
assume
A2: P[k];
thus iter(id(X),k+1) = iter(id(X),k)*id(X) by Th68
.= id(X) by A2,FUNCT_2:17;
end;
id(field id X) = id X;
then
A3: P[ 0] by Th67;
P[k] from NAT_1:sch 2(A3,A1);
hence thesis;
end;
theorem
rng R misses dom R implies iter(R,2) = {}
proof
assume
A1: rng R misses dom R;
thus iter(R,2) = iter(R,1+1)
.= iter(R,1)*R by Th70
.= R*R by Th69
.= {} by A1,RELAT_1:44;
end;
theorem
for n being Nat for f being Function of X,X holds iter(f,n) is
Function of X,X
proof
let n be Nat;
let f be 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,Th73;
then reconsider R = iter(f,n) as Relation of X,X by RELSET_1:4;
dom R = X by A2,A3,Th73;
hence thesis by A1,FUNCT_2:def 1;
end;
theorem
for f being Function of X,X holds iter(f,0) = id X
proof
let f be Function of X,X;
iter(f,0) = id(field f) & field f = dom f by Lm1,Th67,XBOOLE_1:12;
hence thesis by FUNCT_2:52;
end;
theorem
for f being Function of X,X holds iter(iter(f,m),n) = iter(f,m*n)
proof
let f be Function of X,X;
rng f c= dom f by Lm1;
hence thesis by Th78;
end;
theorem
for f being PartFunc of X,X holds iter(f,n) is PartFunc of X,X
proof
let f be PartFunc of X,X;
A1: field f = dom f \/ rng f;
rng iter(f,n) c= field f by Th71;
then
A2: rng iter(f,n) c= X by A1,XBOOLE_1:1;
dom iter(f,n) c= field f by Th71;
then dom iter(f,n) c= X by A1,XBOOLE_1:1;
hence thesis by A2,RELSET_1:4;
end;
theorem
n <> 0 & a in X & f = X --> a implies iter(f,n) = f
proof
assume that
A1: n <> 0 and
A2: a in X and
A3: f = X --> a;
defpred P[Nat] means iter(f,$1+1) = f;
A4: now
A5: dom f = X by A3,FUNCOP_1:13;
let k such that
A6: P[k];
A7: now
let x be object;
assume
A8: x in dom f;
then
A9: f.x = a by A3,A5,FUNCOP_1:7;
thus iter(f,k+1+1).x = (f*f).x by A6,Th70
.= f.(f.x) by A8,FUNCT_1:13
.= f.x by A2,A3,A9,FUNCOP_1:7;
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 Th73;
hence P[k+1] by A7,FUNCT_1:2;
end;
A10: P[ 0] by Th69;
A11: P[k] from NAT_1:sch 2(A10,A4);
consider k be Nat such that
A12: n = k+1 by A1,NAT_1:6;
reconsider k as Nat;
n = k + 1 by A12;
hence thesis by A11;
end;
theorem
for f being Function, n being Nat holds iter(f,n) = compose
(n|->f,field f)
proof
let f be Function;
defpred P[Nat] means iter(f,$1) = compose($1|->f,field f);
A1: now
let n be Nat;
assume P[n];
then iter(f,n+1) = f*compose(n|->f,field f) by Th70
.= compose((n|->f)^<*f*>,field f) by Th40
.= compose((n+1)|->f,field f) by FINSEQ_2:60;
hence P[n+1];
end;
iter(f,0) = id (field f) by Th67
.= compose({},field f) by Th38
.= compose(0|->f,field f);
then
A2: P[ 0];
thus for n being Nat holds P[n] from NAT_1:sch 2(A2, A1);
end;
begin :: Addenda
:: from SCMFSA6A, 2006.03.14, A.T.
theorem
for f,g being Function, 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, x,y be set such that
A1: g c= f and
A2: not x in dom g;
A3: now
let z be object;
assume
A4: z in dom g;
hence g.z = f.z by A1,GRFUNC_1:2
.= (f+*(x,y)).z by A2,A4,Th31;
end;
dom g c= dom f by A1,GRFUNC_1:2;
then dom g c= dom(f+*(x,y)) by Th29;
hence thesis by A3,GRFUNC_1:2;
end;
theorem
for f,g being Function, A being set st f|A = g|A & f,g equal_outside A
holds f = g
proof
let f,g be Function, A be set such that
A1: f|A = g|A & f,g equal_outside A;
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
.= 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;
end;
theorem
for f being Function, a,b,A being set st a in A holds f,f+*(a,b)
equal_outside A
proof
let f be Function, a,b,A be set;
per cases;
suppose
A1: a in dom f;
assume a in A;
then {a} c= A by ZFMISC_1:31;
then
A2: dom(a.-->b) c= A;
f+*(a,b) = f+*(a.-->b) by A1,Def2;
hence thesis by A2,Th28;
end;
suppose
not a in dom f;
then f+*(a,b) = f by Def2;
hence thesis;
end;
end;
theorem Th91:
for f being Function, a,b being object,
A being set holds a in A or (f+*(a,b))
|A = f|A
proof
let f be Function, a,b be object, A be set;
per cases;
suppose
A1: a in dom f;
assume not a in 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,Def2
.= f|A by A2,FUNCT_4:72;
end;
suppose
not a in dom f;
hence thesis by Def2;
end;
end;
theorem
for f,g being Function, a,b be object,
A being set st f|A = g|A holds (f+*(a,b))|
A = (g+*(a,b))|A
proof
let f,g be Function, a,b be object, A be set such that
A1: f|A = g|A;
per cases;
suppose that
A2: a in A and
A3: a in dom g;
now
assume not a in dom f;
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;
end;
hence (f+*(a,b))|A = (f +* (a.-->b))|A by Def2
.= g|A +* (a.-->b)|A by A1,FUNCT_4:71
.= (g +* (a.-->b))|A by FUNCT_4:71
.= (g+*(a,b))|A by A3,Def2;
end;
suppose that
A4: a in A and
A5: not a in dom g;
now
assume a in dom f;
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;
end;
hence (f+*(a,b))|A = g|A by A1,Def2
.= (g+*(a,b))|A by A5,Def2;
end;
suppose
A6: not a in A;
hence (f+*(a,b))|A = f|A by Th91
.= (g+*(a,b))|A by A1,A6,Th91;
end;
end;
:: from YELLOW14, 2006.03.14, A.T.
theorem Th93:
for f being Function, a, b being object holds (f +* (a .--> b)).a =
b
proof
let f be Function, a, b be object;
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;
end;
:: from SCMFSA6A, 2006.03.14, A.T.
theorem
for a, b being set holds <*a*> +* (1,b) = <*b*>
proof
let a, b be set;
A1: dom <*b*> = {1} by FINSEQ_1:2,def 8;
A2: dom <*a*> = {1} by FINSEQ_1:2,def 8;
then 1 in dom <*a*> by TARSKI:def 1;
then
A3: <*a*> +* (1,b) = <*a*> +* (1 .--> b) by Def2;
A4: for x being object st x in {1} holds (<*a*> +* (1,b)).x = <*b*>.x
proof
let x be object;
assume x in {1};
then
A5: x = 1 by TARSKI:def 1;
hence (<*a*> +* (1,b)).x = b by A3,Th93
.= <*b*>.x by A5,FINSEQ_1:def 8;
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 thesis by A1,A4;
end;
:: from SCMFSA8C, 2006.03.15
theorem
for f be Function, x be set st x in dom f holds f +* (x .--> f.x) = f
proof
let f be Function;
let x be set;
assume x in dom f;
hence f +* (x .--> f.x) = f +*(x,f.x) by Def2
.= f by Th34;
end;
:: from JORDAN2B, 2007.03.18, A.T.
reserve i,j for Nat;
theorem Th96:
for w being FinSequence,r being object,i being natural Number
holds len (w+*(i,r))=len w
proof
let w be FinSequence,r be object,i be natural Number;
dom ( w+*(i,r))=dom w by Th29;
then Seg len ( w+*(i,r))=dom w by FINSEQ_1:def 3
.=Seg len w by FINSEQ_1:def 3;
hence thesis by FINSEQ_1:6;
end;
theorem
for D being non empty set, w being FinSequence of D, r being Element
of D st i in dom w holds w+*(i,r)=(w|(i-'1))^<*r*>^(w/^i)
proof
let D be non empty set, w be FinSequence of D, r be Element of D;
assume
A1: i in dom w;
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 be 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;
assume that
A6: 1<=j and
A7: j<=len (w+*(i,r));
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 Th96;
now
per cases by XXREAL_0:1;
case
A10: i^(w/^i)) by A4,A7,Th96;
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 thesis by A10,Th31;
end;
case
A16: j=i;
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 thesis by A1,A16,Th30;
end;
case
A18: j*^(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 thesis by A18,Th31;
end;
end;
hence thesis;
end;
hence thesis by A4,Th96,FINSEQ_1:14;
end;
:: comp. FINSEQ_7, 2007.03.18, A.T.
reserve F for Function,
e,x,y,z for object;
definition
let F;
let x,y be object;
func Swap(F,x,y) -> set equals
:Def11:
F+*(x,F.y)+*(y,F.x) if x in dom F & y in dom
F otherwise F;
correctness;
end;
registration
let F;
let x,y be object;
cluster Swap(F,x,y) -> Relation-like Function-like;
coherence
proof
per cases;
suppose
x in dom F & y in dom F;
then Swap(F,x,y) = F+*(x,F.y)+*(y,F.x) by Def11;
hence thesis;
end;
suppose
not(x in dom F & y in dom F);
hence thesis by Def11;
end;
end;
end;
theorem Th98:
for x,y being object holds dom Swap(F,x,y) = dom F
proof let x,y be object;
per cases;
suppose
x in dom F & y in dom F;
hence dom Swap(F,x,y) = dom(F+*(x,F.y)+*(y,F.x)) by Def11
.= dom(F+*(x,F.y)) by Th29
.= dom F by Th29;
end;
suppose
not(x in dom F & y in dom F);
hence thesis by Def11;
end;
end;
theorem Th99:
for x,y being object holds rng(F+*(x,y)) c= rng F \/ {y}
proof let x,y be object;
A1: rng(x.-->y) = {y} by FUNCOP_1:8;
per cases;
suppose
x in dom F;
then F+*(x,y) = F+*(x.-->y) by Def2;
hence thesis by A1,FUNCT_4:17;
end;
suppose
not x in dom F;
then F+*(x,y) = F by Def2;
hence thesis by XBOOLE_1:7;
end;
end;
theorem Th100:
for x,y being object holds rng F c= rng(F+*(x,y)) \/ {F.x}
proof let x,y be object;
let z be object;
assume z in rng F;
then consider e being object 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 Th29;
per cases;
suppose
e = x;
then z in {F.x} by A2,TARSKI:def 1;
hence thesis by XBOOLE_0:def 3;
end;
suppose
e <> x;
then (F+*(x,y)).e = F.e by Th31;
then z in rng(F+*(x,y)) by A1,A2,A3,FUNCT_1:3;
hence thesis by XBOOLE_0:def 3;
end;
end;
theorem Th101:
x in dom F implies y in rng(F+*(x,y))
proof
assume x in dom F;
then x in dom (F+*(x,y)) & (F+*(x,y)).x = y by Th29,Th30;
hence thesis by FUNCT_1:3;
end;
theorem
for x,y being object holds rng Swap(F,x,y) = rng F
proof let x,y be object;
per cases;
suppose that
A1: x in dom F and
A2: y in dom 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 Th99,XBOOLE_1:9;
A4: (F+*(x,F.y)).y = F.y
proof
per cases;
suppose
x <> y;
hence thesis by Th31;
end;
suppose
x = y;
hence thesis by A1,Th30;
end;
end;
A5: rng F c= rng(F+*(x,F.y)) \/ {F.x} by Th100;
A6: Swap(F,x,y) = F+*(x,F.y)+*(y,F.x) by A1,A2,Def11;
then rng Swap(F,x,y) c= rng(F+*(x,F.y)) \/ {F.x} by Th99;
then
A7: rng Swap(F,x,y) c= rng F by A3;
A8: y in dom(F+*(x,F.y)) by A2,Th29;
A9: F.y in rng Swap(F,x,y)
proof
per cases;
suppose
F.x = F.y;
hence thesis by A6,A8,Th101;
end;
suppose
A10: F.x <> F.y;
A11: dom Swap(F,x,y) = dom F by Th98;
Swap(F,x,y).x = F+*(x,F.y).x by A6,A10,Th31
.= F.y by A1,Th30;
hence thesis by A1,A11,FUNCT_1:3;
end;
end;
F.x in rng Swap(F,x,y) by A6,A8,Th101;
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,Th100,XBOOLE_1:9;
then rng F c= rng Swap(F,x,y) by A5;
hence thesis by A7;
end;
suppose
not(x in dom F & y in dom F);
hence thesis by Def11;
end;
end;
:: from SCMFSA_7, 2007.07.22, A.T.
scheme
{ A() -> set, D() -> non empty set, G(object) -> object }:
A(),{ G(d) where d is Element of D() : d in A() } are_equipotent
provided
A1: A() c= D() and
A2: for d1,d2 being Element of D() st d1 in A() & d2 in A() & G(d1) = G(
d2) holds d1 = d2
proof
per cases;
suppose
A() <> {};
then reconsider D = A() as non empty set;
set X = { G(d) where d is Element of D : d in A() };
set Y = { G(d) where d is Element of D() : d in A() };
A3: now
let x be object;
hereby
assume x in X;
then ex d being Element of D st G(d) = x & d in A();
hence x in Y by A1;
end;
hereby
assume x in Y;
then ex d being Element of D() st G(d) = x & d in A();
hence x in X;
end;
end;
A4: now
let d1,d2 be Element of D;
reconsider d = d1, dd = d2 as Element of D() by A1;
assume G(d1) = G(d2);
then d = dd by A2;
hence d1 = d2;
end;
A5: A() c= D;
A(),X are_equipotent from CardMono9(A5,A4);
hence thesis by A3,TARSKI:2;
end;
suppose
A6: A() = {};
now
set a =the Element of { G(d) where d is Element of D() : d in A() };
assume { G(d) where d is Element of D() : d in A() } <> {};
then a in { G(d) where d is Element of D() : d in A() };
then ex d being Element of D() st a = G(d) & d in A();
hence contradiction by A6;
end;
hence thesis by A6;
end;
end;
:: from SCMFSA6A, 2007.07.23, A.T.
theorem
for f,g,h being Function, A being set holds f, g equal_outside A
implies f +* h, g +* h equal_outside A
proof
let f,g,h be Function;
let A be set;
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;
then
A2: f|(dom f \ A) = g|(dom g \ A);
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
let x be object;
assume
A5: x in dom ((f +* h) | (dom (f +* h) \ A));
then
A6: x in dom f \ A or x in dom h \ A by A1,XBOOLE_0:def 3;
per cases;
suppose
A7: x in dom h \ A;
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;
end;
suppose
A8: not x in dom h \ A;
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;
end;
end;
then (f +* h) | (dom (f +* h) \ A) = (g +* h) | (dom (g +* h) \ A) by A4;
hence thesis;
end;
theorem
for f,g,h being Function, A being set holds f, g equal_outside A
implies h +* f, h +* g equal_outside A
proof
let f,g,h be Function;
let A be set;
assume f,g equal_outside A;
then
A1: f | (dom f \ A) = g | (dom g \ A);
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
let x be object;
assume
A5: x in dom ((h +* f) | (dom (h +* f) \ A));
then
A6: x in dom h \ A or x in dom f \ A by A3,XBOOLE_0:def 3;
per cases;
suppose
A7: x in dom f \ A;
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;
end;
suppose
A8: not x in dom f \ A;
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;
end;
end;
then (h +* f) | (dom (h +* f) \ A) = (h +* g) | (dom (h +* g) \ A) by A4;
hence thesis;
end;
theorem
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;
thus f +* h = g +* h implies f,g equal_outside dom h
proof
assume f +* h = g +* h;
then
A1: f +* h,g equal_outside dom h by Th25,Th28;
f, f +* h equal_outside dom h by Th28;
hence thesis by A1;
end;
assume
A2: f,g equal_outside dom h;
then
A3: dom f \ dom h = dom g \ dom h by Th27;
A4: for x being object st x in dom (f +* h) holds (f +* h).x = (g +* h).x
proof
let x be object;
assume
A5: x in dom (f +* h);
per cases;
suppose
A6: x in dom h;
hence (f +* h).x = h.x by FUNCT_4:13
.= (g +* h).x by A6,FUNCT_4:13;
end;
suppose
A7: not x in dom h;
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;
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;
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 thesis by A4;
end;
:: from SF_MASTR, 2007.07.25, A.T.
theorem Th106:
for x, y, a being object, f being Function st f.x = f.y holds f.a
= (f*((id dom f)+*(x,y))).a
proof
let x, y, a be object, f be Function;
assume
A1: f.x = f.y;
set g1 = (id dom f)+*(x,y);
A2: dom id dom f = dom f;
per cases;
suppose
not x in dom f;
then id dom f = g1 by Def2;
hence thesis by RELAT_1:52;
end;
suppose
A3: x in dom f;
A4: dom g1 = dom f by A2,Th29;
A5: g1.x = y by A2,A3,Th30;
thus f.a = (f*((id dom f)+*(x,y))).a
proof
per cases;
suppose
A6: a in dom f;
now
assume a <> x;
then g1.a = (id dom f).a by Th31
.= a by A6,FUNCT_1:18;
hence thesis by A4,A6,FUNCT_1:13;
end;
hence thesis by A1,A3,A5,A4,FUNCT_1:13;
end;
suppose
A7: not a in dom f;
dom (f*g1) c= dom g1 by RELAT_1:25;
then not a in dom (f*g1) by A4,A7;
then (f*g1).a = {} by FUNCT_1:def 2;
hence thesis by A7,FUNCT_1:def 2;
end;
end;
end;
end;
theorem
for x, y being set, 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, f be Function;
assume
A1: x in dom f implies y in dom f & f.x = f.y;
set g1 = (id dom f)+*(x,y);
set g = f*g1;
A2: dom id dom f = dom f;
per cases;
suppose
not x in dom f;
then id dom f = g1 by Def2;
hence thesis by RELAT_1:52;
end;
suppose
A3: x in dom f;
A4: dom g1 = dom f by A2,Th29;
now
rng g1 c= dom f
proof
let b be object;
assume b in rng g1;
then consider a being object such that
A5: a in dom g1 and
A6: b = g1.a by FUNCT_1:def 3;
per cases;
suppose
a = x;
hence thesis by A1,A2,A3,A6,Th30;
end;
suppose
a <> x;
then (id dom f).a = g1.a by Th31;
hence thesis by A4,A5,A6,FUNCT_1:18;
end;
end;
hence dom f = dom g by A4,RELAT_1:27;
let a be object;
assume a in dom f;
thus f.a = g.a by A1,A3,Th106;
end;
hence thesis;
end;
end;
:: from SCMFSA8C, 2007.07.26, A.T.
theorem
for f be Function, x be set st x in dom f holds f +* (x .--> f.x) = f
proof
let f be Function;
let x be set;
assume x in dom f;
hence f +* (x .--> f.x) = f +*(x,f.x) by Def2
.= f by Th34;
end;
:: from SFMASTR3, 2007.07.26, A.T.
theorem Th109:
for X being set, p being Permutation of X, x, y being Element
of X holds p+*(x, p.y)+*(y, p.x) is Permutation of X
proof
let X be set, p be Permutation of X, x, y be Element of X;
set p1 = p+*(x, p.y);
set p2 = p1+*(y, p.x);
A1: dom p2 = dom p1 by Th29;
A2: dom p1 = dom p by Th29;
A3: X = {} implies X = {};
then
A4: dom p = X by FUNCT_2:def 1;
per cases;
suppose
X is empty;
then p2 = {};
hence thesis by A3;
end;
suppose
A5: X is non empty;
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
proof
per cases;
suppose
A8: x = y;
then p2 = p1 by Th34
.= p by A8,Th34;
hence thesis;
end;
suppose
A9: x <> y;
then
A10: p2.x = p1.x by Th31
.= p.y by A4,A5,Th30;
A11: now
let z be set such that
z in X and
A12: z <> x and
A13: z <> y;
thus p2.z = p1.z by A13,Th31
.= p.z by A12,Th31;
end;
A14: p2.y = p.x by A2,A4,A5,Th30;
A15: now
let pz be object;
hereby
assume pz in rng p2;
then consider z being object such that
A16: z in dom p2 and
A17: pz = p2.z by FUNCT_1:def 3;
A18: p.z in X by A1,A2,A6,A16,FUNCT_1:def 3;
per cases;
suppose
z = x;
hence pz in X by A4,A5,A6,A10,A17,FUNCT_1:def 3;
end;
suppose
z = y;
hence pz in X by A2,A4,A7,A17,Th30;
end;
suppose
z <> x & z <> y;
hence pz in X by A1,A2,A11,A16,A17,A18;
end;
end;
assume pz in X;
then consider z being object such that
A19: z in dom p and
A20: pz = p.z by A6,FUNCT_1:def 3;
per cases;
suppose
z = x;
hence pz in rng p2 by A1,A2,A4,A14,A19,A20,FUNCT_1:def 3;
end;
suppose
z = y;
hence pz in rng p2 by A1,A2,A4,A10,A19,A20,FUNCT_1:def 3;
end;
suppose
z <> x & z <> y;
then p2.z = p.z by A11,A19;
hence pz in rng p2 by A1,A2,A19,A20,FUNCT_1:def 3;
end;
end;
then rng p2 = X by TARSKI:2;
then reconsider p2 as Function of X, X by A1,A2,A4,A5,FUNCT_2:def 1
,RELSET_1:4;
now
let z1, z2 be object such that
A21: z1 in X and
A22: z2 in X and
A23: p2.z1 = p2.z2 and
A24: z1 <> z2;
per cases;
suppose
z1 = x & z2 = y;
hence contradiction by A5,A9,A10,A14,A23,FUNCT_2:19;
end;
suppose
z1 = y & z2 = x;
hence contradiction by A5,A9,A10,A14,A23,FUNCT_2:19;
end;
suppose
A25: z1 = x & z2 <> y;
then p2.z2 = p.z2 by A11,A22,A24;
hence contradiction by A10,A22,A23,A25,FUNCT_2:19;
end;
suppose
A26: z1 <> x & z2 = y;
then p2.z1 = p.z1 by A11,A21,A24;
hence contradiction by A14,A21,A23,A26,FUNCT_2:19;
end;
suppose
A27: z1 = y & z2 <> x;
then p2.z2 = p.z2 by A11,A22,A24;
hence contradiction by A14,A22,A23,A27,FUNCT_2:19;
end;
suppose
A28: z1 <> y & z2 = x;
then p2.z1 = p.z1 by A11,A21,A24;
hence contradiction by A10,A21,A23,A28,FUNCT_2:19;
end;
suppose
z1 <> y & z2 <> x & z1 <> x & z2 <> y;
then p2.z1 = p.z1 & p2.z2 = p.z2 by A11,A21,A22;
hence contradiction by A21,A22,A23,A24,FUNCT_2:19;
end;
end;
then
A29: p2 is one-to-one by A5,FUNCT_2:19;
rng p2 = X by A15,TARSKI:2;
then p2 is onto by FUNCT_2:def 3;
hence thesis by A29;
end;
end;
end;
end;
theorem
for f being Function, x, y being set st x in dom f & y in dom f ex p
being Permutation of dom f st f+*(x, f.y)+*(y, f.x) = f*p
proof
let f be Function, x, y be set such that
A1: x in dom f and
A2: y in dom f;
set i = id dom f;
i.x = x & i.y = y by A1,A2,FUNCT_1:18;
then reconsider p = i+*(x,y)+*(y,x) as Permutation of dom f by A1,A2,Th109;
set pk = i+*(x, y);
set fr = f*p;
set fk = f+*(x, f.y);
take p;
set fl = fk+*(y, f.x);
A3: dom i = dom f;
A4: dom fk = dom fl by Th29;
A5: dom p = dom pk by Th29;
A6: dom pk = dom i by Th29;
A7: dom f = dom fk by Th29;
now
thus dom f = dom fl by A4,Th29;
rng p = dom f by FUNCT_2:def 3;
hence dom f = dom fr by A5,A6,RELAT_1:27;
let z be object such that
A8: z in dom f;
per cases;
suppose
A9: x <> y;
thus fl.z = fr.z
proof
per cases;
suppose
A10: z = x;
hence fl.z = fk.z by A9,Th31
.= f.y by A8,A10,Th30
.= f.(pk.x) by A1,A3,Th30
.= f.(p.x) by A9,Th31
.= fr.z by A5,A6,A8,A10,FUNCT_1:13;
end;
suppose
A11: z = y;
hence fl.z = f.x by A7,A8,Th30
.= f.(p.y) by A2,A6,Th30
.= fr.z by A5,A6,A8,A11,FUNCT_1:13;
end;
suppose
A12: z <> x & z <> y;
then
A13: p.z = pk.z by Th31
.= i.z by A12,Th31
.= z by A8,FUNCT_1:18;
thus fl.z = fk.z by A12,Th31
.= f.(p.z) by A12,A13,Th31
.= fr.z by A5,A6,A8,FUNCT_1:13;
end;
end;
end;
suppose
A14: x = y;
A15: x = i.x by A1,FUNCT_1:17;
fk = f & i = i+*(x, i.y) by A14,Th34;
hence fl.z = fr.z by A14,A15,RELAT_1:52;
end;
end;
hence thesis;
end;
:: from SCMISORT, 2007.07.26, A.T.
theorem
for f be Function,d,r be set st d in dom f holds dom f=dom (f+*(d.-->r
))
proof
let f be Function,d,r be set;
assume
A1: d in dom f;
thus dom f=dom (f+*(d,r)) by Th29
.=dom (f+*(d.-->r)) by A1,Def2;
end;
:: from SCMBISORT, 2007.07.26, A.T.
theorem
for f,g be FinSequence of INT,m,n be 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 be 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,m,n be Nat;
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);
A4: dom (f+*(m,f/.n))=dom f by Th29;
A5: n in dom f by A1,FINSEQ_3:25;
hence
A6: g.n=f/.m by A3,A4,Th30
.=f.m by A2,FINSEQ_4:15;
A7: m in dom f by A2,FINSEQ_3:25;
thus
A8: now
per cases;
suppose
m=n;
hence g.m=f.n by A6;
end;
suppose
m<>n;
hence g.m=(f+*(m,f/.n)).m by A3,Th31
.=f/.n by A7,Th30
.=f.n by A1,FINSEQ_4:15;
end;
end;
A9: now
let k be set;
assume that
A10: k<>m and
A11: k<>n and
k in dom f;
thus g.k=(f+*(m,f/.n)).k by A3,A11,Th31
.=f.k by A10,Th31;
end;
dom g =dom f by A3,A4,Th29;
hence thesis by A5,A7,A6,A8,A9,RFINSEQ:28;
end;
:: from SCMFSA10, 2007.07.27, A.T.
theorem
for f being Function, 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, a, A, b, B, c, C be set;
assume a <> b & a <> c;
hence
( f +* (a .--> A) +* (b .--> B) +* (c .--> C) ).a = ( f +* (a .--> A) )
.a by FUNCT_4:91
.= A by Th93;
end;
:: comp TOPALG_3:1, 2008.01.18, A.T.
theorem Th114:
for A, B, a, b being set, 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, f be Function of A,B such that
A1: b in B;
A2: dom f = A by A1,FUNCT_2:def 1;
per cases;
suppose
not a in A;
hence thesis by A2,Def2;
end;
suppose
A3: a in A;
set g = a .--> b;
set f1 = f +* g;
rng g = {b} by FUNCOP_1:8;
then rng g c= B by A1,ZFMISC_1:31;
then
A4: rng f1 c= rng f \/ rng g & rng f \/ rng g c= B \/ B by FUNCT_4:17
,XBOOLE_1:13;
A5: {a} c= A by A3,ZFMISC_1:31;
dom f1 = A \/ dom g by A2,FUNCT_4:def 1
.= A \/ {a} by FUNCOP_1:13
.= A by A5,XBOOLE_1:12;
then
A6: f +* g 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 thesis by A6,Def2;
end;
end;
:: missing, 2008.03.23, A.T.
theorem Th115:
rng f c= A implies f+~(x,y) = (id A+*(x,y))*f
proof
assume
A1: rng f c= A;
per cases;
suppose
x in A;
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,Def2;
end;
suppose
A3: not x in A;
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,Def2;
end;
end;
theorem
(f+*g)+~(x,y) = f+~(x,y)+*(g+~(x,y))
proof
set A = rng f \/ rng g;
A1: g+~(x,y) =(id A+*(x,y))*g by Th115,XBOOLE_1:7;
A2: dom(id A+*(x,y)) = dom id A by Th29
.= A;
rng(f+*g) c= A by FUNCT_4:17;
hence (f+*g)+~(x,y) = (id A+*(x,y))*(f+*g) by Th115
.= (id A+*(x,y))*f+*((id A+*(x,y))*g) by A2,Th9,XBOOLE_1:7
.= f+~(x,y)+*(g+~(x,y)) by A1,Th115,XBOOLE_1:7;
end;
definition
let a,b be set;
func a followed_by b -> set equals
(NAT --> b) +* (0,a);
coherence;
end;
registration
let a,b be set;
cluster a followed_by b -> Function-like Relation-like;
coherence;
end;
reserve a,b,c for set;
theorem Th117:
dom(a followed_by b) = NAT
proof
thus dom(a followed_by b) = dom((NAT --> b) +* (0,a))
.= dom(NAT --> b) by Th29
.= NAT by FUNCOP_1:13;
end;
definition
let X be non empty set;
let a,b be Element of X;
redefine func a followed_by b -> sequence of X;
coherence
proof
a followed_by b = (NAT --> b) +* (0,a);
hence thesis by Th114;
end;
end;
theorem Th118:
(a followed_by b).0 = a
proof
dom(NAT --> b) = NAT by FUNCOP_1:13;
hence thesis by Th30;
end;
theorem Th119:
for n st n > 0 holds (a followed_by b).n = b
proof
let n;
A1: n in NAT by ORDINAL1:def 12;
assume n > 0;
hence (a followed_by b).n = (NAT --> b).n by Th31
.= b by A1,FUNCOP_1:7;
end;
:: from DYNKIN, 2008.09.24, A.T.
definition
let a,b,c be set;
func (a,b) followed_by c -> set equals
(NAT --> c) +* ((0,1) --> (a,b));
coherence;
end;
registration
let a,b,c be set;
cluster (a,b) followed_by c -> Function-like Relation-like;
coherence;
end;
theorem Th120:
dom (a,b) followed_by c = NAT
proof
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;
end;
theorem Th121:
((a,b) followed_by c).0 = a
proof
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;
end;
theorem Th122:
((a,b) followed_by c).1 = b
proof
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;
end;
theorem Th123:
for n st n > 1 holds ((a,b) followed_by c).n = c
proof
let n;
assume
A1: n > 1;
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;
end;
theorem Th124:
(a,b) followed_by c = (a followed_by c) +* (1,b)
proof
set f = (a,b) followed_by c, g = (a followed_by c) +* (1,b);
A1: dom(a followed_by c) = NAT by Th117;
A2: dom f = NAT by Th120;
hence dom f = dom g by A1,Th29;
let x be object;
assume x in dom f;
then reconsider n=x as Nat by A2;
per cases by NAT_1:25;
suppose
A3: n = 0;
hence f.x = a by Th121
.= (a followed_by c).x by A3,Th118
.= g.x by A3,Th31;
end;
suppose
A4: n = 1;
hence f.x = b by Th122
.= g.x by A1,A4,Th30;
end;
suppose
A5: n > 1;
hence f.x = c by Th123
.= (a followed_by c).x by A5,Th119
.= g.x by A5,Th31;
end;
end;
definition
let X be non empty set;
let a,b,c be Element of X;
redefine func (a,b) followed_by c -> sequence of X;
coherence
proof
(a,b) followed_by c = (a followed_by c) +* (1,b) by Th124;
hence thesis by Th114;
end;
end;
theorem Th125:
rng(a followed_by b) = {a,b}
proof
rng(NAT --> b) = {b} by FUNCOP_1:8;
then rng((NAT --> b)+*(0,a)) c= {b} \/ {a} by Th99;
hence rng(a followed_by b) c= {a,b} by ENUMSET1:1;
let x be object;
assume
A1: x in {a,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 Th29;
(a followed_by b).1 = b by Th119;
then
A4: b in rng(a followed_by b) by A3,FUNCT_1:3;
a in rng(a followed_by b) by A2,Th101;
hence thesis by A1,A4,TARSKI:def 2;
end;
theorem
rng (a,b) followed_by c = {a,b,c}
proof
A1: (a,b) followed_by c = (a followed_by c) +* (1,b) by Th124;
then
A2: dom (a,b) followed_by c = dom(a followed_by c) by Th29
.= dom(NAT --> c) by Th29
.= NAT by FUNCOP_1:13;
((a,b) followed_by c).2 = c by Th123;
then
A3: c in rng (a,b) followed_by c by A2,FUNCT_1:3;
((a,b) followed_by c).1 = b by Th122;
then
A4: b in rng (a,b) followed_by c by A2,FUNCT_1:3;
rng(a followed_by c) = {a,c} by Th125;
then rng((a followed_by c)+*(1,b)) c= {a,c} \/ {b} by Th99;
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;
let x be object;
((a,b) followed_by c).0 = a by Th121;
then
A5: a in rng (a,b) followed_by c by A2,FUNCT_1:3;
assume x in {a,b,c};
hence thesis by A5,A4,A3,ENUMSET1:def 1;
end;
:: from POLYNOM1, 2008.12.15, A.T.
definition
let A, B be set, f be Function of A, B, x be set, y be Element of B;
redefine func f+*(x,y) -> Function of A, B;
coherence
proof
set F = f+*(x,y);
A1: rng F c= rng f \/ {y} by Th99;
per cases;
suppose
B is empty;
then dom f is empty;
hence thesis by Def2;
end;
suppose
A2: B is non empty;
then {y} c= B by ZFMISC_1:31;
then rng f \/ {y} c= B by XBOOLE_1:8;
then
A3: rng F c= B by A1;
dom f = A by A2,FUNCT_2:def 1;
then dom F = A by Th29;
hence thesis by A2,A3,FUNCT_2:def 1,RELSET_1:4;
end;
end;
end;
:: missing, 2008.12.14, A.T.
theorem
for A, B being non empty set, f being Function of A, B, x being
Element of A, y being set holds f+*(x,y).x = y
proof
let A, B be non empty set, f be Function of A, B, x be Element of A, y be
set;
x in A;
then x in dom f by FUNCT_2:def 1;
hence thesis by Th30;
end;
theorem
for A, B being non empty set, f,g being Function of A, B, 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, f,g be Function of A, B, x be Element of A such
that
A1: for y being Element of A st f.y <> g.y holds y = 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 object 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 object;
assume
A4: e in dom g \/ dom (x.-->f.x);
thus e in dom(x.-->f.x) implies f.e = (x.-->f.x).e
proof
assume e in dom(x.-->f.x);
then e in {x} by FUNCOP_1:13;
then e = x by TARSKI:def 1;
hence thesis by FUNCOP_1:72;
end;
assume not e in dom(x.-->f.x);
then not e in {x} by FUNCOP_1:13;
then e <> x by TARSKI:def 1;
hence thesis by A1,A4;
end;
hence f = g+*(x.-->f.x) by A3,FUNCT_4:def 1
.= g+*(x,f.x) by A2,Def2;
end;
theorem Th129:
for g being A-defined Function holds f,f+*g equal_outside A
proof
let g be A-defined Function;
dom g c= A;
hence thesis by Th28;
end;
theorem
for f,g being A-defined Function holds f,g equal_outside A
proof
let f,g be A-defined Function;
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;
end;
theorem
for f,g being A-defined Function, h being Function
holds h+*f, h+*g equal_outside A
proof
let f,g be A-defined Function, h be Function;
h, h+*f equal_outside A by Th129;
then
A1: h+*f,h equal_outside A;
h, h+*g equal_outside A by Th129;
hence thesis by A1;
end;
theorem
for I being NAT-defined Function holds card Shift(I,m) = card I
proof
defpred NC[set] means not contradiction;
deffunc U(Nat) = $1;
let I be NAT-defined Function;
A1: for x being set st x in dom I ex d being Element of NAT st x = U(d);
defpred X[Nat] means $1 in dom I;
deffunc V(Nat) = $1+m;
set B = { l where l is Element of NAT: U(l) in dom I },
C = { V(l) where l is Nat: l in { n: X[n] } & NC[l] },
D = { V(l) where l is Element of NAT: l in B },
E = { l+m where l is Nat: l in dom I };
A2: for d1,d2 being Element of NAT st U(d1) = U(d2) holds d1=d2;
A3: dom I,B are_equipotent from CardMono(A1,A2);
A4: C c= E
proof
let e be object;
assume e in C;
then consider l being Nat such that
A5: e =V(l) and
A6: l in { n: X[n] } & NC[l];
ex n st n=l & X[n] by A6;
hence thesis by A5;
end;
set B = { l where l is Element of NAT: X[l] };
B is Subset of NAT from DOMAIN_1:sch 7;
then
A7: B c= NAT;
set B = { l where l is Element of NAT: l in dom I };
A8: for d1,d2 be Element of NAT st V(d1) = V(d2) holds d1 = d2;
A9: B,D are_equipotent from CardMono9(A7,A8);
A10: E c= D
proof
let e be object;
assume e in E;
then consider l being Nat such that
A11: e = l+m and
A12: l in dom I;
reconsider l as Element of NAT by ORDINAL1:def 12;
l in B by A12;
hence thesis by A11;
end;
A13: dom Shift(I,m) = E by VALUED_1:def 12;
A14: D c= C
proof
let e be object;
assume e in D;
then consider l1 being Element of NAT such that
A15: e = V(l1) and
A16: l1 in B;
ex l being Element of NAT st l1 = l & U(l) in dom I by A16;
then l1 in dom I;
then l1 in { n: X[n] };
hence thesis by A15;
end;
then E c= C by A10;
then
A17: C = E by A4;
then C = D by A10,A14;
then
A18: dom Shift(I,m),dom I are_equipotent by A3,A17,A9,A13,WELLORD2:15;
thus card Shift(I,m) = card dom Shift(I,m) by CARD_1:62
.= card dom I by A18,CARD_1:5
.= card I by CARD_1:62;
end;
theorem Th133:
dom f = dom g & dom f c= A \/ B & f|B = g|B
implies f,g equal_outside A
by RELAT_1:153,XBOOLE_1:43;
theorem Th134:
dom f = dom g & B c= dom f & A misses B & f,g equal_outside A
implies f|B = g|B
by RELAT_1:153,XBOOLE_1:86;
reserve A,B,I for set, X,Y for ManySortedSet of I;
theorem
I c= A \/ B & X|B = Y|B implies X,Y equal_outside A
proof
dom X = I & dom Y = I by PARTFUN1:def 2;
hence thesis by Th133;
end;
theorem
B c= I & A misses B & X,Y equal_outside A implies X|B = Y|B
proof
dom X = I & dom Y = I by PARTFUN1:def 2;
hence thesis by Th134;
end;
registration let V be non empty set;
let f be V-valued Function, x be object, y be Element of V;
cluster f+*(x,y) -> V-valued;
coherence
proof
A1: rng(f+*(x,y)) c= rng f \/ {y} by Th99;
thus rng(f+*(x,y)) c= V by A1,XBOOLE_1:1;
end;
end;
theorem
f c= g & not x in dom f implies f c= g+*(x,y)
proof assume that
A1: f c= g;
assume not x in dom f;
then
A2: f c= f +*(x .--> y) by FUNCT_4:107;
per cases;
suppose x in dom g;
then g+*(x,y) = g+*(x.-->y) by Def2;
then f +*(x .--> y) c= g+*(x,y) by A1,FUNCT_4:123;
hence f c= g+*(x,y) by A2;
end;
suppose not x in dom g;
hence f c= g+*(x,y) by A1,Def2;
end;
end;
theorem
for I being non empty set, X being ManySortedSet of I,
l1,l2 being Element of I, i1,i2 being set
holds X +*((l1,l2) --> (i1, i2)) = X +* (l1,i1) +* (l2,i2)
proof
let I be non empty set, X be ManySortedSet of I,
l1,l2 be Element of I, i1,i2 be set;
A1: dom X = I by PARTFUN1:def 2;
then
A2: l1 in dom X;
dom(X +* (l1,i1)) = I by A1,Th29;
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,Def2
.=X +* (l1,i1) +* (l2,i2) by A3,Def2;
end;
scheme Unionx { A()-> non empty set, a,b()-> Element of A(),
f() -> A()-valued Function,
x() -> object, F(object) -> object }:
{ F(i) where i is Element of A() : i in rng f()} =
{ F(j) where j is Element of A() : j in rng(f()+*(x(),a()))}
provided
A1: F(b()) = F(a()) and
A2: b() = f().x()
proof
set X = { F(i) where i is Element of A() : i in rng f()},
Y = { F(j) where j is Element of A() : j in rng(f()+*(x(),a()))};
thus X c= Y
proof
let e be object;
assume e in X;
then consider j being Element of A() such that
A3: e = F(j) and
A4: j in rng f();
consider y being object such that
A5: y in dom f() and
A6: f().y = j by A4,FUNCT_1:def 3;
y in dom(f()+*(x(),a())) by A5,Th29;
then
A7: (f()+*(x(),a())).y in rng(f()+*(x(),a())) by FUNCT_1:3;
now per cases;
suppose y = x();
hence e = F((f()+*(x(),a())).y) by A1,A2,A3,A6,Th30,A5;
end;
suppose y <> x();
hence e = F((f()+*(x(),a())).y) by A3,Th31,A6;
end;
end;
hence e in Y by A7;
end;
let e be object;
assume e in Y;
then consider j being Element of A() such that
A8: e = F(j) and
A9: j in rng(f()+*(x(),a()));
consider y being object such that
A10: y in dom(f()+*(x(),a())) and
A11: (f()+*(x(),a())).y = j by A9,FUNCT_1:def 3;
A12: y in dom f() by A10,Th29;
then
A13: f().y in rng f() by FUNCT_1:3;
now per cases;
suppose y = x();
hence e = F(f().y) by A1,A2,A8,A11,Th30,A12;
end;
suppose y <> x();
hence e = F(f().y) by A8,Th31,A11;
end;
end;
hence e in X by A13;
end;
*