set X = NAT ;
let S be non empty FinSequence of NAT ; :: thesis: ex A being Universal_Algebra st
( the carrier of A = NAT & signature A = S & ( for i, j being Nat st i in dom S & j = S . i holds
the charact of A . i = (j -tuples_on NAT ) --> i ) )
A1:
( dom S = Seg (len S) & rng S c= NAT )
by FINSEQ_1:def 3;
defpred S1[ set , set ] means ex i, j being Element of NAT st
( $1 = i & j = S . i & $2 = (j -tuples_on NAT ) --> i );
A2:
for y being set st y in dom S holds
ex z being set st S1[y,z]
consider ch being Function such that
A3:
( dom ch = dom S & ( for y being set st y in dom S holds
S1[y,ch . y] ) )
from CLASSES1:sch 1(A2);
reconsider ch = ch as FinSequence by A3, A1, FINSEQ_1:def 2;
rng ch c= PFuncs (NAT * ),NAT
then reconsider ch = ch as PFuncFinSequence of NAT by FINSEQ_1:def 4;
set A = UAStr(# NAT ,ch #);
A6:
UAStr(# NAT ,ch #) is quasi_total
proof
let n be
Nat;
:: according to UNIALG_1:def 5,
UNIALG_1:def 8 :: thesis: for b1 being Element of bool [:(the carrier of UAStr(# NAT ,ch #) * ),the carrier of UAStr(# NAT ,ch #):] holds
( n nin dom the charact of UAStr(# NAT ,ch #) or not b1 = the charact of UAStr(# NAT ,ch #) . n or b1 is quasi_total )let h be
PartFunc of
(the carrier of UAStr(# NAT ,ch #) * ),the
carrier of
UAStr(#
NAT ,
ch #);
:: thesis: ( n nin dom the charact of UAStr(# NAT ,ch #) or not h = the charact of UAStr(# NAT ,ch #) . n or h is quasi_total )
assume
(
n in dom the
charact of
UAStr(#
NAT ,
ch #) &
h = the
charact of
UAStr(#
NAT ,
ch #)
. n )
;
:: thesis: h is quasi_total
then
ex
i,
j being
Element of
NAT st
(
n = i &
j = S . i &
h = (j -tuples_on NAT ) --> i )
by A3;
hence
h is
quasi_total
;
:: thesis: verum
end;
A7:
UAStr(# NAT ,ch #) is non-empty
UAStr(# NAT ,ch #) is partial
proof
let n be
Nat;
:: according to UNIALG_1:def 4,
UNIALG_1:def 7 :: thesis: for b1 being Element of bool [:(the carrier of UAStr(# NAT ,ch #) * ),the carrier of UAStr(# NAT ,ch #):] holds
( n nin dom the charact of UAStr(# NAT ,ch #) or not b1 = the charact of UAStr(# NAT ,ch #) . n or b1 is homogeneous )let h be
PartFunc of
(the carrier of UAStr(# NAT ,ch #) * ),the
carrier of
UAStr(#
NAT ,
ch #);
:: thesis: ( n nin dom the charact of UAStr(# NAT ,ch #) or not h = the charact of UAStr(# NAT ,ch #) . n or h is homogeneous )
assume
(
n in dom the
charact of
UAStr(#
NAT ,
ch #) &
h = the
charact of
UAStr(#
NAT ,
ch #)
. n )
;
:: thesis: h is homogeneous
then
ex
i,
j being
Element of
NAT st
(
n = i &
j = S . i &
h = (j -tuples_on NAT ) --> i )
by A3;
hence
h is
homogeneous
;
:: thesis: verum
end;
then reconsider A = UAStr(# NAT ,ch #) as Universal_Algebra by A6, A7;
take
A
; :: thesis: ( the carrier of A = NAT & signature A = S & ( for i, j being Nat st i in dom S & j = S . i holds
the charact of A . i = (j -tuples_on NAT ) --> i ) )
thus
the carrier of A = NAT
; :: thesis: ( signature A = S & ( for i, j being Nat st i in dom S & j = S . i holds
the charact of A . i = (j -tuples_on NAT ) --> i ) )
A9:
len ch = len S
by A3, FINSEQ_3:31;
hence
signature A = S
by A9, UNIALG_1:def 11; :: thesis: for i, j being Nat st i in dom S & j = S . i holds
the charact of A . i = (j -tuples_on NAT ) --> i
consider A being Universal_Algebra;
let i, j be Nat; :: thesis: ( i in dom S & j = S . i implies the charact of A . i = (j -tuples_on NAT ) --> i )
assume
i in dom S
; :: thesis: ( not j = S . i or the charact of A . i = (j -tuples_on NAT ) --> i )
then
ex i1, j being Element of NAT st
( i = i1 & j = S . i1 & ch . i = (j -tuples_on NAT ) --> i1 )
by A3;
hence
( not j = S . i or the charact of A . i = (j -tuples_on NAT ) --> i )
; :: thesis: verum