Article FUNCT_7, MML version 4.99.1005
:: FUNCT_7:th 1
theorem
for b1 being Relation-like Function-like set
for b2 being set
st proj2 b1 c= b2
holds b1 * id b2 = b1;
:: FUNCT_7:th 2
theorem
for b1 being set
for b2 being non empty set
for b3 being Function-like quasi_total Relation of b1,b2
st b3 is one-to-one
for b4 being Element of bool b1
for b5 being Element of bool b2
st b5 c= b3 .: b4
holds b3 " b5 c= b4;
:: FUNCT_7:th 3
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of b1,b2
st b3 is one-to-one
for b4 being Element of b1
for b5 being Element of bool b1
st b3 . b4 in b3 .: b5
holds b4 in b5;
:: FUNCT_7:th 4
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of b1,b2
st b3 is one-to-one
for b4 being Element of b1
for b5 being Element of bool b1
for b6 being Element of bool b2
st b3 . b4 in (b3 .: b5) \ b6
holds b4 in b5 \ (b3 " b6);
:: FUNCT_7:th 5
theorem
for b1, b2 being non empty set
for b3 being Function-like quasi_total Relation of b1,b2
st b3 is one-to-one
for b4 being Element of b2
for b5 being Element of bool b1
for b6 being Element of bool b2
st b4 in (b3 .: b5) \ b6
holds b3 " . b4 in b5 \ (b3 " b6);
:: FUNCT_7:th 6
theorem
for b1 being Relation-like Function-like set
for b2 being set
st b2 in proj1 b1
holds b1 | {b2} = b2 .--> (b1 . b2);
:: FUNCT_7:funcreg 1
registration
let a1, a2 be set;
cluster a1 .--> a2 -> non empty;
end;
:: FUNCT_7:funcreg 2
registration
let a1, a2, a3, a4 be set;
cluster (a1,a2)-->(a3,a4) -> non empty;
end;
:: FUNCT_7:th 7
theorem
for b1 being set
for b2 being ManySortedSet of b1
for b3 being set
st b3 in b1
holds b3 .--> (b2 . b3) = b2 | {b3};
:: FUNCT_7:th 8
theorem
for b1, b2 being set
for b3 being ManySortedSet of [:b1,b2:]
for b4, b5 being set
st b4 in b1 & b5 in b2
holds (b4,b5):-> (b3 .(b4,b5)) = b3 | [:{b4},{b5}:];
:: FUNCT_7:th 10
theorem
for b1, b2, b3 being Relation-like Function-like set
st proj2 b2 c= proj1 b1 & proj2 b3 c= proj1 b1
holds (b2 +* b3) * b1 = (b2 * b1) +* (b3 * b1);
:: FUNCT_7:th 11
theorem
for b1, b2, b3 being Relation-like Function-like set holds
b1 * (b2 +* b3) = (b1 * b2) +* (b1 * b3);
:: FUNCT_7:th 12
theorem
for b1, b2, b3 being Relation-like Function-like set
st proj2 b1 misses proj1 b2
holds b1 * (b3 +* b2) = b1 * b3;
:: FUNCT_7:th 13
theorem
for b1, b2, b3 being set
st b1 meets proj2 ((id b2) +* (b1 --> b3))
holds b3 in b1;
:: FUNCT_7:th 14
theorem
for b1, b2, b3 being set
st b1 <> b2
holds not b1 in proj2 ((id b3) +* (b1 .--> b2));
:: FUNCT_7:th 15
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set
st proj1 b3 = b1 \/ {b2}
holds b3 = (b3 | b1) +* (b2 .--> (b3 . b2));
:: FUNCT_7:th 16
theorem
for b1 being Relation-like Function-like set
for b2, b3, b4 being set holds
(b1 +* (b2 --> b3)) +* (b2 --> b4) = b1 +* (b2 --> b4);
:: FUNCT_7:th 18
theorem
INT <> INT *;
:: FUNCT_7:th 19
theorem
{} * = {{}};
:: FUNCT_7:th 20
theorem
for b1, b2 being set holds
<*b1*> in b2 *
iff
b1 in b2;
:: FUNCT_7:th 21
theorem
for b1, b2 being set
st b1 * c= b2 *
holds b1 c= b2;
:: FUNCT_7:th 22
theorem
for b1 being Element of bool NAT
st for b2, b3 being Element of NAT
st b2 in b1 & b3 < b2
holds b3 in b1
holds b1 is cardinal set;
:: FUNCT_7:th 23
theorem
for b1 being finite set
for b2 being non empty Element of bool bool b1 holds
ex b3 being Element of b2 st
for b4 being Element of b2
st b4 c= b3
holds b4 = b3;
:: FUNCT_7:th 24
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
st len b1 = (len b2) + 1
for b3 being Element of NAT holds
b3 in dom b2
iff
b3 in dom b1 & b3 + 1 in dom b1;
:: FUNCT_7:exreg 1
registration
cluster non empty Relation-like non-empty Function-like Function-yielding finite FinSequence-like set;
end;
:: FUNCT_7:funcreg 3
registration
cluster {} -> Function-yielding;
end;
:: FUNCT_7:funcreg 4
registration
let a1 be Relation-like Function-like set;
cluster <*a1*> -> Function-yielding;
end;
:: FUNCT_7:funcreg 5
registration
let a1, a2 be Relation-like Function-like set;
cluster <*a1,a2*> -> Function-yielding;
end;
:: FUNCT_7:funcreg 6
registration
let a1, a2, a3 be Relation-like Function-like set;
cluster <*a1,a2,a3*> -> Function-yielding;
end;
:: FUNCT_7:funcreg 7
registration
let a1 be Element of NAT;
let a2 be Relation-like Function-like set;
cluster a1 |-> a2 -> Relation-like Function-like Function-yielding FinSequence-like;
end;
:: FUNCT_7:funcreg 8
registration
let a1, a2 be Relation-like Function-like Function-yielding FinSequence-like set;
cluster a1 ^ a2 -> Relation-like Function-like Function-yielding FinSequence-like;
end;
:: FUNCT_7:th 25
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
st b1 ^ b2 is Function-yielding
holds b1 is Function-yielding & b2 is Function-yielding;
:: FUNCT_7:sch 1
scheme FUNCT_7:sch 1
{F1 -> non empty set,
F2 -> non empty set,
F3 -> non empty set,
F4 -> set}:
ex b1 being Function-like quasi_total Relation of [:F1(),F2():],F3() st
for b2 being Element of F1()
for b3 being Element of F2() holds
b1 .(b2,b3) = F4(b2, b3)
provided
for b1 being Element of F1()
for b2 being Element of F2() holds
F4(b1, b2) in F3();
:: FUNCT_7:sch 2
scheme FUNCT_7:sch 2
{F1 -> set,
F2 -> non empty set,
F3 -> set,
F4 -> set}:
{F3(b1) where b1 is Element of F2(): F4(b1) in F1()} is finite
provided
F1() is finite
and
for b1, b2 being Element of F2()
st F4(b1) = F4(b2)
holds b1 = b2;
:: FUNCT_7:sch 3
scheme FUNCT_7:sch 3
{F1 -> set,
F2 -> non empty set,
F3 -> set}:
F1(),{b1 where b1 is Element of F2(): F3(b1) in F1()} are_equipotent
provided
for b1 being set
st b1 in F1()
holds ex b2 being Element of F2() st
b1 = F3(b2)
and
for b1, b2 being Element of F2()
st F3(b1) = F3(b2)
holds b1 = b2;
:: FUNCT_7:sch 4
scheme FUNCT_7:sch 4
{F1 -> set,
F2 -> non empty set,
F3 -> set}:
F1(),{F3(b1) where b1 is Element of F2(): b1 in F1()} are_equipotent
provided
F1() c= F2()
and
for b1, b2 being Element of F2()
st F3(b1) = F3(b2)
holds b1 = b2;
:: FUNCT_7:sch 5
scheme FUNCT_7:sch 5
for b1 being Relation-like Function-like Function-yielding FinSequence-like set holds
P1[b1]
provided
P1[{}]
and
for b1 being Relation-like Function-like Function-yielding FinSequence-like set
st P1[b1]
for b2 being Relation-like Function-like set holds
P1[b1 ^ <*b2*>];
:: FUNCT_7:funcnot 1 => FUNCT_7:func 1
definition
let a1, a2 be set;
assume a1 in a2;
func In(A1,A2) -> Element of a2 equals
a1;
end;
:: FUNCT_7:def 1
theorem
for b1, b2 being set
st b1 in b2
holds In(b1,b2) = b1;
:: FUNCT_7:th 26
theorem
for b1, b2, b3 being set
st b1 in b2 /\ b3
holds In(b1,b2) = In(b1,b3);
:: FUNCT_7:prednot 1 => FUNCT_7:pred 1
definition
let a1, a2 be Relation-like Function-like set;
let a3 be set;
pred A1,A2 equal_outside A3 means
a1 | ((proj1 a1) \ a3) = a2 | ((proj1 a2) \ a3);
end;
:: FUNCT_7:dfs 2
definiens
let a1, a2 be Relation-like Function-like set;
let a3 be set;
To prove
a1,a2 equal_outside a3
it is sufficient to prove
thus a1 | ((proj1 a1) \ a3) = a2 | ((proj1 a2) \ a3);
:: FUNCT_7:def 2
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set holds
b1,b2 equal_outside b3
iff
b1 | ((proj1 b1) \ b3) = b2 | ((proj1 b2) \ b3);
:: FUNCT_7:th 27
theorem
for b1 being Relation-like Function-like set
for b2 being set holds
b1,b1 equal_outside b2;
:: FUNCT_7:th 28
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set
st b1,b2 equal_outside b3
holds b2,b1 equal_outside b3;
:: FUNCT_7:th 29
theorem
for b1, b2, b3 being Relation-like Function-like set
for b4 being set
st b1,b2 equal_outside b4 & b2,b3 equal_outside b4
holds b1,b3 equal_outside b4;
:: FUNCT_7:th 30
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set
st b1,b2 equal_outside b3
holds (proj1 b1) \ b3 = (proj1 b2) \ b3;
:: FUNCT_7:th 31
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set
st proj1 b2 c= b3
holds b1,b1 +* b2 equal_outside b3;
:: FUNCT_7:funcnot 2 => FUNCT_7:func 2
definition
let a1 be Relation-like Function-like set;
let a2, a3 be set;
func A1 +*(A2,A3) -> Relation-like Function-like set equals
a1 +* (a2 .--> a3)
if a2 in proj1 a1
otherwise a1;
end;
:: FUNCT_7:def 3
theorem
for b1 being Relation-like Function-like set
for b2, b3 being set holds
(b2 in proj1 b1 implies b1 +*(b2,b3) = b1 +* (b2 .--> b3)) &
(b2 in proj1 b1 or b1 +*(b2,b3) = b1);
:: FUNCT_7:th 32
theorem
for b1 being Relation-like Function-like set
for b2, b3 being set holds
proj1 (b1 +*(b3,b2)) = proj1 b1;
:: FUNCT_7:th 33
theorem
for b1 being Relation-like Function-like set
for b2, b3 being set
st b3 in proj1 b1
holds (b1 +*(b3,b2)) . b3 = b2;
:: FUNCT_7:th 34
theorem
for b1 being Relation-like Function-like set
for b2, b3, b4 being set
st b3 <> b4
holds (b1 +*(b3,b2)) . b4 = b1 . b4;
:: FUNCT_7:th 35
theorem
for b1 being Relation-like Function-like set
for b2, b3, b4, b5 being set
st b4 <> b5
holds (b1 +*(b4,b2)) +*(b5,b3) = (b1 +*(b5,b3)) +*(b4,b2);
:: FUNCT_7:th 36
theorem
for b1 being Relation-like Function-like set
for b2, b3, b4 being set holds
(b1 +*(b4,b2)) +*(b4,b3) = b1 +*(b4,b3);
:: FUNCT_7:th 37
theorem
for b1 being Relation-like Function-like set
for b2 being set holds
b1 +*(b2,b1 . b2) = b1;
:: FUNCT_7:funcreg 9
registration
let a1 be Relation-like Function-like FinSequence-like set;
let a2, a3 be set;
cluster a1 +*(a2,a3) -> Relation-like Function-like FinSequence-like;
end;
:: FUNCT_7:funcnot 3 => FUNCT_7:func 3
definition
let a1 be set;
let a2 be FinSequence of a1;
let a3 be Element of NAT;
let a4 be Element of a1;
redefine func a2 +*(a3,a4) -> FinSequence of a1;
end;
:: FUNCT_7:th 38
theorem
for b1 being non empty set
for b2 being FinSequence of b1
for b3 being Element of b1
for b4 being Element of NAT
st b4 in dom b2
holds (b2 +*(b4,b3)) /. b4 = b3;
:: FUNCT_7:th 39
theorem
for b1 being non empty set
for b2 being FinSequence of b1
for b3 being Element of b1
for b4, b5 being Element of NAT
st b4 <> b5 & b5 in dom b2
holds (b2 +*(b4,b3)) /. b5 = b2 /. b5;
:: FUNCT_7:th 40
theorem
for b1 being non empty set
for b2 being FinSequence of b1
for b3, b4 being Element of b1
for b5 being Element of NAT holds
b2 +*(b5,b2 /. b5) = b2;
:: FUNCT_7:funcnot 4 => FUNCT_7:func 4
definition
let a1 be set;
let a2 be Relation-like Function-like Function-yielding FinSequence-like set;
func compose(A2,A1) -> Relation-like Function-like set means
ex b1 being Function-yielding ManySortedSet of NAT st
it = b1 . len a2 &
b1 . 0 = id a1 &
(for b2 being Element of NAT
st b2 + 1 in dom a2
for b3, b4 being Relation-like Function-like set
st b3 = b1 . b2 & b4 = a2 . (b2 + 1)
holds b1 . (b2 + 1) = b3 * b4);
end;
:: FUNCT_7:def 4
theorem
for b1 being set
for b2 being Relation-like Function-like Function-yielding FinSequence-like set
for b3 being Relation-like Function-like set holds
b3 = compose(b2,b1)
iff
ex b4 being Function-yielding ManySortedSet of NAT st
b3 = b4 . len b2 &
b4 . 0 = id b1 &
(for b5 being Element of NAT
st b5 + 1 in dom b2
for b6, b7 being Relation-like Function-like set
st b6 = b4 . b5 & b7 = b2 . (b5 + 1)
holds b4 . (b5 + 1) = b6 * b7);
:: FUNCT_7:funcnot 5 => FUNCT_7:func 5
definition
let a1 be Relation-like Function-like Function-yielding FinSequence-like set;
let a2 be set;
func apply(A1,A2) -> Relation-like Function-like FinSequence-like set means
len it = (len a1) + 1 &
it . 1 = a2 &
(for b1 being Element of NAT
for b2 being Relation-like Function-like set
st b1 in dom a1 & b2 = a1 . b1
holds it . (b1 + 1) = b2 . (it . b1));
end;
:: FUNCT_7:def 5
theorem
for b1 being Relation-like Function-like Function-yielding FinSequence-like set
for b2 being set
for b3 being Relation-like Function-like FinSequence-like set holds
b3 = apply(b1,b2)
iff
len b3 = (len b1) + 1 &
b3 . 1 = b2 &
(for b4 being Element of NAT
for b5 being Relation-like Function-like set
st b4 in dom b1 & b5 = b1 . b4
holds b3 . (b4 + 1) = b5 . (b3 . b4));
:: FUNCT_7:th 41
theorem
for b1 being set holds
compose({},b1) = id b1;
:: FUNCT_7:th 42
theorem
for b1 being set holds
apply({},b1) = <*b1*>;
:: FUNCT_7:th 43
theorem
for b1 being set
for b2 being Relation-like Function-like Function-yielding FinSequence-like set
for b3 being Relation-like Function-like set holds
compose(b2 ^ <*b3*>,b1) = (compose(b2,b1)) * b3;
:: FUNCT_7:th 44
theorem
for b1 being set
for b2 being Relation-like Function-like Function-yielding FinSequence-like set
for b3 being Relation-like Function-like set holds
apply(b2 ^ <*b3*>,b1) = (apply(b2,b1)) ^ <*b3 . ((apply(b2,b1)) . ((len b2) + 1))*>;
:: FUNCT_7:th 45
theorem
for b1 being set
for b2 being Relation-like Function-like Function-yielding FinSequence-like set
for b3 being Relation-like Function-like set holds
compose(<*b3*> ^ b2,b1) = (b3 | b1) * compose(b2,b3 .: b1);
:: FUNCT_7:th 46
theorem
for b1 being set
for b2 being Relation-like Function-like Function-yielding FinSequence-like set
for b3 being Relation-like Function-like set holds
apply(<*b3*> ^ b2,b1) = <*b1*> ^ apply(b2,b3 . b1);
:: FUNCT_7:th 47
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
compose(<*b2*>,b1) = (id b1) * b2;
:: FUNCT_7:th 48
theorem
for b1 being set
for b2 being Relation-like Function-like set
st proj1 b2 c= b1
holds compose(<*b2*>,b1) = b2;
:: FUNCT_7:th 49
theorem
for b1 being set
for b2 being Relation-like Function-like set holds
apply(<*b2*>,b1) = <*b1,b2 . b1*>;
:: FUNCT_7:th 50
theorem
for b1, b2 being set
for b3, b4 being Relation-like Function-like Function-yielding FinSequence-like set
st proj2 compose(b3,b1) c= b2
holds compose(b3 ^ b4,b1) = (compose(b3,b1)) * compose(b4,b2);
:: FUNCT_7:th 51
theorem
for b1 being set
for b2, b3 being Relation-like Function-like Function-yielding FinSequence-like set holds
(apply(b2 ^ b3,b1)) . ((len (b2 ^ b3)) + 1) = (apply(b3,(apply(b2,b1)) . ((len b2) + 1))) . ((len b3) + 1);
:: FUNCT_7:th 52
theorem
for b1 being set
for b2, b3 being Relation-like Function-like Function-yielding FinSequence-like set holds
apply(b2 ^ b3,b1) = (apply(b2,b1)) $^ apply(b3,(apply(b2,b1)) . ((len b2) + 1));
:: FUNCT_7:th 53
theorem
for b1 being set
for b2, b3 being Relation-like Function-like set holds
compose(<*b2,b3*>,b1) = (id b1) * (b2 * b3);
:: FUNCT_7:th 54
theorem
for b1 being set
for b2, b3 being Relation-like Function-like set
st (proj1 b2 c= b1 or proj1 (b2 * b3) c= b1)
holds compose(<*b2,b3*>,b1) = b2 * b3;
:: FUNCT_7:th 55
theorem
for b1 being set
for b2, b3 being Relation-like Function-like set holds
apply(<*b2,b3*>,b1) = <*b1,b2 . b1,b3 . (b2 . b1)*>;
:: FUNCT_7:th 56
theorem
for b1 being set
for b2, b3, b4 being Relation-like Function-like set holds
compose(<*b2,b3,b4*>,b1) = (id b1) * (b2 * (b3 * b4));
:: FUNCT_7:th 57
theorem
for b1 being set
for b2, b3, b4 being Relation-like Function-like set
st (not proj1 b2 c= b1 & not proj1 (b2 * b3) c= b1 implies proj1 (b2 * (b3 * b4)) c= b1)
holds compose(<*b2,b3,b4*>,b1) = b2 * (b3 * b4);
:: FUNCT_7:th 58
theorem
for b1 being set
for b2, b3, b4 being Relation-like Function-like set holds
apply(<*b2,b3,b4*>,b1) = <*b1*> ^ <*b2 . b1,b3 . (b2 . b1),b4 . (b3 . (b2 . b1))*>;
:: FUNCT_7:funcnot 6 => FUNCT_7:func 6
definition
let a1 be Relation-like Function-like FinSequence-like set;
func firstdom A1 -> set means
it is empty
if a1 is empty
otherwise it = proj1 (a1 . 1);
end;
:: FUNCT_7:def 6
theorem
for b1 being Relation-like Function-like FinSequence-like set
for b2 being set holds
(b1 is empty implies (b2 = firstdom b1
iff
b2 is empty)) &
(b1 is empty or (b2 = firstdom b1
iff
b2 = proj1 (b1 . 1)));
:: FUNCT_7:funcnot 7 => FUNCT_7:func 7
definition
let a1 be Relation-like Function-like FinSequence-like set;
func lastrng A1 -> set means
it is empty
if a1 is empty
otherwise it = proj2 (a1 . len a1);
end;
:: FUNCT_7:def 7
theorem
for b1 being Relation-like Function-like FinSequence-like set
for b2 being set holds
(b1 is empty implies (b2 = lastrng b1
iff
b2 is empty)) &
(b1 is empty or (b2 = lastrng b1
iff
b2 = proj2 (b1 . len b1)));
:: FUNCT_7:th 59
theorem
firstdom {} = {} & lastrng {} = {};
:: FUNCT_7:th 60
theorem
for b1 being Relation-like Function-like set
for b2 being Relation-like Function-like FinSequence-like set holds
firstdom (<*b1*> ^ b2) = proj1 b1 &
lastrng (b2 ^ <*b1*>) = proj2 b1;
:: FUNCT_7:th 61
theorem
for b1 being set
for b2 being Relation-like Function-like Function-yielding FinSequence-like set
st b2 <> {}
holds proj2 compose(b2,b1) c= lastrng b2;
:: FUNCT_7:attrnot 1 => FUNCT_7:attr 1
definition
let a1 be Relation-like Function-like FinSequence-like set;
attr a1 is FuncSeq-like means
ex b1 being Relation-like Function-like FinSequence-like set st
len b1 = (len a1) + 1 &
(for b2 being Element of NAT
st b2 in dom a1
holds a1 . b2 in Funcs(b1 . b2,b1 . (b2 + 1)));
end;
:: FUNCT_7:dfs 8
definiens
let a1 be Relation-like Function-like FinSequence-like set;
To prove
a1 is FuncSeq-like
it is sufficient to prove
thus ex b1 being Relation-like Function-like FinSequence-like set st
len b1 = (len a1) + 1 &
(for b2 being Element of NAT
st b2 in dom a1
holds a1 . b2 in Funcs(b1 . b2,b1 . (b2 + 1)));
:: FUNCT_7:def 8
theorem
for b1 being Relation-like Function-like FinSequence-like set holds
b1 is FuncSeq-like
iff
ex b2 being Relation-like Function-like FinSequence-like set st
len b2 = (len b1) + 1 &
(for b3 being Element of NAT
st b3 in dom b1
holds b1 . b3 in Funcs(b2 . b3,b2 . (b3 + 1)));
:: FUNCT_7:th 62
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
st b1 ^ b2 is FuncSeq-like
holds b1 is FuncSeq-like & b2 is FuncSeq-like;
:: FUNCT_7:condreg 1
registration
cluster Relation-like Function-like FinSequence-like FuncSeq-like -> Function-yielding (set);
end;
:: FUNCT_7:condreg 2
registration
cluster empty Relation-like Function-like FinSequence-like -> FuncSeq-like (set);
end;
:: FUNCT_7:funcreg 10
registration
let a1 be Relation-like Function-like set;
cluster <*a1*> -> FuncSeq-like;
end;
:: FUNCT_7:exreg 2
registration
cluster non empty Relation-like non-empty Function-like finite FinSequence-like FuncSeq-like set;
end;
:: FUNCT_7:modenot 1
definition
mode FuncSequence is Relation-like Function-like FinSequence-like FuncSeq-like set;
end;
:: FUNCT_7:th 63
theorem
for b1 being set
for b2 being Relation-like Function-like FinSequence-like FuncSeq-like set
st b2 <> {}
holds proj1 compose(b2,b1) = (firstdom b2) /\ b1;
:: FUNCT_7:th 64
theorem
for b1 being Relation-like Function-like FinSequence-like FuncSeq-like set holds
proj1 compose(b1,firstdom b1) = firstdom b1;
:: FUNCT_7:th 65
theorem
for b1 being Relation-like Function-like FinSequence-like FuncSeq-like set
for b2 being Relation-like Function-like set
st proj2 b2 c= firstdom b1
holds <*b2*> ^ b1 is Relation-like Function-like FinSequence-like FuncSeq-like set;
:: FUNCT_7:th 66
theorem
for b1 being Relation-like Function-like FinSequence-like FuncSeq-like set
for b2 being Relation-like Function-like set
st lastrng b1 c= proj1 b2
holds b1 ^ <*b2*> is Relation-like Function-like FinSequence-like FuncSeq-like set;
:: FUNCT_7:th 67
theorem
for b1, b2 being set
for b3 being Relation-like Function-like FinSequence-like FuncSeq-like set
st b1 in firstdom b3 & b1 in b2
holds (apply(b3,b1)) . ((len b3) + 1) = (compose(b3,b2)) . b1;
:: FUNCT_7:modenot 2 => FUNCT_7:mode 1
definition
let a1, a2 be set;
assume (a2 is empty implies a1 is empty);
mode FuncSequence of A1,A2 -> Relation-like Function-like FinSequence-like FuncSeq-like set means
firstdom it = a1 & lastrng it c= a2;
end;
:: FUNCT_7:dfs 9
definiens
let a1, a2 be set;
let a3 be Relation-like Function-like FinSequence-like FuncSeq-like set;
To prove
a3 is FuncSequence of a1,a2
it is sufficient to prove
thus (a2 is empty implies a1 is empty);
thus firstdom a3 = a1 & lastrng a3 c= a2;
:: FUNCT_7:def 9
theorem
for b1, b2 being set
st (b2 is empty implies b1 is empty)
for b3 being Relation-like Function-like FinSequence-like FuncSeq-like set holds
b3 is FuncSequence of b1,b2
iff
firstdom b3 = b1 & lastrng b3 c= b2;
:: FUNCT_7:funcnot 8 => FUNCT_7:func 8
definition
let a1 be non empty set;
let a2 be set;
let a3 be FuncSequence of a2,a1;
redefine func compose(a3,a2) -> Function-like quasi_total Relation of a2,a1;
end;
:: FUNCT_7:modenot 3 => FUNCT_7:mode 2
definition
let a1 be non empty Relation-like non-empty Function-like FinSequence-like set;
mode FuncSequence of A1 -> Relation-like Function-like FinSequence-like set means
(len it) + 1 = len a1 &
(for b1 being Element of NAT
st b1 in dom it
holds it . b1 in Funcs(a1 . b1,a1 . (b1 + 1)));
end;
:: FUNCT_7:dfs 10
definiens
let a1 be non empty Relation-like non-empty Function-like FinSequence-like set;
let a2 be Relation-like Function-like FinSequence-like set;
To prove
a2 is FuncSequence of a1
it is sufficient to prove
thus (len a2) + 1 = len a1 &
(for b1 being Element of NAT
st b1 in dom a2
holds a2 . b1 in Funcs(a1 . b1,a1 . (b1 + 1)));
:: FUNCT_7:def 10
theorem
for b1 being non empty Relation-like non-empty Function-like FinSequence-like set
for b2 being Relation-like Function-like FinSequence-like set holds
b2 is FuncSequence of b1
iff
(len b2) + 1 = len b1 &
(for b3 being Element of NAT
st b3 in dom b2
holds b2 . b3 in Funcs(b1 . b3,b1 . (b3 + 1)));
:: FUNCT_7:condreg 3
registration
let a1 be non empty Relation-like non-empty Function-like FinSequence-like set;
cluster -> non-empty FuncSeq-like (FuncSequence of a1);
end;
:: FUNCT_7:th 68
theorem
for b1 being non empty Relation-like non-empty Function-like FinSequence-like set
for b2 being FuncSequence of b1
st b2 <> {}
holds firstdom b2 = b1 . 1 & lastrng b2 c= b1 . len b1;
:: FUNCT_7:th 69
theorem
for b1 being non empty Relation-like non-empty Function-like FinSequence-like set
for b2 being FuncSequence of b1 holds
proj1 compose(b2,b1 . 1) = b1 . 1 &
proj2 compose(b2,b1 . 1) c= b1 . len b1;
:: FUNCT_7:funcnot 9 => FUNCT_7:func 9
definition
let a1 be Relation-like Function-like set;
let a2 be natural set;
func iter(A1,A2) -> Relation-like Function-like set means
ex b1 being Function-like quasi_total Relation of NAT,PFuncs((proj1 a1) \/ proj2 a1,(proj1 a1) \/ proj2 a1) st
it = b1 . a2 &
b1 . 0 = id ((proj1 a1) \/ proj2 a1) &
(for b2 being natural set holds
ex b3 being Relation-like Function-like set st
b3 = b1 . b2 & b1 . (b2 + 1) = a1 * b3);
end;
:: FUNCT_7:def 11
theorem
for b1 being Relation-like Function-like set
for b2 being natural set
for b3 being Relation-like Function-like set holds
b3 = iter(b1,b2)
iff
ex b4 being Function-like quasi_total Relation of NAT,PFuncs((proj1 b1) \/ proj2 b1,(proj1 b1) \/ proj2 b1) st
b3 = b4 . b2 &
b4 . 0 = id ((proj1 b1) \/ proj2 b1) &
(for b5 being natural set holds
ex b6 being Relation-like Function-like set st
b6 = b4 . b5 & b4 . (b5 + 1) = b1 * b6);
:: FUNCT_7:th 70
theorem
for b1 being Relation-like Function-like set holds
iter(b1,0) = id ((proj1 b1) \/ proj2 b1);
:: FUNCT_7:th 71
theorem
for b1 being Relation-like Function-like set
for b2 being natural set holds
iter(b1,b2 + 1) = b1 * iter(b1,b2);
:: FUNCT_7:th 72
theorem
for b1 being Relation-like Function-like set holds
iter(b1,1) = b1;
:: FUNCT_7:th 73
theorem
for b1 being Relation-like Function-like set
for b2 being natural set holds
iter(b1,b2 + 1) = (iter(b1,b2)) * b1;
:: FUNCT_7:th 74
theorem
for b1 being Relation-like Function-like set
for b2 being Element of NAT holds
proj1 iter(b1,b2) c= (proj1 b1) \/ proj2 b1 &
proj2 iter(b1,b2) c= (proj1 b1) \/ proj2 b1;
:: FUNCT_7:th 75
theorem
for b1 being Relation-like Function-like set
for b2 being Element of NAT
st b2 <> 0
holds proj1 iter(b1,b2) c= proj1 b1 & proj2 iter(b1,b2) c= proj2 b1;
:: FUNCT_7:th 76
theorem
for b1 being Relation-like Function-like set
for b2 being Element of NAT
st proj2 b1 c= proj1 b1
holds proj1 iter(b1,b2) = proj1 b1 & proj2 iter(b1,b2) c= proj1 b1;
:: FUNCT_7:th 77
theorem
for b1 being Relation-like Function-like set
for b2 being Element of NAT holds
(id ((proj1 b1) \/ proj2 b1)) * iter(b1,b2) = iter(b1,b2);
:: FUNCT_7:th 78
theorem
for b1 being Relation-like Function-like set
for b2 being Element of NAT holds
(iter(b1,b2)) * id ((proj1 b1) \/ proj2 b1) = iter(b1,b2);
:: FUNCT_7:th 79
theorem
for b1 being Relation-like Function-like set
for b2, b3 being Element of NAT holds
(iter(b1,b3)) * iter(b1,b2) = iter(b1,b2 + b3);
:: FUNCT_7:th 80
theorem
for b1 being Relation-like Function-like set
for b2, b3 being Element of NAT
st b2 <> 0
holds iter(iter(b1,b3),b2) = iter(b1,b3 * b2);
:: FUNCT_7:th 81
theorem
for b1 being Relation-like Function-like set
for b2, b3 being Element of NAT
st proj2 b1 c= proj1 b1
holds iter(iter(b1,b2),b3) = iter(b1,b2 * b3);
:: FUNCT_7:th 82
theorem
for b1 being Element of NAT holds
iter({},b1) = {};
:: FUNCT_7:th 83
theorem
for b1 being set
for b2 being Element of NAT holds
iter(id b1,b2) = id b1;
:: FUNCT_7:th 84
theorem
for b1 being Relation-like Function-like set
st proj2 b1 misses proj1 b1
holds iter(b1,2) = {};
:: FUNCT_7:th 85
theorem
for b1 being set
for b2 being Element of NAT
for b3 being Function-like quasi_total Relation of b1,b1 holds
iter(b3,b2) is Function-like quasi_total Relation of b1,b1;
:: FUNCT_7:th 86
theorem
for b1 being set
for b2 being Function-like quasi_total Relation of b1,b1 holds
iter(b2,0) = id b1;
:: FUNCT_7:th 87
theorem
for b1 being set
for b2, b3 being Element of NAT
for b4 being Function-like quasi_total Relation of b1,b1 holds
iter(iter(b4,b2),b3) = iter(b4,b2 * b3);
:: FUNCT_7:th 88
theorem
for b1 being set
for b2 being Element of NAT
for b3 being Function-like Relation of b1,b1 holds
iter(b3,b2) is Function-like Relation of b1,b1;
:: FUNCT_7:th 89
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set
for b4 being Element of NAT
st b4 <> 0 & b1 in b2 & b3 = b2 --> b1
holds iter(b3,b4) = b3;
:: FUNCT_7:th 90
theorem
for b1 being Relation-like Function-like set
for b2 being Element of NAT holds
iter(b1,b2) = compose(b2 |-> b1,(proj1 b1) \/ proj2 b1);
:: FUNCT_7:th 91
theorem
for b1, b2 being Relation-like Function-like set
for b3, b4 being set
st b2 c= b1 & not b3 in proj1 b2
holds b2 c= b1 +*(b3,b4);
:: FUNCT_7:th 92
theorem
for b1, b2 being Relation-like Function-like set
for b3 being set
st b1 | b3 = b2 | b3 & b1,b2 equal_outside b3
holds b1 = b2;
:: FUNCT_7:th 93
theorem
for b1 being Relation-like Function-like set
for b2, b3, b4 being set
st b2 in b4
holds b1,b1 +*(b2,b3) equal_outside b4;
:: FUNCT_7:th 94
theorem
for b1 being Relation-like Function-like set
for b2, b3, b4 being set
st not b2 in b4
holds (b1 +*(b2,b3)) | b4 = b1 | b4;
:: FUNCT_7:th 95
theorem
for b1, b2 being Relation-like Function-like set
for b3, b4, b5 being set
st b1 | b5 = b2 | b5
holds (b1 +*(b3,b4)) | b5 = (b2 +*(b3,b4)) | b5;
:: FUNCT_7:th 96
theorem
for b1 being Relation-like Function-like set
for b2, b3 being set holds
(b1 +* (b2 .--> b3)) . b2 = b3;
:: FUNCT_7:th 97
theorem
for b1, b2 being set holds
<*b1*> +*(1,b2) = <*b2*>;
:: FUNCT_7:th 98
theorem
for b1 being Relation-like Function-like set
for b2 being set
st b2 in proj1 b1
holds b1 +* (b2 .--> (b1 . b2)) = b1;
:: FUNCT_7:th 99
theorem
for b1 being Relation-like Function-like FinSequence-like set
for b2 being set
for b3 being natural set holds
len (b1 +*(b3,b2)) = len b1;
:: FUNCT_7:th 100
theorem
for b1 being natural set
for b2 being non empty set
for b3 being FinSequence of b2
for b4 being Element of b2
st b1 in dom b3
holds b3 +*(b1,b4) = ((b3 | (b1 -' 1)) ^ <*b4*>) ^ (b3 /^ b1);
:: FUNCT_7:funcnot 10 => FUNCT_7:func 10
definition
let a1 be Relation-like Function-like set;
let a2, a3 be set;
func Swap(A1,A2,A3) -> set equals
(a1 +*(a2,a1 . a3)) +*(a3,a1 . a2)
if a2 in proj1 a1 & a3 in proj1 a1
otherwise a1;
end;
:: FUNCT_7:def 12
theorem
for b1 being Relation-like Function-like set
for b2, b3 being set holds
(b2 in proj1 b1 & b3 in proj1 b1 implies Swap(b1,b2,b3) = (b1 +*(b2,b1 . b3)) +*(b3,b1 . b2)) &
(b2 in proj1 b1 & b3 in proj1 b1 or Swap(b1,b2,b3) = b1);
:: FUNCT_7:funcreg 11
registration
let a1 be Relation-like Function-like set;
let a2, a3 be set;
cluster Swap(a1,a2,a3) -> Relation-like Function-like;
end;
:: FUNCT_7:th 101
theorem
for b1 being Relation-like Function-like set
for b2, b3 being set holds
proj1 Swap(b1,b2,b3) = proj1 b1;
:: FUNCT_7:th 102
theorem
for b1 being Relation-like Function-like set
for b2, b3 being set holds
proj2 (b1 +*(b2,b3)) c= (proj2 b1) \/ {b3};
:: FUNCT_7:th 103
theorem
for b1 being Relation-like Function-like set
for b2, b3 being set holds
proj2 b1 c= (proj2 (b1 +*(b2,b3))) \/ {b1 . b2};
:: FUNCT_7:th 104
theorem
for b1 being Relation-like Function-like set
for b2, b3 being set
st b2 in proj1 b1
holds b3 in proj2 (b1 +*(b2,b3));
:: FUNCT_7:th 105
theorem
for b1 being Relation-like Function-like set
for b2, b3 being set holds
proj2 Swap(b1,b2,b3) = proj2 b1;
:: FUNCT_7:sch 6
scheme FUNCT_7:sch 6
{F1 -> set,
F2 -> non empty set,
F3 -> set}:
F1(),{F3(b1) where b1 is Element of F2(): b1 in F1()} are_equipotent
provided
F1() c= F2()
and
for b1, b2 being Element of F2()
st b1 in F1() & b2 in F1() & F3(b1) = F3(b2)
holds b1 = b2;
:: FUNCT_7:th 106
theorem
for b1, b2, b3 being Relation-like Function-like set
for b4 being set
st b1,b2 equal_outside b4
holds b1 +* b3,b2 +* b3 equal_outside b4;
:: FUNCT_7:th 107
theorem
for b1, b2, b3 being Relation-like Function-like set
for b4 being set
st b1,b2 equal_outside b4
holds b3 +* b1,b3 +* b2 equal_outside b4;
:: FUNCT_7:th 108
theorem
for b1, b2, b3 being Relation-like Function-like set holds
b1 +* b3 = b2 +* b3
iff
b1,b2 equal_outside proj1 b3;
:: FUNCT_7:th 109
theorem
for b1, b2, b3 being set
for b4 being Relation-like Function-like set
st b4 . b1 = b4 . b2
holds b4 . b3 = (((id proj1 b4) +*(b1,b2)) * b4) . b3;
:: FUNCT_7:th 110
theorem
for b1, b2 being set
for b3 being Relation-like Function-like set
st (b1 in proj1 b3 implies b2 in proj1 b3 & b3 . b1 = b3 . b2)
holds b3 = ((id proj1 b3) +*(b1,b2)) * b3;
:: FUNCT_7:th 111
theorem
for b1 being Relation-like Function-like set
for b2 being set
st b2 in proj1 b1
holds b1 +* (b2 .--> (b1 . b2)) = b1;
:: FUNCT_7:th 112
theorem
for b1 being set
for b2 being Function-like quasi_total bijective Relation of b1,b1
for b3, b4 being Element of b1 holds
(b2 +*(b3,b2 . b4)) +*(b4,b2 . b3) is Function-like quasi_total bijective Relation of b1,b1;
:: FUNCT_7:th 113
theorem
for b1 being Relation-like Function-like set
for b2, b3 being set
st b2 in proj1 b1 & b3 in proj1 b1
holds ex b4 being Function-like quasi_total bijective Relation of proj1 b1,proj1 b1 st
(b1 +*(b2,b1 . b3)) +*(b3,b1 . b2) = b4 * b1;
:: FUNCT_7:th 114
theorem
for b1 being Relation-like Function-like set
for b2, b3 being set
st b2 in proj1 b1
holds proj1 b1 = proj1 (b1 +* (b2 .--> b3));
:: FUNCT_7:th 115
theorem
for b1, b2 being FinSequence of INT
for b3, b4 being Element of NAT
st 1 <= b4 &
b4 <= len b1 &
1 <= b3 &
b3 <= len b1 &
b2 = (b1 +*(b3,b1 /. b4)) +*(b4,b1 /. b3)
holds b1 . b3 = b2 . b4 &
b1 . b4 = b2 . b3 &
(for b5 being set
st b5 <> b3 & b5 <> b4 & b5 in dom b1
holds b1 . b5 = b2 . b5) &
b1,b2 are_fiberwise_equipotent;
:: FUNCT_7:th 116
theorem
for b1 being Relation-like Function-like set
for b2, b3, b4, b5, b6, b7 being set
st b2 <> b4 & b2 <> b6
holds (((b1 +* (b2 .--> b3)) +* (b4 .--> b5)) +* (b6 .--> b7)) . b2 = b3;
:: FUNCT_7:th 117
theorem
for b1, b2, b3, b4 being set
for b5 being Function-like quasi_total Relation of b1,b2
st b3 in b1 & b4 in b2
holds b5 +*(b3,b4) is Function-like quasi_total Relation of b1,b2;