Article FACIRC_2, MML version 4.99.1005
:: FACIRC_2:th 1
theorem
for b1, b2, b3 being set
st b1 <> b3 & b2 <> b3
holds {b1,b2} \ {b3} = {b1,b2};
:: FACIRC_2:th 3
theorem
for b1, b2, b3 being set holds
b1 <> [<*b1,b2*>,b3] & b2 <> [<*b1,b2*>,b3];
:: FACIRC_2:condreg 1
registration
cluster void -> unsplit gate`1=arity gate`2isBoolean (ManySortedSign);
end;
:: FACIRC_2:exreg 1
registration
cluster strict void ManySortedSign;
end;
:: FACIRC_2:funcnot 1 => FACIRC_2:func 1
definition
let a1 be set;
func SingleMSS A1 -> strict void ManySortedSign means
the carrier of it = {a1};
end;
:: FACIRC_2:def 1
theorem
for b1 being set
for b2 being strict void ManySortedSign holds
b2 = SingleMSS b1
iff
the carrier of b2 = {b1};
:: FACIRC_2:funcreg 1
registration
let a1 be set;
cluster SingleMSS a1 -> non empty strict void;
end;
:: FACIRC_2:funcnot 2 => FACIRC_2:func 2
definition
let a1 be set;
func SingleMSA A1 -> strict Boolean MSAlgebra over SingleMSS a1 means
TRUE;
end;
:: FACIRC_2:def 2
theorem
for b1 being set
for b2 being strict Boolean MSAlgebra over SingleMSS b1 holds
(b2 = SingleMSA b1 implies TRUE) & b2 = SingleMSA b1;
:: FACIRC_2:th 4
theorem
for b1 being set
for b2 being ManySortedSign holds
SingleMSS b1 tolerates b2;
:: FACIRC_2:th 5
theorem
for b1 being set
for b2 being non empty ManySortedSign
st b1 in the carrier of b2
holds (SingleMSS b1) +* b2 = ManySortedSign(#the carrier of b2,the OperSymbols of b2,the Arity of b2,the ResultSort of b2#);
:: FACIRC_2:th 6
theorem
for b1 being set
for b2 being non empty strict ManySortedSign
for b3 being Boolean MSAlgebra over b2
st b1 in the carrier of b2
holds (SingleMSA b1) +* b3 = MSAlgebra(#the Sorts of b3,the Charact of b3#);
:: FACIRC_2:funcnot 3 => XBOOLE_0:func 1
notation
synonym <*> for {};
end;
:: FACIRC_2:funcnot 4 => FACIRC_2:func 3
definition
redefine func <*> -> FinSeqLen of 0;
end;
:: FACIRC_2:funcnot 5 => FACIRC_2:func 4
definition
let a1 be natural set;
let a2, a3 be Relation-like Function-like FinSequence-like set;
func A1 -BitAdderStr(A2,A3) -> non empty strict non void unsplit gate`1=arity gate`2isBoolean ManySortedSign means
ex b1, b2 being ManySortedSet of NAT st
it = b1 . a1 &
b1 . 0 = 1GateCircStr(<*>,(0 -tuples_on BOOLEAN) --> FALSE) &
b2 . 0 = [<*>,(0 -tuples_on BOOLEAN) --> FALSE] &
(for b3 being natural set
for b4 being non empty ManySortedSign
for b5 being set
st b4 = b1 . b3 & b5 = b2 . b3
holds b1 . (b3 + 1) = b4 +* BitAdderWithOverflowStr(a2 . (b3 + 1),a3 . (b3 + 1),b5) &
b2 . (b3 + 1) = MajorityOutput(a2 . (b3 + 1),a3 . (b3 + 1),b5));
end;
:: FACIRC_2:def 3
theorem
for b1 being natural set
for b2, b3 being Relation-like Function-like FinSequence-like set
for b4 being non empty strict non void unsplit gate`1=arity gate`2isBoolean ManySortedSign holds
b4 = b1 -BitAdderStr(b2,b3)
iff
ex b5, b6 being ManySortedSet of NAT st
b4 = b5 . b1 &
b5 . 0 = 1GateCircStr(<*>,(0 -tuples_on BOOLEAN) --> FALSE) &
b6 . 0 = [<*>,(0 -tuples_on BOOLEAN) --> FALSE] &
(for b7 being natural set
for b8 being non empty ManySortedSign
for b9 being set
st b8 = b5 . b7 & b9 = b6 . b7
holds b5 . (b7 + 1) = b8 +* BitAdderWithOverflowStr(b2 . (b7 + 1),b3 . (b7 + 1),b9) &
b6 . (b7 + 1) = MajorityOutput(b2 . (b7 + 1),b3 . (b7 + 1),b9));
:: FACIRC_2:funcnot 6 => FACIRC_2:func 5
definition
let a1 be natural set;
let a2, a3 be Relation-like Function-like FinSequence-like set;
func A1 -BitAdderCirc(A2,A3) -> strict locally-finite gate`2=den Boolean MSAlgebra over a1 -BitAdderStr(a2,a3) means
ex b1, b2, b3 being ManySortedSet of NAT st
a1 -BitAdderStr(a2,a3) = b1 . a1 &
it = b2 . a1 &
b1 . 0 = 1GateCircStr(<*>,(0 -tuples_on BOOLEAN) --> FALSE) &
b2 . 0 = 1GateCircuit(<*>,(0 -tuples_on BOOLEAN) --> FALSE) &
b3 . 0 = [<*>,(0 -tuples_on BOOLEAN) --> FALSE] &
(for b4 being natural set
for b5 being non empty ManySortedSign
for b6 being non-empty MSAlgebra over b5
for b7 being set
st b5 = b1 . b4 & b6 = b2 . b4 & b7 = b3 . b4
holds b1 . (b4 + 1) = b5 +* BitAdderWithOverflowStr(a2 . (b4 + 1),a3 . (b4 + 1),b7) &
b2 . (b4 + 1) = b6 +* BitAdderWithOverflowCirc(a2 . (b4 + 1),a3 . (b4 + 1),b7) &
b3 . (b4 + 1) = MajorityOutput(a2 . (b4 + 1),a3 . (b4 + 1),b7));
end;
:: FACIRC_2:def 4
theorem
for b1 being natural set
for b2, b3 being Relation-like Function-like FinSequence-like set
for b4 being strict locally-finite gate`2=den Boolean MSAlgebra over b1 -BitAdderStr(b2,b3) holds
b4 = b1 -BitAdderCirc(b2,b3)
iff
ex b5, b6, b7 being ManySortedSet of NAT st
b1 -BitAdderStr(b2,b3) = b5 . b1 &
b4 = b6 . b1 &
b5 . 0 = 1GateCircStr(<*>,(0 -tuples_on BOOLEAN) --> FALSE) &
b6 . 0 = 1GateCircuit(<*>,(0 -tuples_on BOOLEAN) --> FALSE) &
b7 . 0 = [<*>,(0 -tuples_on BOOLEAN) --> FALSE] &
(for b8 being natural set
for b9 being non empty ManySortedSign
for b10 being non-empty MSAlgebra over b9
for b11 being set
st b9 = b5 . b8 & b10 = b6 . b8 & b11 = b7 . b8
holds b5 . (b8 + 1) = b9 +* BitAdderWithOverflowStr(b2 . (b8 + 1),b3 . (b8 + 1),b11) &
b6 . (b8 + 1) = b10 +* BitAdderWithOverflowCirc(b2 . (b8 + 1),b3 . (b8 + 1),b11) &
b7 . (b8 + 1) = MajorityOutput(b2 . (b8 + 1),b3 . (b8 + 1),b11));
:: FACIRC_2:funcnot 7 => FACIRC_2:func 6
definition
let a1 be natural set;
let a2, a3 be Relation-like Function-like FinSequence-like set;
func A1 -BitMajorityOutput(A2,A3) -> Element of InnerVertices (a1 -BitAdderStr(a2,a3)) means
ex b1 being ManySortedSet of NAT st
it = b1 . a1 &
b1 . 0 = [<*>,(0 -tuples_on BOOLEAN) --> FALSE] &
(for b2 being natural set
for b3 being set
st b3 = b1 . b2
holds b1 . (b2 + 1) = MajorityOutput(a2 . (b2 + 1),a3 . (b2 + 1),b3));
end;
:: FACIRC_2:def 5
theorem
for b1 being natural set
for b2, b3 being Relation-like Function-like FinSequence-like set
for b4 being Element of InnerVertices (b1 -BitAdderStr(b2,b3)) holds
b4 = b1 -BitMajorityOutput(b2,b3)
iff
ex b5 being ManySortedSet of NAT st
b4 = b5 . b1 &
b5 . 0 = [<*>,(0 -tuples_on BOOLEAN) --> FALSE] &
(for b6 being natural set
for b7 being set
st b7 = b5 . b6
holds b5 . (b6 + 1) = MajorityOutput(b2 . (b6 + 1),b3 . (b6 + 1),b7));
:: FACIRC_2:th 7
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
for b3, b4, b5 being ManySortedSet of NAT
st b3 . 0 = 1GateCircStr(<*>,(0 -tuples_on BOOLEAN) --> FALSE) &
b4 . 0 = 1GateCircuit(<*>,(0 -tuples_on BOOLEAN) --> FALSE) &
b5 . 0 = [<*>,(0 -tuples_on BOOLEAN) --> FALSE] &
(for b6 being natural set
for b7 being non empty ManySortedSign
for b8 being non-empty MSAlgebra over b7
for b9 being set
st b7 = b3 . b6 & b8 = b4 . b6 & b9 = b5 . b6
holds b3 . (b6 + 1) = b7 +* BitAdderWithOverflowStr(b1 . (b6 + 1),b2 . (b6 + 1),b9) &
b4 . (b6 + 1) = b8 +* BitAdderWithOverflowCirc(b1 . (b6 + 1),b2 . (b6 + 1),b9) &
b5 . (b6 + 1) = MajorityOutput(b1 . (b6 + 1),b2 . (b6 + 1),b9))
for b6 being natural set holds
b6 -BitAdderStr(b1,b2) = b3 . b6 & b6 -BitAdderCirc(b1,b2) = b4 . b6 & b6 -BitMajorityOutput(b1,b2) = b5 . b6;
:: FACIRC_2:th 8
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set holds
0 -BitAdderStr(b1,b2) = 1GateCircStr(<*>,(0 -tuples_on BOOLEAN) --> FALSE) &
0 -BitAdderCirc(b1,b2) = 1GateCircuit(<*>,(0 -tuples_on BOOLEAN) --> FALSE) &
0 -BitMajorityOutput(b1,b2) = [<*>,(0 -tuples_on BOOLEAN) --> FALSE];
:: FACIRC_2:th 9
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
for b3 being set
st b3 = [<*>,(0 -tuples_on BOOLEAN) --> FALSE]
holds 1 -BitAdderStr(b1,b2) = (1GateCircStr(<*>,(0 -tuples_on BOOLEAN) --> FALSE)) +* BitAdderWithOverflowStr(b1 . 1,b2 . 1,b3) &
1 -BitAdderCirc(b1,b2) = (1GateCircuit(<*>,(0 -tuples_on BOOLEAN) --> FALSE)) +* BitAdderWithOverflowCirc(b1 . 1,b2 . 1,b3) &
1 -BitMajorityOutput(b1,b2) = MajorityOutput(b1 . 1,b2 . 1,b3);
:: FACIRC_2:th 10
theorem
for b1, b2, b3 being set
st b3 = [<*>,(0 -tuples_on BOOLEAN) --> FALSE]
holds 1 -BitAdderStr(<*b1*>,<*b2*>) = (1GateCircStr(<*>,(0 -tuples_on BOOLEAN) --> FALSE)) +* BitAdderWithOverflowStr(b1,b2,b3) &
1 -BitAdderCirc(<*b1*>,<*b2*>) = (1GateCircuit(<*>,(0 -tuples_on BOOLEAN) --> FALSE)) +* BitAdderWithOverflowCirc(b1,b2,b3) &
1 -BitMajorityOutput(<*b1*>,<*b2*>) = MajorityOutput(b1,b2,b3);
:: FACIRC_2:th 11
theorem
for b1 being Element of NAT
for b2, b3 being FinSeqLen of b1
for b4, b5, b6, b7 being Relation-like Function-like FinSequence-like set holds
b1 -BitAdderStr(b2 ^ b4,b3 ^ b6) = b1 -BitAdderStr(b2 ^ b5,b3 ^ b7) &
b1 -BitAdderCirc(b2 ^ b4,b3 ^ b6) = b1 -BitAdderCirc(b2 ^ b5,b3 ^ b7) &
b1 -BitMajorityOutput(b2 ^ b4,b3 ^ b6) = b1 -BitMajorityOutput(b2 ^ b5,b3 ^ b7);
:: FACIRC_2:th 12
theorem
for b1 being Element of NAT
for b2, b3 being FinSeqLen of b1
for b4, b5 being set holds
(b1 + 1) -BitAdderStr(b2 ^ <*b4*>,b3 ^ <*b5*>) = (b1 -BitAdderStr(b2,b3)) +* BitAdderWithOverflowStr(b4,b5,b1 -BitMajorityOutput(b2,b3)) &
(b1 + 1) -BitAdderCirc(b2 ^ <*b4*>,b3 ^ <*b5*>) = (b1 -BitAdderCirc(b2,b3)) +* BitAdderWithOverflowCirc(b4,b5,b1 -BitMajorityOutput(b2,b3)) &
(b1 + 1) -BitMajorityOutput(b2 ^ <*b4*>,b3 ^ <*b5*>) = MajorityOutput(b4,b5,b1 -BitMajorityOutput(b2,b3));
:: FACIRC_2:th 13
theorem
for b1 being Element of NAT
for b2, b3 being Relation-like Function-like FinSequence-like set holds
(b1 + 1) -BitAdderStr(b2,b3) = (b1 -BitAdderStr(b2,b3)) +* BitAdderWithOverflowStr(b2 . (b1 + 1),b3 . (b1 + 1),b1 -BitMajorityOutput(b2,b3)) &
(b1 + 1) -BitAdderCirc(b2,b3) = (b1 -BitAdderCirc(b2,b3)) +* BitAdderWithOverflowCirc(b2 . (b1 + 1),b3 . (b1 + 1),b1 -BitMajorityOutput(b2,b3)) &
(b1 + 1) -BitMajorityOutput(b2,b3) = MajorityOutput(b2 . (b1 + 1),b3 . (b1 + 1),b1 -BitMajorityOutput(b2,b3));
:: FACIRC_2:th 14
theorem
for b1, b2 being Element of NAT
st b1 <= b2
for b3, b4 being Relation-like Function-like FinSequence-like set holds
InnerVertices (b1 -BitAdderStr(b3,b4)) c= InnerVertices (b2 -BitAdderStr(b3,b4));
:: FACIRC_2:th 15
theorem
for b1 being Element of NAT
for b2, b3 being Relation-like Function-like FinSequence-like set holds
InnerVertices ((b1 + 1) -BitAdderStr(b2,b3)) = (InnerVertices (b1 -BitAdderStr(b2,b3))) \/ InnerVertices BitAdderWithOverflowStr(b2 . (b1 + 1),b3 . (b1 + 1),b1 -BitMajorityOutput(b2,b3));
:: FACIRC_2:funcnot 8 => FACIRC_2:func 7
definition
let a1, a2 be natural set;
let a3, a4 be Relation-like Function-like FinSequence-like set;
assume 1 <= a1 & a1 <= a2;
func (A1,A2)-BitAdderOutput(A3,A4) -> Element of InnerVertices (a2 -BitAdderStr(a3,a4)) means
ex b1 being Element of NAT st
a1 = b1 + 1 &
it = BitAdderOutput(a3 . a1,a4 . a1,b1 -BitMajorityOutput(a3,a4));
end;
:: FACIRC_2:def 6
theorem
for b1, b2 being natural set
st 1 <= b1 & b1 <= b2
for b3, b4 being Relation-like Function-like FinSequence-like set
for b5 being Element of InnerVertices (b2 -BitAdderStr(b3,b4)) holds
b5 = (b1,b2)-BitAdderOutput(b3,b4)
iff
ex b6 being Element of NAT st
b1 = b6 + 1 &
b5 = BitAdderOutput(b3 . b1,b4 . b1,b6 -BitMajorityOutput(b3,b4));
:: FACIRC_2:th 16
theorem
for b1, b2 being Element of NAT
st b2 < b1
for b3, b4 being Relation-like Function-like FinSequence-like set holds
(b2 + 1,b1)-BitAdderOutput(b3,b4) = BitAdderOutput(b3 . (b2 + 1),b4 . (b2 + 1),b2 -BitMajorityOutput(b3,b4));
:: FACIRC_2:th 17
theorem
for b1 being Element of NAT
for b2, b3 being Relation-like Function-like FinSequence-like set holds
InnerVertices (b1 -BitAdderStr(b2,b3)) is Relation-like set;
:: FACIRC_2:th 18
theorem
for b1, b2, b3 being set holds
InnerVertices MajorityIStr(b1,b2,b3) = {[<*b1,b2*>,'&'],[<*b2,b3*>,'&'],[<*b3,b1*>,'&']};
:: FACIRC_2:th 19
theorem
for b1, b2, b3 being set
st b1 <> [<*b2,b3*>,'&'] &
b2 <> [<*b3,b1*>,'&'] &
b3 <> [<*b1,b2*>,'&']
holds InputVertices MajorityIStr(b1,b2,b3) = {b1,b2,b3};
:: FACIRC_2:th 20
theorem
for b1, b2, b3 being set holds
InnerVertices MajorityStr(b1,b2,b3) = {[<*b1,b2*>,'&'],[<*b2,b3*>,'&'],[<*b3,b1*>,'&']} \/ {MajorityOutput(b1,b2,b3)};
:: FACIRC_2:th 21
theorem
for b1, b2, b3 being set
st b1 <> [<*b2,b3*>,'&'] &
b2 <> [<*b3,b1*>,'&'] &
b3 <> [<*b1,b2*>,'&']
holds InputVertices MajorityStr(b1,b2,b3) = {b1,b2,b3};
:: FACIRC_2:th 22
theorem
for b1, b2 being non empty ManySortedSign
st b1 tolerates b2 & InputVertices b1 = InputVertices b2
holds InputVertices (b1 +* b2) = InputVertices b1;
:: FACIRC_2:th 23
theorem
for b1, b2, b3 being set
st b1 <> [<*b2,b3*>,'&'] &
b2 <> [<*b3,b1*>,'&'] &
b3 <> [<*b1,b2*>,'&'] &
b3 <> [<*b1,b2*>,'xor']
holds InputVertices BitAdderWithOverflowStr(b1,b2,b3) = {b1,b2,b3};
:: FACIRC_2:th 24
theorem
for b1, b2, b3 being set holds
InnerVertices BitAdderWithOverflowStr(b1,b2,b3) = ({[<*b1,b2*>,'xor'],2GatesCircOutput(b1,b2,b3,'xor')} \/ {[<*b1,b2*>,'&'],[<*b2,b3*>,'&'],[<*b3,b1*>,'&']}) \/ {MajorityOutput(b1,b2,b3)};
:: FACIRC_2:condreg 2
registration
cluster empty -> non pair (set);
end;
:: FACIRC_2:funcreg 2
registration
cluster {} -> nonpair-yielding;
end;
:: FACIRC_2:funcreg 3
registration
let a1 be Relation-like Function-like nonpair-yielding set;
let a2 be set;
cluster a1 . a2 -> non pair;
end;
:: FACIRC_2:funcreg 4
registration
let a1 be Element of NAT;
let a2, a3 be Relation-like Function-like FinSequence-like set;
cluster a1 -BitMajorityOutput(a2,a3) -> pair;
end;
:: FACIRC_2:th 25
theorem
for b1, b2 being Relation-like Function-like FinSequence-like set
for b3 being Element of NAT
st ((b3 -BitMajorityOutput(b1,b2)) `1 = <*> &
(b3 -BitMajorityOutput(b1,b2)) `2 = (0 -tuples_on BOOLEAN) --> FALSE implies proj1 ((b3 -BitMajorityOutput(b1,b2)) `2) <> 0 -tuples_on BOOLEAN)
holds Card ((b3 -BitMajorityOutput(b1,b2)) `1) = 3 &
(b3 -BitMajorityOutput(b1,b2)) `2 = or3 &
proj1 ((b3 -BitMajorityOutput(b1,b2)) `2) = 3 -tuples_on BOOLEAN;
:: FACIRC_2:th 26
theorem
for b1 being Element of NAT
for b2, b3 being Relation-like Function-like FinSequence-like set
for b4 being set holds
b1 -BitMajorityOutput(b2,b3) <> [b4,'&'] &
b1 -BitMajorityOutput(b2,b3) <> [b4,'xor'];
:: FACIRC_2:th 27
theorem
for b1, b2 being Relation-like Function-like FinSequence-like nonpair-yielding set
for b3 being Element of NAT holds
InputVertices ((b3 + 1) -BitAdderStr(b1,b2)) = (InputVertices (b3 -BitAdderStr(b1,b2))) \/ ((InputVertices BitAdderWithOverflowStr(b1 . (b3 + 1),b2 . (b3 + 1),b3 -BitMajorityOutput(b1,b2))) \ {b3 -BitMajorityOutput(b1,b2)}) &
InnerVertices (b3 -BitAdderStr(b1,b2)) is Relation-like set &
InputVertices (b3 -BitAdderStr(b1,b2)) is without_pairs;
:: FACIRC_2:th 28
theorem
for b1 being Element of NAT
for b2, b3 being nonpair-yielding FinSeqLen of b1 holds
InputVertices (b1 -BitAdderStr(b2,b3)) = (proj2 b2) \/ proj2 b3;
:: FACIRC_2:th 29
theorem
for b1, b2, b3 being set
for b4 being Element of product the Sorts of MajorityCirc(b1,b2,b3)
for b5, b6, b7 being Element of BOOLEAN
st b5 = b4 . [<*b1,b2*>,'&'] &
b6 = b4 . [<*b2,b3*>,'&'] &
b7 = b4 . [<*b3,b1*>,'&']
holds (Following b4) . MajorityOutput(b1,b2,b3) = (b5 'or' b6) 'or' b7;
:: FACIRC_2:th 30
theorem
for b1, b2, b3 being set
st b1 <> [<*b2,b3*>,'&'] &
b2 <> [<*b3,b1*>,'&'] &
b3 <> [<*b1,b2*>,'&'] &
b3 <> [<*b1,b2*>,'xor']
for b4 being Element of product the Sorts of MajorityCirc(b1,b2,b3) holds
Following(b4,2) is stable(MajorityStr(b1,b2,b3), MajorityCirc(b1,b2,b3));
:: FACIRC_2:th 31
theorem
for b1, b2, b3 being set
st b1 <> [<*b2,b3*>,'&'] &
b2 <> [<*b3,b1*>,'&'] &
b3 <> [<*b1,b2*>,'&'] &
b3 <> [<*b1,b2*>,'xor']
for b4 being Element of product the Sorts of BitAdderWithOverflowCirc(b1,b2,b3)
for b5, b6, b7 being Element of BOOLEAN
st b5 = b4 . b1 & b6 = b4 . b2 & b7 = b4 . b3
holds (Following(b4,2)) . BitAdderOutput(b1,b2,b3) = (b5 'xor' b6) 'xor' b7 &
(Following(b4,2)) . MajorityOutput(b1,b2,b3) = ((b5 '&' b6) 'or' (b6 '&' b7)) 'or' (b7 '&' b5);
:: FACIRC_2:th 32
theorem
for b1, b2, b3 being set
st b1 <> [<*b2,b3*>,'&'] &
b2 <> [<*b3,b1*>,'&'] &
b3 <> [<*b1,b2*>,'&'] &
b3 <> [<*b1,b2*>,'xor']
for b4 being Element of product the Sorts of BitAdderWithOverflowCirc(b1,b2,b3) holds
Following(b4,2) is stable(BitAdderWithOverflowStr(b1,b2,b3), BitAdderWithOverflowCirc(b1,b2,b3));
:: FACIRC_2:th 33
theorem
for b1 being Element of NAT
for b2, b3 being nonpair-yielding FinSeqLen of b1
for b4 being Element of product the Sorts of b1 -BitAdderCirc(b2,b3) holds
Following(b4,1 + (2 * b1)) is stable(b1 -BitAdderStr(b2,b3), b1 -BitAdderCirc(b2,b3));
:: FACIRC_2:th 34
theorem
for b1 being Element of NAT
for b2 being FinSeqLen of b1 + 1 holds
ex b3 being FinSeqLen of b1 st
ex b4 being set st
b2 = b3 ^ <*b4*>;
:: FACIRC_2:th 36
theorem
for b1 being Element of NAT
for b2 being nonpair-yielding FinSeqLen of b1 + 1 holds
ex b3 being nonpair-yielding FinSeqLen of b1 st
ex b4 being non pair set st
b2 = b3 ^ <*b4*>;
:: FACIRC_2:th 37
theorem
for b1 being Element of NAT holds
ex b2 being Function-like quasi_total Relation of NAT,NAT st
b2 . 0 = 1 & b2 . 1 = 2 & b2 . 2 = b1;