begin
:: deftheorem DefInj1 defines -one-to-one FOMODEL0:def 1 :
for X being set
for f being Function holds
( f is X -one-to-one iff f | X is one-to-one );
:: deftheorem DefUnambiguous1 defines -unambiguous FOMODEL0:def 2 :
for D being non empty set
for f being BinOp of D
for X being set holds
( X is f -unambiguous iff f is [:X,D:] -one-to-one );
:: deftheorem DefPrefix defines -prefix FOMODEL0:def 3 :
for D being non empty set
for X being set holds
( X is D -prefix iff X is D -concatenation -unambiguous );
:: deftheorem defines -pr1 FOMODEL0:def 4 :
for D being set holds D -pr1 = pr1 (D,D);
Lm45:
for Y being set
for g being Function st g is Y -valued & g is FinSequence-like holds
g is FinSequence of Y
Lm28:
for Y, A, B being set st Y c= Funcs (A,B) holds
union Y c= [:A,B:]
LmOneOne:
for X being set
for f being Function holds
( f is X -one-to-one iff for x, y being set st x in (dom f) /\ X & y in (dom f) /\ X & f . x = f . y holds
x = y )
Lm12:
for D being non empty set
for A, B being set
for f being BinOp of D st A c= B & f is B -one-to-one holds
f is A -one-to-one
Lm18:
for A, B being set
for m, n being Nat st m -tuples_on A meets n -tuples_on B holds
m = n
Lm21:
for i being Nat
for Y being set holds i -tuples_on Y = Funcs ((Seg i),Y)
Lm11:
for A, B being set
for m being Nat holds (m -tuples_on A) /\ (B *) c= m -tuples_on B
theorem Lm22:
Lm20:
for A, B, C being set holds (Funcs (A,B)) /\ (Funcs (A,C)) = Funcs (A,(B /\ C))
theorem Lm23:
theorem Lm24:
ThConcatenation:
for D being non empty set
for x, y being FinSequence of D holds (D -concatenation) . (x,y) = x ^ y
theorem Th4:
theorem Lm2:
Lm13:
for D being non empty set
for B, A being set
for f being BinOp of D st B is f -unambiguous & A c= B holds
A is f -unambiguous
Lm14:
for D being non empty set
for f being BinOp of D holds {} is f -unambiguous
Lm27:
for f, g being FinSequence holds dom <:f,g:> = Seg (min ((len f),(len g)))
:: deftheorem DefInj2 defines -one-to-one FOMODEL0:def 5 :
for X being set
for f being Function holds
( f is X -one-to-one iff for x, y being set st x in X /\ (dom f) & y in X /\ (dom f) & f . x = f . y holds
x = y );
:: deftheorem DefMultPlace defines MultPlace FOMODEL0:def 6 :
for D being non empty set
for f being BinOp of D
for x being FinSequence of D
for b4 being Function holds
( b4 = MultPlace (f,x) iff ( dom b4 = NAT & b4 . 0 = x . 1 & ( for n being Nat holds b4 . (n + 1) = f . ((b4 . n),(x . (n + 2))) ) ) );
Lm1:
for D being non empty set
for f being BinOp of D
for x being FinSequence of D
for m being Nat holds
( ( m + 1 <= len x implies (MultPlace (f,x)) . m in D ) & ( for n being Nat st n >= m + 1 holds
(MultPlace (f,(x | n))) . m = (MultPlace (f,x)) . m ) )
:: deftheorem defines MultPlace FOMODEL0:def 7 :
for D being non empty set
for f being BinOp of D
for x being Element of (D *) \ {{}} holds MultPlace (f,x) = MultPlace (f,x);
:: deftheorem DefMultPlace2 defines MultPlace FOMODEL0:def 8 :
for D being non empty set
for f being BinOp of D
for b3 being Function of ((D *) \ {{}}),D holds
( b3 = MultPlace f iff for x being Element of (D *) \ {{}} holds b3 . x = (MultPlace (f,x)) . ((len x) - 1) );
LmMultPlace:
for D being non empty set
for f being BinOp of D
for x being non empty FinSequence of D
for y being Element of D holds
( (MultPlace f) . <*y*> = y & (MultPlace f) . (x ^ <*y*>) = f . (((MultPlace f) . x),y) )
Lm3:
for D being non empty set
for f being BinOp of D
for X being set holds
( f is [:X,D:] -one-to-one iff for x, y, d1, d2 being set st x in X /\ D & y in X /\ D & d1 in D & d2 in D & f . (x,d1) = f . (y,d2) holds
( x = y & d1 = d2 ) )
definition
let D be non
empty set ;
let f be
BinOp of
D;
let X be
set ;
redefine attr X is
f -unambiguous means :
DefUnambiguous2:
for
x,
y,
d1,
d2 being
set st
x in X /\ D &
y in X /\ D &
d1 in D &
d2 in D &
f . (
x,
d1)
= f . (
y,
d2) holds
(
x = y &
d1 = d2 );
compatibility
( X is f -unambiguous iff for x, y, d1, d2 being set st x in X /\ D & y in X /\ D & d1 in D & d2 in D & f . (x,d1) = f . (y,d2) holds
( x = y & d1 = d2 ) )
end;
:: deftheorem DefUnambiguous2 defines -unambiguous FOMODEL0:def 9 :
for D being non empty set
for f being BinOp of D
for X being set holds
( X is f -unambiguous iff for x, y, d1, d2 being set st x in X /\ D & y in X /\ D & d1 in D & d2 in D & f . (x,d1) = f . (y,d2) holds
( x = y & d1 = d2 ) );
Lm19:
for D being non empty set
for f being BinOp of D st f is associative holds
for d being Element of D
for m being Nat
for x being Element of (m + 1) -tuples_on D holds (MultPlace f) . (<*d*> ^ x) = f . (d,((MultPlace f) . x))
Lm5:
for D being non empty set
for X being non empty Subset of D
for f being BinOp of D
for m being Nat st f is associative & X is f -unambiguous holds
(MultPlace f) .: ((m + 1) -tuples_on X) is f -unambiguous
Lm15:
for D being non empty set
for Y being set
for f being BinOp of D
for m being Nat st f is associative & Y is f -unambiguous holds
(MultPlace f) .: ((m + 1) -tuples_on Y) is f -unambiguous
Lm17:
for D being non empty set
for X being non empty Subset of D
for f being BinOp of D
for m being Nat st f is associative & X is f -unambiguous holds
MultPlace f is (m + 1) -tuples_on X -one-to-one
Lm26:
for D being non empty set
for Y being set
for f being BinOp of D
for m being Nat st f is associative & Y is f -unambiguous holds
MultPlace f is (m + 1) -tuples_on Y -one-to-one
:: deftheorem defines -firstChar FOMODEL0:def 10 :
for D being non empty set holds D -firstChar = MultPlace (D -pr1);
Th2:
for D being non empty set
for w being non empty FinSequence of D holds (D -firstChar) . w = w . 1
theorem
:: deftheorem defines -multiCat FOMODEL0:def 11 :
for D being non empty set holds D -multiCat = ({} .--> {}) +* (MultPlace (D -concatenation));
Lm6:
for D being non empty set holds (D -multiCat) | (((D *) *) \ {{}}) = MultPlace (D -concatenation)
Lm16:
for D being non empty set
for Y being set holds (D -multiCat) | (Y \ {{}}) = (MultPlace (D -concatenation)) | Y
Lm9:
for D being non empty set holds {} .--> {} tolerates MultPlace (D -concatenation)
Lm59:
for D being non empty set
for B, A being set st B is D -prefix & A c= B holds
A is D -prefix
theorem Lm25:
theorem
theorem
theorem
theorem
theorem
theorem
theorem Th14:
theorem
:: deftheorem defines AppliedPairwiseTo FOMODEL0:def 12 :
for D being non empty set
for f being BinOp of D
for p, q being Element of D * holds f AppliedPairwiseTo (p,q) = f * <:p,q:>;
:: deftheorem defines INT FOMODEL0:def 13 :
INT = NAT \/ ([:{0},NAT:] \ {[0,0]});
theorem Th16:
:: deftheorem defines typed/\ FOMODEL0:def 14 :
for A, B being set holds A typed/\ B = A /\ B;
:: deftheorem defines /\typed FOMODEL0:def 15 :
for A, B being set holds A /\typed B = A /\ B;
:: deftheorem defines null FOMODEL0:def 16 :
for B, A being set holds A null B = A;
:: deftheorem defines typed\ FOMODEL0:def 17 :
for A, B being set holds A typed\ B = A \ B;
:: deftheorem defines \typed/ FOMODEL0:def 18 :
for A, B being set holds A \typed/ B = A;
Lm43:
for m being Nat
for g, f being Function st f c= g holds
iter (f,m) c= iter (g,m)
Lm31:
for R being Relation holds R [*] is_transitive_in field R
Lm32:
for R being Relation holds field (R [*]) c= field R
Lm37:
for R being Relation holds R [*] is_reflexive_in field R
Lm34:
for R being Relation holds field (R [*]) = field R
Lm38:
for f being Function holds iter (f,0) c= f [*]
Lm39:
for m being Nat
for f being Function holds iter (f,(m + 1)) c= f [*]
Lm40:
for m being Nat
for f being Function holds iter (f,m) c= f [*]
Lm35:
for x being set
for m being Nat
for g, f being Function st rng f c= dom f & x in dom f & g . 0 = x & ( for i being Nat st i < m holds
g . (i + 1) = f . (g . i) ) holds
g . m = (iter (f,m)) . x
:: deftheorem DefPlus defines plus FOMODEL0:def 19 :
for b1 being Function of COMPLEX,COMPLEX holds
( b1 = plus iff for z being complex number holds b1 . z = z + 1 );
Lm36:
for x being set
for m being Nat
for f being Function
for p being FinSequence st rng f c= dom f & x in dom f & p . 1 = x & ( for i being Nat st i >= 1 & i < m + 1 holds
p . (i + 1) = f . (p . i) ) holds
p . (m + 1) = (iter (f,m)) . x
Lm41:
for z being set
for f being Function st z in f [*] & rng f c= dom f holds
ex n being Nat st z in iter (f,n)
Lm42:
for f being Function st rng f c= dom f holds
f [*] = union { (iter (f,mm)) where mm is Element of NAT : verum }
theorem
theorem
theorem
theorem Th20:
theorem Th21:
theorem
theorem Th23:
Lm4:
for A, B being set holds chi (A,B) = (B --> 0) +* ((A /\ B) --> 1)
Lm10:
for A, B being set holds chi (A,B) = ((B \ A) --> 0) +* ((A /\ B) --> 1)
Lm29:
for A, B being set holds chi (A,B) = ((B \ A) --> 0) \/ ((A /\ B) --> 1)
theorem
theorem
theorem
Lm46:
for Y being set
for R being b1 -defined total Relation ex f being Function of Y,(rng R) st
( f c= R & dom f = Y )
Lm47:
for R being Relation
for f being Function st dom f c= dom R & R c= f holds
R = f
Lm48:
for Y being set
for R, P being Relation
for Q being b1 -defined Relation st Q is total & R is Y -defined & ((P * Q) * (Q ~)) * R is Function-like & rng P c= dom R holds
((P * Q) * (Q ~)) * R = P * R
theorem
theorem
:: deftheorem defines -prefix FOMODEL0:def 20 :
for U being non empty set
for X being set holds
( X is U -prefix iff for p1, q1, p2, q2 being b1 -valued FinSequence st p1 in X & p2 in X & p1 ^ q1 = p2 ^ q2 holds
( p1 = p2 & q1 = q2 ) );
theorem Th29:
for
Y,
X being
set holds
(
X \+\ Y = {} iff
X = Y )
theorem
theorem Th31:
:: deftheorem defines -SymbolSubstIn FOMODEL0:def 21 :
for x, y being set
for p being FinSequence holds (x,y) -SymbolSubstIn p = p +~ (x,y);
:: deftheorem defines -SymbolSubstIn FOMODEL0:def 22 :
for X, x, y being set
for p being b1 -valued FinSequence holds (x,y) -SymbolSubstIn p = ((id X) +* (x,y)) * p;
Lm53:
for x2 being set
for U being non empty set
for u, u1 being Element of U holds
( ( u = u1 implies (u1,x2) -SymbolSubstIn <*u*> = <*x2*> ) & ( u <> u1 implies (u1,x2) -SymbolSubstIn <*u*> = <*u*> ) )
Lm50:
for x being set
for U being non empty set
for u being Element of U
for q1, q2 being b2 -valued FinSequence holds (x,u) -SymbolSubstIn (q1 ^ q2) = ((x,u) -SymbolSubstIn q1) ^ ((x,u) -SymbolSubstIn q2)
:: deftheorem DefSubst defines SubstWith FOMODEL0:def 23 :
for U being non empty set
for x being set
for u being Element of U
for b4 being Function of (U *),(U *) holds
( b4 = x SubstWith u iff for q being b1 -valued FinSequence holds b4 . q = (x,u) -SymbolSubstIn q );
Lm54:
for U being non empty set
for u, u1, u2 being Element of U holds
( ( u = u1 implies (u1 SubstWith u2) . <*u*> = <*u2*> ) & ( u <> u1 implies (u1 SubstWith u2) . <*u*> = <*u*> ) )
Lm55:
for x being set
for U being non empty set
for u being Element of U
for q1, q2 being b2 -valued FinSequence holds (x SubstWith u) . (q1 ^ q2) = ((x SubstWith u) . q1) ^ ((x SubstWith u) . q2)
Lm51:
for R being Relation holds
( R is {{}} -valued iff R is empty-yielding )
theorem Th32:
theorem Th33:
Lm52:
for x being set
for U being non empty set
for u being Element of U
for p being FinSequence st p is U * -valued holds
(x SubstWith u) . ((U -multiCat) . p) = (U -multiCat) . ((x SubstWith u) * p)
theorem
theorem
theorem
theorem
theorem
theorem
theorem Th40:
Lm56:
for m being Nat
for p1, p2, q1, q2 being FinSequence st p1 is m -element & q1 is m -element & p1 ^ p2 = q1 ^ q2 holds
( p1 = q1 & p2 = q2 )
theorem
theorem
theorem
theorem
:: deftheorem defines SymbolsOf FOMODEL0:def 24 :
for X being functional set holds SymbolsOf X = union { (rng x) where x is Element of X \/ {{}} : x in X } ;
Lm58:
for X being functional set st X is finite & X is finite-membered holds
SymbolsOf X is finite
theorem
:: deftheorem defines SymbolsOf FOMODEL0:def 25 :
for X being functional set holds SymbolsOf X = union { (rng x) where x is Element of X : x in X } ;
Lm57:
for B being functional set
for A being Subset of B holds { (rng x) where x is Element of A : x in A } c= { (rng x) where x is Element of B : x in B }
theorem
theorem
theorem Th48:
for
X,
Y being
set holds
X = (X \ Y) \/ (X /\ Y)
theorem
theorem
theorem
theorem Th52:
:: deftheorem defines null FOMODEL0:def 26 :
for x being set holds x null = x;
Lm60:
for Y being set
for U being non empty set
for p being FinSequence st p <> {} & p is Y -valued & Y c= U * & Y is with_non-empty_elements holds
(U -multiCat) . p <> {}
theorem
theorem
theorem
theorem
theorem
theorem Th58:
:: deftheorem defines -freeCountableSet FOMODEL0:def 27 :
for X being set holds X -freeCountableSet = [:NAT,{ the Element of (bool (proj2 X)) \ (proj2 X)}:];
theorem Th59: