begin
begin
:: deftheorem PRALG_2:def 1 :
canceled;
:: deftheorem PRALG_2:def 2 :
canceled;
:: deftheorem PRALG_2:def 3 :
canceled;
:: deftheorem PRALG_2:def 4 :
canceled;
:: deftheorem PRALG_2:def 5 :
canceled;
:: deftheorem Def6 defines Commute PRALG_2:def 6 :
for F, b2 being Function holds
( b2 = Commute F iff ( ( for x being set holds
( x in dom b2 iff ex f being Function st
( f in dom F & x = commute f ) ) ) & ( for f being Function st f in dom b2 holds
b2 . f = F . (commute f) ) ) );
theorem
canceled;
theorem
canceled;
theorem
canceled;
theorem
canceled;
theorem
canceled;
theorem
canceled;
theorem
canceled;
theorem
:: deftheorem PRALG_2:def 7 :
canceled;
:: deftheorem Def8 defines Frege PRALG_2:def 8 :
for f being Function-yielding Function
for b2 being ManySortedFunction of product (doms f) holds
( b2 = Frege f iff for g being Function st g in product (doms f) holds
b2 . g = f .. g );
theorem
definition
let I be non
empty set ;
let A,
B be
V2()
ManySortedSet of
I;
let pj be
Element of
I * ;
let rj be
Element of
I;
let f be
Function of
((A #) . pj),
(A . rj);
let g be
Function of
((B #) . pj),
(B . rj);
canceled;func [[:f,g:]] -> Function of
(([|A,B|] #) . pj),
([|A,B|] . rj) means
for
h being
Function st
h in ([|A,B|] #) . pj holds
it . h = [(f . (pr1 h)),(g . (pr2 h))];
existence
ex b1 being Function of (([|A,B|] #) . pj),([|A,B|] . rj) st
for h being Function st h in ([|A,B|] #) . pj holds
b1 . h = [(f . (pr1 h)),(g . (pr2 h))]
uniqueness
for b1, b2 being Function of (([|A,B|] #) . pj),([|A,B|] . rj) st ( for h being Function st h in ([|A,B|] #) . pj holds
b1 . h = [(f . (pr1 h)),(g . (pr2 h))] ) & ( for h being Function st h in ([|A,B|] #) . pj holds
b2 . h = [(f . (pr1 h)),(g . (pr2 h))] ) holds
b1 = b2
end;
:: deftheorem PRALG_2:def 9 :
canceled;
:: deftheorem defines [[: PRALG_2:def 10 :
for I being non empty set
for A, B being V2() ManySortedSet of I
for pj being Element of I *
for rj being Element of I
for f being Function of ((A #) . pj),(A . rj)
for g being Function of ((B #) . pj),(B . rj)
for b8 being Function of (([|A,B|] #) . pj),([|A,B|] . rj) holds
( b8 = [[:f,g:]] iff for h being Function st h in ([|A,B|] #) . pj holds
b8 . h = [(f . (pr1 h)),(g . (pr2 h))] );
definition
let I be non
empty set ;
let J be
set ;
let A,
B be
V2()
ManySortedSet of
I;
let p be
Function of
J,
(I *);
let r be
Function of
J,
I;
let F be
ManySortedFunction of
(A #) * p,
A * r;
let G be
ManySortedFunction of
(B #) * p,
B * r;
func [[:F,G:]] -> ManySortedFunction of
([|A,B|] #) * p,
[|A,B|] * r means
for
j being
set st
j in J holds
for
pj being
Element of
I * for
rj being
Element of
I st
pj = p . j &
rj = r . j holds
for
f being
Function of
((A #) . pj),
(A . rj) for
g being
Function of
((B #) . pj),
(B . rj) st
f = F . j &
g = G . j holds
it . j = [[:f,g:]];
existence
ex b1 being ManySortedFunction of ([|A,B|] #) * p,[|A,B|] * r st
for j being set st j in J holds
for pj being Element of I *
for rj being Element of I st pj = p . j & rj = r . j holds
for f being Function of ((A #) . pj),(A . rj)
for g being Function of ((B #) . pj),(B . rj) st f = F . j & g = G . j holds
b1 . j = [[:f,g:]]
uniqueness
for b1, b2 being ManySortedFunction of ([|A,B|] #) * p,[|A,B|] * r st ( for j being set st j in J holds
for pj being Element of I *
for rj being Element of I st pj = p . j & rj = r . j holds
for f being Function of ((A #) . pj),(A . rj)
for g being Function of ((B #) . pj),(B . rj) st f = F . j & g = G . j holds
b1 . j = [[:f,g:]] ) & ( for j being set st j in J holds
for pj being Element of I *
for rj being Element of I st pj = p . j & rj = r . j holds
for f being Function of ((A #) . pj),(A . rj)
for g being Function of ((B #) . pj),(B . rj) st f = F . j & g = G . j holds
b2 . j = [[:f,g:]] ) holds
b1 = b2
end;
:: deftheorem defines [[: PRALG_2:def 11 :
for I being non empty set
for J being set
for A, B being V2() ManySortedSet of I
for p being Function of J,(I *)
for r being Function of J,I
for F being ManySortedFunction of (A #) * p,A * r
for G being ManySortedFunction of (B #) * p,B * r
for b9 being ManySortedFunction of ([|A,B|] #) * p,[|A,B|] * r holds
( b9 = [[:F,G:]] iff for j being set st j in J holds
for pj being Element of I *
for rj being Element of I st pj = p . j & rj = r . j holds
for f being Function of ((A #) . pj),(A . rj)
for g being Function of ((B #) . pj),(B . rj) st f = F . j & g = G . j holds
b9 . j = [[:f,g:]] );
begin
:: deftheorem Def12 defines MSAlgebra-Family PRALG_2:def 12 :
for I being set
for S being non empty ManySortedSign
for b3 being ManySortedSet of I holds
( b3 is MSAlgebra-Family of I,S iff for i being set st i in I holds
b3 . i is non-empty MSAlgebra of S );
:: deftheorem defines |. PRALG_2:def 13 :
for S being non empty ManySortedSign
for U1 being MSAlgebra of S holds |.U1.| = union (rng the Sorts of U1);
:: deftheorem defines |. PRALG_2:def 14 :
for I being non empty set
for S being non empty ManySortedSign
for A being MSAlgebra-Family of I,S holds |.A.| = union { |.(A . i).| where i is Element of I : verum } ;
begin
theorem Th10:
theorem Th11:
:: deftheorem defines [: PRALG_2:def 15 :
for S being non empty ManySortedSign
for U1, U2 being non-empty MSAlgebra of S holds [:U1,U2:] = MSAlgebra(# [| the Sorts of U1, the Sorts of U2|],[[: the Charact of U1, the Charact of U2:]] #);
:: deftheorem Def16 defines Carrier PRALG_2:def 16 :
for I being set
for S being non empty ManySortedSign
for s being SortSymbol of S
for A being MSAlgebra-Family of I,S
for b5 being ManySortedSet of I holds
( ( I <> {} implies ( b5 = Carrier (A,s) iff for i being set st i in I holds
ex U0 being MSAlgebra of S st
( U0 = A . i & b5 . i = the Sorts of U0 . s ) ) ) & ( not I <> {} implies ( b5 = Carrier (A,s) iff b5 = {} ) ) );
:: deftheorem Def17 defines SORTS PRALG_2:def 17 :
for I being set
for S being non empty ManySortedSign
for A being MSAlgebra-Family of I,S
for b4 being ManySortedSet of the carrier of S holds
( b4 = SORTS A iff for s being SortSymbol of S holds b4 . s = product (Carrier (A,s)) );
:: deftheorem Def18 defines OPER PRALG_2:def 18 :
for I being set
for S being non empty ManySortedSign
for A being MSAlgebra-Family of I,S
for b4 being ManySortedFunction of I holds
( ( I <> {} implies ( b4 = OPER A iff for i being set st i in I holds
ex U0 being MSAlgebra of S st
( U0 = A . i & b4 . i = the Charact of U0 ) ) ) & ( not I <> {} implies ( b4 = OPER A iff b4 = {} ) ) );
theorem Th12:
theorem Th13:
:: deftheorem defines ?. PRALG_2:def 19 :
for I being set
for S being non empty non void ManySortedSign
for A being MSAlgebra-Family of I,S
for o being OperSymbol of S holds A ?. o = (commute (OPER A)) . o;
theorem Th14:
theorem
theorem Th16:
theorem Th17:
theorem Th18:
definition
let I be
set ;
let S be non
empty non
void ManySortedSign ;
let A be
MSAlgebra-Family of
I,
S;
func OPS A -> ManySortedFunction of
((SORTS A) #) * the
Arity of
S,
(SORTS A) * the
ResultSort of
S means
for
o being
OperSymbol of
S holds
it . o = IFEQ (
(the_arity_of o),
{},
(commute (A ?. o)),
(Commute (Frege (A ?. o))))
if I <> {} otherwise verum;
existence
( ( I <> {} implies ex b1 being ManySortedFunction of ((SORTS A) #) * the Arity of S,(SORTS A) * the ResultSort of S st
for o being OperSymbol of S holds b1 . o = IFEQ ((the_arity_of o),{},(commute (A ?. o)),(Commute (Frege (A ?. o)))) ) & ( not I <> {} implies ex b1 being ManySortedFunction of ((SORTS A) #) * the Arity of S,(SORTS A) * the ResultSort of S st verum ) )
uniqueness
for b1, b2 being ManySortedFunction of ((SORTS A) #) * the Arity of S,(SORTS A) * the ResultSort of S holds
( ( I <> {} & ( for o being OperSymbol of S holds b1 . o = IFEQ ((the_arity_of o),{},(commute (A ?. o)),(Commute (Frege (A ?. o)))) ) & ( for o being OperSymbol of S holds b2 . o = IFEQ ((the_arity_of o),{},(commute (A ?. o)),(Commute (Frege (A ?. o)))) ) implies b1 = b2 ) & ( not I <> {} implies b1 = b2 ) )
correctness
consistency
for b1 being ManySortedFunction of ((SORTS A) #) * the Arity of S,(SORTS A) * the ResultSort of S holds verum;
;
end;
:: deftheorem defines OPS PRALG_2:def 20 :
for I being set
for S being non empty non void ManySortedSign
for A being MSAlgebra-Family of I,S
for b4 being ManySortedFunction of ((SORTS A) #) * the Arity of S,(SORTS A) * the ResultSort of S holds
( ( I <> {} implies ( b4 = OPS A iff for o being OperSymbol of S holds b4 . o = IFEQ ((the_arity_of o),{},(commute (A ?. o)),(Commute (Frege (A ?. o)))) ) ) & ( not I <> {} implies ( b4 = OPS A iff verum ) ) );
:: deftheorem defines product PRALG_2:def 21 :
for I being set
for S being non empty non void ManySortedSign
for A being MSAlgebra-Family of I,S holds product A = MSAlgebra(# (SORTS A),(OPS A) #);
theorem
canceled;
theorem